欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

MTK平台LCM打静电分析

程序员文章站 2022-03-27 21:34:00
说明:ESD就是静电。打ESD就是打静电。静电这东西是瞬间电压,特点就是瞬间电压很高,达到10K左右,或更高。而电流是非常小的。因我们的现在芯片都是半导体,半导体对外界电压很敏感的。如果碰到高电压,虽是极小的电流,一样会出问题。这时出问题有的是直接损坏,还有的是暂时损坏,然后会在电压正常时又恢复了。2: lcm_esd_check和lcm_esd_recover就是针对这能自动恢复的时候。他是......

说明:ESD就是静电。打ESD就是打静电。静电这东西是瞬间电压,特点就是瞬间电压很高,达到10K左右,或更高。而电流是非常小的。

因我们的现在芯片都是半导体,半导体对外界电压很敏感的。如果碰到高电压,虽是极小的电流,一样会出问题。这时出问题有的是直接损坏,还有的是暂时损坏,然后会在电压正常时又恢复了。

2: lcm_esd_check和lcm_esd_recover就是针对这能自动恢复的时候。他是启动了一个定时器,启动了一个线程,在规定的时间内去读一下IC的某一个寄存器。如果出现问题了。这个寄存器在受到外界电压的影响就会乱掉,这时读取后的与理论的值是不同的。

比对发现不同时,就会将LCD的初始化重写一次,这样就可以从花屏的状态退出来,达到正常显示。

[FAQ14251] 如何配置LCM ESD Check——读寄存器方式

params->dsi.esd_check_enable = 1; //enable ESD check
params->dsi.customization_esd_check_enable = 1;
params->dsi.lcm_esd_check_table[0].cmd = 0x09;
params->dsi.lcm_esd_check_table[0].count = 1;
params->dsi.lcm_esd_check_table[0].para_list[0] = 0x80;
cmd:是你要读的寄存器
count:是你要读取的寄存器个数
para_list:是你要读取的正确的返回值
如果读到的返回值不是预设的值,显示系统会做恢复处理:重新初始化(将LCD的初始化重写一次)

FAQ13728 MT6735通过读寄存器方式做ESD,客制化需求----多个返回值

打静电问题分析:

1.未打静电情况下,如果出现lcm esd 寄存器读取值返回错误的问题,也请联系屏厂解决。
2.打静电时候,如果出现连续闪屏后无法自动恢复,按powerkey可以恢复(或者静止手机一会,待电荷释放后,按power可以正常亮屏),出现这种现象的原因是:连续recovery 5次LCM依然无法恢复正常,esd thread被停止。原因是由于LCM积累电荷太多导致。
3. 如果出现打静电导致,系统hang住或死机,可以提交e-service,交由MTK处理。
4.在打静电实验中,会概率出现恢复缓慢的问题,本文介绍所花费时间的构成,以及优化建议

打静电后概率出现LCM恢复缓慢的问题,主要耗费时间分解为

  1. ESD检测线程每2s工作一次
  2. 通过读取LCM寄存器检测ESD,DSI读取超时为2s
  3. 读取超时后,重新初始化,LCM init时间根据不同DDIC而不同

根据以上时间分解

  1. ESD检测线程唤醒时间不建议修改,过于频繁的唤醒ESD线程,会增加系统负荷,2s是内部考量后较为合理的时间选择,建议保持
    在primary_display.c的primary_display_esd_check_worker_kthread函数中有设置msleep(2000);
  2. ESD读取超时时间,可以适量缩短为500ms,具体修改方法,
  • 对于Turnkey方案,alps/mediatek/platform/mt65xx/kernel/drivers/video/dsi_drv.c中
  • 对于AOSP方案,alps/kernel/drivers/misc/mediatek/video/mt65xx/dsi_drv.c中
    接口DSI_dcs_read_lcm_reg_v2,修改WAIT_TIMEOUT = HZ/2;
  1. LCM初始化的时间部分,请咨询DDIC FAE,尽可能缩短初始化时间

本文地址:https://blog.csdn.net/qq_30624591/article/details/85890289

相关标签: MTK系列驱动开发