高通LCD的pwm背光驱动

本文探讨了在msm8953 LCD快速亮灭时出现背光概率性不灭的问题,分析了高通PWM背光驱动的工作原理。问题源于在控制过程中,pwm管脚状态异常。讲解了MPP(Multi Purpose Pin)的定义和功能,并介绍了LCD背光控制流程,涉及PWM占空比调整、背光驱动芯片LM3630A以及背光控制的软件调用路径。通过修改特定函数,解决了背光在快速切换时的保持亮屏问题。
摘要由CSDN通过智能技术生成

发生异常的现象:

msm8953 lcd在快速亮灭的情况下背光概率性休眠不灭;测量高通pwm,发现正常的时候pwm的管脚LCM_BL_PWM为低电平,失败的时候为高电平;

根据原理图:
811006-20180612150932701-1981328986.png

mpp是什么?
mpp是基于电源pmic的管脚,也叫做多功能管脚;MPP的全称是Multi Purpose Pin;可以做电源、gpio、ADC、PWM、SINK等功能。

背光的控制方式:

  1. LCD控制IC支持动态背光控制功能(CABC)通过解析图像的直方图动态改变输出PWM的占空比从而动态调节LCD的背光,在不改变图像显示效果的情况下降低功耗,PMIC根据CABC的占空比控制背光输出电压;
  2. 背光控制部分不经过PMIC而是通过一颗单独的带有boost转换功能的LED驱动器如LM3630A,该芯片通过PWM调节亮度。

我们使用的就是第一种方式;

通过soc->pmi8950(内部pwm)->mpp3的方式去控制。

lcd背光控制调用流程:

首先,我们用的是mipi接口,所以lcd显示驱动是在mdss_dsi.c中,pwm驱动控制是在pwm-qpnp.c文件中(kernel\msm-3.18\drivers\pwm);

mdss_dsi.c文件中,具体在哪里调用到背光函数呢?

根据打印log,可以知道背光控制函数mdss_dsi_panel_bl_ctrl

mdss_dsi_panel_bl_ctrl这个函数是在mdss_dsi_panel.c文件中;

调用顺序如下:
mdss_dsi_ctrl_probe -- >
  mdss_dsi_config_panel -- >
    mdss_dsi_panel_init -- >
     ctrl_pdata->panel_data.set_backlight = mdss_dsi_panel_bl_ctrl;

根据mdss_dsi_panel_bl_ctrl函数:

static void mdss_dsi_panel_bl_ctrl(struct mdss_panel_data *pdata,
                            u32 bl_level)
{
    ......

    /*
     * Some backlight controllers specify a minimum duty cycle
     * for the backlight brightness. If the brightness is less
     * than it, the controller can malfunction.
     */

    if ((bl_level < pdata-&g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值