Firefly开源社区

标题: 关于RK3288 pwm1 申请失败的问题 [打印本页]

作者: 长的    时间: 2016-8-30 11:22
标题: 关于RK3288 pwm1 申请失败的问题
这几天在做pwm相关的驱动,RK3288只预留了pwm1这个接口,按照官网wiki上的教程,pwm1申请总是失败,论坛里也没有一个有效的解决方案.没办法,自己研究了一下,主要发现了以下几点:
(1)wiki上说要修改DTS文件,但还有一个地方没有提到,在firefly-rk3288.dts中也需要将pwm1 设置为 okay,如下:
&pwm0 {
        interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
        status = "okay";
};

&pwm1 {
    status = "okay";
};

作者: 长的    时间: 2016-8-30 11:23
(2)但是这样修改以后还是申请失败,然后发现在DTS中有如下内容:
pwm_regulator {
        compatible = "rockchip_pwm_regulator";
        pwms = <&pwm1 0 2000>;
        rockchip,pwm_id= <1>;
        rockchip,pwm_voltage_map= <925000 950000 975000 1000000 1025000 1050000 1075000 1100000 1125000 1150000 1175000 1200000 1225000 1250000 1275000 1300000 1325000 1350000 1375000 1400000>;
        rockchip,pwm_voltage= <1100000>;
        rockchip,pwm_min_voltage= <925000>;
        rockchip,pwm_max_voltage= <1400000>;
        rockchip,pwm_suspend_voltage= <950000>;
        rockchip,pwm_coefficient= <475>;
        regulators {
            #address-cells = <1>;
            #size-cells = <0>;
            pwm_reg0: regulator@0 {
                regulator-compatible = "pwm_dcdc1";
                regulator-name= "vdd_logic";
                regulator-min-microvolt = <925000>;
                regulator-max-microvolt = <1400000>;
                regulator-always-on;
                regulator-boot-on;
            };
        };
    };


作者: 长的    时间: 2016-8-30 11:25
这里也使用了pwm1,对照compatible = "rockchip_pwm_regulator"的名字,在driver下找到了对应的驱动程序,然后在menuconfig中:

Screenshot from 2016-08-30 11:11:25.png (129.17 KB, 下载次数: 735)

Screenshot from 2016-08-30 11:11:25.png

作者: 长的    时间: 2016-8-30 11:29
关闭上图的驱动,然后在申请pwm1,这次就成功了(pwm1对应的通道为0,这个不知道为什么).
然后上图代表的驱动看名字是控制电源芯片的,但是开发板上有对应的硬件设备吗?哪位能给个解答阿?
作者: zzj    时间: 2016-8-30 20:17
我把两个都改成okay后,也把menuconfig里面的模块去掉了,用的驱动是官网一模一样的,为什么还是申请失败。。。。
请问你改完okay后有再make内核吗?你的程序init函数能不能给我看一下。。谢谢啊
作者: zzj    时间: 2016-8-30 20:19
配置 PWM 内核驱动
PWM 驱动位于文件 kernel/drivers/pwm/pwm-rockchip.c。

修改该文件的如下代码:

static const struct of_device_id rk_pwm_of_match[] = {
    { .compatible = "rockchip,pwm",          .data = &rk_pwm_data_v1,},
    { .compatible =  "rockchip,rk-pwm",    .data = &rk_pwm_data_v2,},
    { .compatible =  "rockchip,vop-pwm",  .data = &rk_pwm_data_v3,},
    { }
};
把之前步骤中的 compatible = "rockchip,rk-pwm" 添加到如上代码中。


还有这一步是什么意思
作者: 长的    时间: 2016-8-31 08:59
zzj 发表于 2016-8-30 20:19
配置 PWM 内核驱动
PWM 驱动位于文件 kernel/drivers/pwm/pwm-rockchip.c。

内核肯定要重新编啊,pwm-rockchip.c的内容基本不用动,默认就是修改好的,我用的android5.1的固件,可能固件不一样?
作者: 长的    时间: 2016-8-31 09:02
还有申请的通道是0, 0~3你都试试

作者: zzj    时间: 2016-9-1 11:24
长的 发表于 2016-8-31 09:02
还有申请的通道是0, 0~3你都试试

:'(我用的是ubuntu
作者: 奔跑    时间: 2016-12-27 16:33
能否分享一下你的代码
作者: david11    时间: 2017-2-16 09:50
能否分享一下你的代码
作者: 新新    时间: 2019-5-8 17:31
长的 发表于 2016-8-30 11:25
这里也使用了pwm1,对照compatible = "rockchip_pwm_regulator"的名字,在driver下找到了对应的驱动程序,然后 ...

我最近也在用,我是使用字符设备驱动类型来操作的,但是为什么我报的是这个错误

Z@2XPNKCU@(]OO)EEBN6YUG.png (36.37 KB, 下载次数: 638)

Z@2XPNKCU@(]OO)EEBN6YUG.png





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1