[MTK] [LCM]ili9806c和ili9805c开启ESD机制使用过程概率性出现上方闪线

本文介绍了解决ILI9806C及ILI9805C在启用ESD机制时出现的闪线问题。通过分析问题原因并提供具体的代码修改方案,确保了显示效果的稳定性和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

[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);  
        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();
……
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值