Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

关于RK3288 pwm1 申请失败的问题

42

积分

0

威望

0

贡献

技术小白

积分
42

关于RK3288 pwm1 申请失败的问题

发表于 2016-8-30 11:22:05      浏览:18246 | 回复:11        打印      只看该作者   [复制链接] 楼主
这几天在做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";
};
回复

使用道具 举报

42

积分

0

威望

0

贡献

技术小白

积分
42
发表于 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;
            };
        };
    };

回复

使用道具 举报

42

积分

0

威望

0

贡献

技术小白

积分
42
发表于 2016-8-30 11:25:53        只看该作者  板凳
这里也使用了pwm1,对照compatible = "rockchip_pwm_regulator"的名字,在driver下找到了对应的驱动程序,然后在menuconfig中:

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

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

使用道具 举报

42

积分

0

威望

0

贡献

技术小白

积分
42
发表于 2016-8-30 11:29:18        只看该作者  地板
关闭上图的驱动,然后在申请pwm1,这次就成功了(pwm1对应的通道为0,这个不知道为什么).
然后上图代表的驱动看名字是控制电源芯片的,但是开发板上有对应的硬件设备吗?哪位能给个解答阿?
回复

使用道具 举报

143

积分

0

威望

0

贡献

技术小白

积分
143
发表于 2016-8-30 20:17:26        只看该作者  5#
我把两个都改成okay后,也把menuconfig里面的模块去掉了,用的驱动是官网一模一样的,为什么还是申请失败。。。。
请问你改完okay后有再make内核吗?你的程序init函数能不能给我看一下。。谢谢啊
回复

使用道具 举报

143

积分

0

威望

0

贡献

技术小白

积分
143
发表于 2016-8-30 20:19:55        只看该作者  6#
配置 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" 添加到如上代码中。


还有这一步是什么意思
回复

使用道具 举报

42

积分

0

威望

0

贡献

技术小白

积分
42
发表于 2016-8-31 08:59:45        只看该作者  7#
zzj 发表于 2016-8-30 20:19
配置 PWM 内核驱动
PWM 驱动位于文件 kernel/drivers/pwm/pwm-rockchip.c。

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

使用道具 举报

42

积分

0

威望

0

贡献

技术小白

积分
42
发表于 2016-8-31 09:02:53        只看该作者  8#
还有申请的通道是0, 0~3你都试试
回复

使用道具 举报

143

积分

0

威望

0

贡献

技术小白

积分
143
发表于 2016-9-1 11:24:06        只看该作者  9#
长的 发表于 2016-8-31 09:02
还有申请的通道是0, 0~3你都试试

:'(我用的是ubuntu
回复

使用道具 举报

109

积分

0

威望

0

贡献

技术小白

积分
109
发表于 2016-12-27 16:33:01        只看该作者  10#
能否分享一下你的代码
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表