长的 发表于 2016-8-30 11:22:05

关于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:11

(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:53

这里也使用了pwm1,对照compatible = "rockchip_pwm_regulator"的名字,在driver下找到了对应的驱动程序,然后在menuconfig中:

长的 发表于 2016-8-30 11:29:18

关闭上图的驱动,然后在申请pwm1,这次就成功了(pwm1对应的通道为0,这个不知道为什么).
然后上图代表的驱动看名字是控制电源芯片的,但是开发板上有对应的硬件设备吗?哪位能给个解答阿?

zzj 发表于 2016-8-30 20:17:26

我把两个都改成okay后,也把menuconfig里面的模块去掉了,用的驱动是官网一模一样的,为什么还是申请失败。。。。
请问你改完okay后有再make内核吗?你的程序init函数能不能给我看一下。。谢谢啊

zzj 发表于 2016-8-30 20:19:55

配置 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:45

zzj 发表于 2016-8-30 20:19
配置 PWM 内核驱动
PWM 驱动位于文件 kernel/drivers/pwm/pwm-rockchip.c。



内核肯定要重新编啊,pwm-rockchip.c的内容基本不用动,默认就是修改好的,我用的android5.1的固件,可能固件不一样?

长的 发表于 2016-8-31 09:02:53

还有申请的通道是0, 0~3你都试试

zzj 发表于 2016-9-1 11:24:06

长的 发表于 2016-8-31 09:02
还有申请的通道是0, 0~3你都试试

:'(我用的是ubuntu

奔跑 发表于 2016-12-27 16:33:01

能否分享一下你的代码
页: [1] 2
查看完整版本: 关于RK3288 pwm1 申请失败的问题