现象:
出问题的是xxx项目使用的是芯片为ili9488,模组为KGM1182B0-1C Model的LCM,在休眠唤醒的时候容易闪白屏,然后恢复正常使用。
修改kernel/drivers/video/msm/mdss/mdss_dsi_panel.c 中,延时背光点亮的时间:
唤醒闪白屏的问题得到有效的解决,但是机器在使用过程中又出现了新的问题:休眠唤醒的时候有的时候会出现长白的情况。
解决过程
最初怀疑是由于屏本身的问题造成的,修改背光延时问题并没有的到彻底解决。尝试了修改porch参数,reset时序等都没有有效的解决。就找来FAE过来分析,FAE使用示波器测量了背光和mipi数据在唤醒那一刻出现的时间,发现在白屏出现的时候,波形大概是这样的:
该波形说明了,在mipi数据送到LCM,mipi(1lane)进入video模式之前背光已经拉高了,造成显示屏没有数据(此时显示屏表现为白色),出现一瞬间的白色闪屏现象。
注:黄色线为背光线,绿色线为mipi线。
那么问题来了,后面出现的休眠唤醒的时候有的时候会出现长白的情况是咋回事呢?
再一次长白复现的时候,测量mipi信号等,发现没有信号,而且系统处于休眠状态,所以长白是由于休眠时候造成的,测量背光MPP4 PWM引脚电压居然是1.95V
所以基本可以推断:背光在休眠的时候没有关闭是由于背光延时造成的!
所以在延时上加了一个限定条件,只有在唤醒的时候背光才会延时:
问题解决。
延伸:在测试白屏是否来自于上层的时候可以使用total control进行同步显示查看。