关于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";
};
(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;
};
};
};
这里也使用了pwm1,对照compatible = "rockchip_pwm_regulator"的名字,在driver下找到了对应的驱动程序,然后在menuconfig中: 关闭上图的驱动,然后在申请pwm1,这次就成功了(pwm1对应的通道为0,这个不知道为什么).
然后上图代表的驱动看名字是控制电源芯片的,但是开发板上有对应的硬件设备吗?哪位能给个解答阿? 我把两个都改成okay后,也把menuconfig里面的模块去掉了,用的驱动是官网一模一样的,为什么还是申请失败。。。。
请问你改完okay后有再make内核吗?你的程序init函数能不能给我看一下。。谢谢啊 配置 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" 添加到如上代码中。
还有这一步是什么意思 zzj 发表于 2016-8-30 20:19
配置 PWM 内核驱动
PWM 驱动位于文件 kernel/drivers/pwm/pwm-rockchip.c。
内核肯定要重新编啊,pwm-rockchip.c的内容基本不用动,默认就是修改好的,我用的android5.1的固件,可能固件不一样? 还有申请的通道是0, 0~3你都试试
长的 发表于 2016-8-31 09:02
还有申请的通道是0, 0~3你都试试
:'(我用的是ubuntu 能否分享一下你的代码
页:
[1]
2