高通PWM调试笔记

本笔记基于SDM660平台记录

一、PWM信号电平转换不能用普通三极管或者二极管,需要用高速三极管或者分压

否则出来的信号可能因为PN结的电容效应而变得不是方波,比如如下图:

蓝色是4V的PWM信号,黄色是通过三极管反向输出的波形,显然因为三极管的电容效应,无法得到转换后的波形。

二、改变PWM的高电平电压

路径:kernel\msm-4.4\arch\arm64\boot\dts\qcom\sdm660-mtp.dtsi
gpio@c500->qcom,vin-sel = <0>; 0-4V 1-1.8V

三、屏背光调用pwm过程

mdss_dsi_config_panel()->mdss_dsi_panel_init()->mdss_dsi_panel_bl_ctrl()->mdss_dsi_panel_bklt_pwm()


四、屏背光读取pwm设备树过程

mdss_dsi_ctrl_probe()->mdss_panel_parse_bl_settings()

五、屏背光注册pwm过程

mdss_dsi_ctrl_probe()->dsi_panel_device_register()->mdss_dsi_panel_pwm_cfg()
(注意这里并没有跑到pwm_request(),而是通过PMIC进行通信,不需要pwm_request)

六、如果想自己实现驱动调用PWM

比如用pm660l_pwm_4 ;

6.1. 设备树:

自己的驱动的设备树添加pwms = <&pm660l_pwm_4 0 0>;

另外:

参考kernel\msm-4.4\Documentation\devicetree\bindings\pwm\pwm-qpnp.txt:

设备树添加如下:

&pm660l_pwm_4 {

status = "okay";

qcom,pwm {
    label = "pwm";

}

6.2. 驱动:

获得设备树信息:

struct pwm_device* pwm;
pwm = of_pwm_get(np, NULL);

然后通过

pwm_config()函数即可调用。

具体细节可参考屏驱动。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值