[DESCRIPTION]
MT6735/MT6753/MT6580通过读寄存器方式做ESD,可能会碰到一些问题,可以参考这篇FAQ来解决。同时可以知道如何去Debug。
[SOLUTION]
MT6735/MT6753/MT6580平台通过读寄存器方式做ESD,只需要在lcm driver里面
的lcm_get_params函数中按照如下的方式进行客制化配置就能够正常的run了。
1、有部分客户在lcm_get_params函数中配置了这些变量出现了开机重启的问题,这是由于这部分客户拿到的SW
版本比较的早,有BUG需要fix,请到PMS上先申请PATCH,Patch的ID是01958062
2、系统能够正常开机以后,那么怎么看ESD的流程有没有正常的run起来呢?相关的代码在ddp_dsi.c这支文件的ddp_dsi_build_cmdq函数中,更加详细的可以参考我之前写的 FAQ13728MT6735通过读寄存器做ESD,客制化需求
如下图所示,得到寄存器以后做比较的最核心的代码就在这里,可以看到我黄色mark出来的那几条关键性log,建议大家把这个DISPDBG改为printk,这样可能更加清晰。
可以先不用去实际打ESD,先抓一份uartlog或者Mobilelog看一下,是否每2秒打印一次这种log出来。
类似于下面这样。
[ 10.458115]<0>.(0)[76:display_esd_che][DSI]enter cmp read_data0 byte0=0x1c byte1=0x4 byte2=0x0 byte3=0x33
[ 10.458121]<0>.(0)[76:display_esd_che][DSI]enter cmp check_table cmd=0x6,count=0x0,para_list[0]=0x0,para_list[1]=0x0
[ 10.458126]<0>.(0)[76:display_esd_che][DSI]enter cmp DSI+0x200=0x43700
[ 10.458132]<0>.(0)[76:display_esd_che][DSI]enter cmp DSI+0x204=0x60604
[ 10.458137]<0>.(0)[76:display_esd_che][DSI]enter cmp DSI+0x60=0x2
[ 10.458142]<0>.(0)[76:display_esd_che][DSI]enter cmp DSI+0x74=0x3300041c
[ 10.458147]<0>.(0)[76:display_esd_che][DSI]enter cmp DSI+0x78=0xa40
[ 10.458152]<0>.(0)[76:display_esd_che][DSI]enter cmp DSI+0x0c=0x80000700
[ 10.458157]<0>.(0)[76:display_esd_che][DISPCHECK]DSI read packet_type is 0x1c
[ 10.458162]<0>.(0)[76:display_esd_che][DISPCHECK]DSI read long packet data exceeds buffer size: 0
[ 10.458167]<0>.(0)[76:display_esd_che][DISPCHECK]DSI read long packet size: 0
[ 10.458258]<0>.(0)[76:display_esd_che][DISPCHECK][ESD]ESD check end
重点可以关注下这条log,这条log里面打印出来的是直接从lcm端读出来的数据。
[DSI]enter cmp DSI+0x74=0x3300041c
3、如果出现那种打静电,寄存器也check不到的黑屏的情况的话。可以尝试到PMS上申请Patch
ALPS02084356,这是模拟clk lane进LP11,这也是我们官方给出的解法。
4、如果还有问题,就需要联系vendor和MTK共同处理了。