[MTK] [LCM]ili9806c和ili9805c开启ESD机制使用过程概率性出现上方闪线
来源:互联网 发布:7k7k皮卡堂盗号软件 编辑:程序博客网 时间:2024/05/30 05:27
[DESCRIPTION]
ili9806c和ili9805c在开启ESD机制使用过程中概率性出现闪线,闪线颜色和当前屏幕最下方颜色类似,而关闭ESD,则不会复现问题
[SOLUTION]
该问题原因是ILITEK这两颗video mode IC在停掉数据后会内部启count报Hsync,再开启ESD机制后,read完寄存器后,其内部Hsync有可能会撞到第一次的Vsync,这样就会导致HS的第一条line异常,采用最后一条line去补到第一条line。
可以如下修改:
mediatek\platform\mt6572\kernel\drivers\video\dsi_drv.c
添加如下红色部分code
DSI_STATUS DSI_StartTransfer(bool isMutexLocked)
{
……
DSI_WaitForEngineNotBusy();
#if 1 //3 add by MTK haitao for send Hsync package
while(DSI_REG->DSI_INTSTA.BUSY);
{
……
DSI_WaitForEngineNotBusy();
#if 1 //3 add by MTK haitao for send Hsync package
while(DSI_REG->DSI_INTSTA.BUSY);
OUTREG32(&DSI_REG->DSI_INTSTA, 0x0);
DSI_clk_HS_mode(1);
DSI_BackUpCmdQ();
DSI_SetMode(CMD_MODE);
UTREGBIT(DSI_INT_ENABLE_REG,DSI_REG->DSI_INTEN,RD_RDY,0);
UTREGBIT(DSI_INT_ENABLE_REG,DSI_REG->DSI_INTEN,CMD_DONE,0);
OUTREG32(&DSI_CMDQ_REG->data[0],0x00002100);
OUTREG32(&DSI_REG->DSI_CMDQ_SIZE, 1);
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,0);
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,1);
while(DSI_REG->DSI_INTSTA.CMD_DONE == 0);
OUTREGBIT(DSI_INT_STATUS_REG,DSI_REG->DSI_INTSTA,CMD_DONE,0);
UDELAY(20);
OUTREG32(&DSI_CMDQ_REG->data[0],0x00003100);
OUTREG32(&DSI_REG->DSI_CMDQ_SIZE, 1);
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,0);
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,1);
while(DSI_REG->DSI_INTSTA.CMD_DONE == 0);
OUTREGBIT(DSI_INT_STATUS_REG,DSI_REG->DSI_INTSTA,CMD_DONE,0);
OUTREGBIT(DSI_INT_ENABLE_REG,DSI_REG->DSI_INTEN,RD_RDY,1);
OUTREGBIT(DSI_INT_ENABLE_REG,DSI_REG->DSI_INTEN,CMD_DONE,1);
DSI_RestoreCmdQ();
DSI_SetMode(lcm_params->dsi.mode);
DSI_clk_HS_mode(1);
#endif
// To trigger frame update.
DSI_Start();
……
}
DSI_clk_HS_mode(1);
DSI_BackUpCmdQ();
DSI_SetMode(CMD_MODE);
UTREGBIT(DSI_INT_ENABLE_REG,DSI_REG->DSI_INTEN,RD_RDY,0);
UTREGBIT(DSI_INT_ENABLE_REG,DSI_REG->DSI_INTEN,CMD_DONE,0);
OUTREG32(&DSI_CMDQ_REG->data[0],0x00002100);
OUTREG32(&DSI_REG->DSI_CMDQ_SIZE, 1);
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,0);
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,1);
while(DSI_REG->DSI_INTSTA.CMD_DONE == 0);
OUTREGBIT(DSI_INT_STATUS_REG,DSI_REG->DSI_INTSTA,CMD_DONE,0);
UDELAY(20);
OUTREG32(&DSI_CMDQ_REG->data[0],0x00003100);
OUTREG32(&DSI_REG->DSI_CMDQ_SIZE, 1);
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,0);
OUTREGBIT(DSI_START_REG,DSI_REG->DSI_START,DSI_START,1);
while(DSI_REG->DSI_INTSTA.CMD_DONE == 0);
OUTREGBIT(DSI_INT_STATUS_REG,DSI_REG->DSI_INTSTA,CMD_DONE,0);
OUTREGBIT(DSI_INT_ENABLE_REG,DSI_REG->DSI_INTEN,RD_RDY,1);
OUTREGBIT(DSI_INT_ENABLE_REG,DSI_REG->DSI_INTEN,CMD_DONE,1);
DSI_RestoreCmdQ();
DSI_SetMode(lcm_params->dsi.mode);
DSI_clk_HS_mode(1);
#endif
// To trigger frame update.
DSI_Start();
……
}
- [MTK] [LCM]ili9806c和ili9805c开启ESD机制使用过程概率性出现上方闪线
- MTK的lcm背光流程和客制化
- [MTK] MT6589 DSI Video Mode的屏,加入ESD机制后每隔2S会闪一下屏(情形一)
- MTK平台ATA测试LCM出现Not Support
- [lcm] MTK平台移植屏幕lcd过程要点
- mtk android lcm调试
- mtk android lcm调试
- MTK Android Driver :lcm
- MTK Android Driver :lcm
- MTK Android Driver :lcm
- mtk android lcm调试
- MTK android lcm调试
- MTK Android Driver :lcm
- MTK LCM驱动移植
- mtk lcm调试
- mtk lcm驱动添加
- mtk lcm驱动流程
- MTK lcm 背光流程
- 在Eclipse中查看第三方源码(转)
- GIS库基础知识
- 在单元测试里测试添加数据到数据库
- [opencv]有关矩阵以及iplimage
- Redis云存储服务
- [MTK] [LCM]ili9806c和ili9805c开启ESD机制使用过程概率性出现上方闪线
- 使用openssl库EVP编程计算md5值
- Android BroadcastReceiver
- ORACLE RMAN异机异目录恢复
- IOS之支持高分辨率的显示屏(译文)
- 特殊dllcom组件调用方法
- linux命令1
- POJ题目分类
- CodeFirst进行数据迁移之添加字段