[MTK] MT6589 DSI Video Mode的屏,加入ESD机制后每隔2S会闪一下屏(情形一)
来源:互联网 发布:小猪cms最新源码下载 编辑:程序博客网 时间:2024/05/22 15:09
[DESCRIPTION]
MT6589 DSI Video Mode的屏,加入ESD机制后每隔2S会闪一下屏,但是把MIPI clock改为
MT6589 DSI Video Mode的屏,加入ESD机制后每隔2S会闪一下屏,但是把MIPI clock改为
continuous clock则不会闪屏。 则属于这种情况,可以按照以下方法进行修改。
以SSD2075为例:
Root cause: SSD2075 IC内的电压DVDDH由MIPI clock generate形成。
MIPI clock一旦停掉,DVDDH就会drop,理论上就会有闪屏。 但是如果MIPI clock停掉的时间较短
的话,这个闪屏是不会被人眼所察觉到。
[SOLUTION]
解决思路:当读寄存器的时候,让MIPI clock保持HS 状态。
读完之后再把MIPI clock切到LP的bit 位置位
具体修改方法如下:
在alps/mediatek/kernel/drivers/video/disp_drv.c中
(1) 添加下面一行定义
static PDSI_REGS const DSI_REG = (PDSI_REGS)(DSI_BASE); //add by mtk
(1) 添加下面一行定义
static PDSI_REGS const DSI_REG = (PDSI_REGS)(DSI_BASE); //add by mtk
(2) 在DISP_ESDCheck()函数中添加几行,红色标记
BOOL DISP_EsdCheck(void)
{
BOOL result = FALSE;
DSI_TXRX_CTRL_REG tmp_reg; //add by mtk
tmp_reg=DSI_REG->DSI_TXRX_CTRL; //add by mtk
tmp_reg.HSTX_CKLP_EN = 0; //add by mtk
DSI_clk_HS_mode(1); //add by mtk
disp_drv_init_context();
MMProfileLogEx(MTKFB_MMP_Events.EsdCheck, MMProfileFlagPulse, 0x10, 0);
if(lcm_drv->esd_check == NULL && disp_drv->esd_check == NULL)
{
return FALSE;
}
if (down_interruptible(&sem_update_screen)) {
printk("ERROR: Can't get sem_update_screen in DISP_EsdCheck()\n");
return FALSE;
}
MMProfileLogEx(MTKFB_MMP_Events.EsdCheck, MMProfileFlagPulse, 0x11, 0);
if(is_lcm_in_suspend_mode)
{
up(&sem_update_screen);
return FALSE;
}
if(disp_drv->esd_check)
result |= disp_drv->esd_check();
MMProfileLogEx(MTKFB_MMP_Events.EsdCheck, MMProfileFlagPulse, 0x12, 0);
#ifndef MT65XX_NEW_DISP
LCD_CHECK_RET(LCD_WaitForNotBusy());
if(lcm_params->type==LCM_TYPE_DSI)
DSI_CHECK_RET(DSI_WaitForNotBusy());
if(lcm_drv->esd_check)
{
mutex_lock(&LcmCmdMutex);
result |= lcm_drv->esd_check();
mutex_unlock(&LcmCmdMutex);
}
#endif
up(&sem_update_screen);
tmp_reg.HSTX_CKLP_EN = 1; //add by mtk
return result;
}
{
BOOL result = FALSE;
DSI_TXRX_CTRL_REG tmp_reg; //add by mtk
tmp_reg=DSI_REG->DSI_TXRX_CTRL; //add by mtk
tmp_reg.HSTX_CKLP_EN = 0; //add by mtk
DSI_clk_HS_mode(1); //add by mtk
disp_drv_init_context();
MMProfileLogEx(MTKFB_MMP_Events.EsdCheck, MMProfileFlagPulse, 0x10, 0);
if(lcm_drv->esd_check == NULL && disp_drv->esd_check == NULL)
{
return FALSE;
}
if (down_interruptible(&sem_update_screen)) {
printk("ERROR: Can't get sem_update_screen in DISP_EsdCheck()\n");
return FALSE;
}
MMProfileLogEx(MTKFB_MMP_Events.EsdCheck, MMProfileFlagPulse, 0x11, 0);
if(is_lcm_in_suspend_mode)
{
up(&sem_update_screen);
return FALSE;
}
if(disp_drv->esd_check)
result |= disp_drv->esd_check();
MMProfileLogEx(MTKFB_MMP_Events.EsdCheck, MMProfileFlagPulse, 0x12, 0);
#ifndef MT65XX_NEW_DISP
LCD_CHECK_RET(LCD_WaitForNotBusy());
if(lcm_params->type==LCM_TYPE_DSI)
DSI_CHECK_RET(DSI_WaitForNotBusy());
if(lcm_drv->esd_check)
{
mutex_lock(&LcmCmdMutex);
result |= lcm_drv->esd_check();
mutex_unlock(&LcmCmdMutex);
}
#endif
up(&sem_update_screen);
tmp_reg.HSTX_CKLP_EN = 1; //add by mtk
return result;
}
- [MTK] MT6589 DSI Video Mode的屏,加入ESD机制后每隔2S会闪一下屏(情形一)
- MIPI-DSI 三种 Video Mode 理解
- MIPI-DSI 三种 Video Mode 理解
- MIPI-DSI 三种 Video Mode 理解
- MIPI-DSI 三种 Video Mode 理解
- MIPI-DSI 三种 Video Mode 理解
- MIPI-DSI 三种 Video Mode 理解
- MIPI-DSI 三种 Video Mode 理解
- MIPI-DSI 三种 Video Mode 理解
- MIPI-DSI 三种 Video Mode 理解
- [MTK] [LCM]ili9806c和ili9805c开启ESD机制使用过程概率性出现上方闪线
- MTK Video FAq 2
- linux for qq扫描硬盘,每隔一秒 硬盘灯闪一下,请使用的朋友注意了。
- 记录一下今天遇到的奇怪DSI
- 系统级ESD保护浅谈(一)
- MT6577, MT6589, MTK linux kernel源代码
- video mode & command mode
- Drawable加入动画机制(一)
- JAVA正则表达式 Pattern和Matcher
- 30大最有影响力的Web设计与开发英文博客
- Modules you should know in Python Libray
- JAVA中使用JSON进行数据传递
- rtcp rtp by rtsp open on ffmpeg
- [MTK] MT6589 DSI Video Mode的屏,加入ESD机制后每隔2S会闪一下屏(情形一)
- SQLite数据库中的SQL语句
- less
- java 中 synchronized (class) 是什么意思
- [编程题]用递归求数组最大值的位置(索引,下标)
- 联通超级战舰W910 Root 后不能 上网 解决方案
- ios学习之 UIButton详解
- 理解 Android 上的安全性
- HTML5入门轻松解析