diff options
author | m00389129 <m00389129@notesmail.huawei.com> | 2017-09-26 19:12:20 +0800 |
---|---|---|
committer | y00230200 <yanghongliang.yang@huawei.com> | 2017-09-26 19:40:09 +0800 |
commit | 22c580f7fb449994cf60024c9fde9e54e0592f16 (patch) | |
tree | 9f49537d0e755a4e44c34fcf18c7020af27c5998 | |
parent | 69972d72f9f89a632a776f44d790bf54e19cf5b0 (diff) |
lcd: fix bug,modify reliability plan when the screen can't be turned back to unblank modeandroid-wear-7.1.1_r0.42
1.read 0x0d register when the panel was set to unblank mode,if the mark bit was set to all pixel off,set 0x13 cmd to set panel to normal mode.
Signed-off-by: m00389129 <m00389129@notesmail.huawei.com>
-rwxr-xr-x | drivers/video/msm/mdss/mdp3_ctrl.c | 2 | ||||
-rwxr-xr-x | drivers/video/msm/mdss/mdss_fb.c | 36 |
2 files changed, 18 insertions, 20 deletions
diff --git a/drivers/video/msm/mdss/mdp3_ctrl.c b/drivers/video/msm/mdss/mdp3_ctrl.c index 55f6a84c09f6..67f1c7b9e41f 100755 --- a/drivers/video/msm/mdss/mdp3_ctrl.c +++ b/drivers/video/msm/mdss/mdp3_ctrl.c @@ -47,7 +47,6 @@ static int mdp3_ctrl_get_pack_pattern(u32 imgType); int mdp3_wait_for_dma_done(struct mdp3_session_data *session); -struct msm_fb_data_type *g_mfd = NULL; u32 mdp_lut_inverse16[MDP_LUT_SIZE] = { 0, 65536, 32768, 21845, 16384, 13107, 10923, 9362, 8192, 7282, 6554, 5958, 5461, 5041, 4681, 4369, 4096, 3855, 3641, 3449, 3277, 3121, 2979, 2849, 2731, @@ -2752,7 +2751,6 @@ int mdp3_ctrl_init(struct msm_fb_data_type *mfd) u32 intf_type = MDP3_DMA_OUTPUT_SEL_DSI_VIDEO; int rc; int splash_mismatch = 0; - g_mfd = mfd; pr_info("mdp3_ctrl_init\n"); rc = mdp3_parse_dt_splash(mfd); if (rc) diff --git a/drivers/video/msm/mdss/mdss_fb.c b/drivers/video/msm/mdss/mdss_fb.c index 63a4f8ee54a4..4ab2d5223aa6 100755 --- a/drivers/video/msm/mdss/mdss_fb.c +++ b/drivers/video/msm/mdss/mdss_fb.c @@ -81,7 +81,7 @@ static struct fb_info *fbi_list[MAX_FBI_LIST]; static int fbi_list_index; -extern struct msm_fb_data_type *g_mfd; + static void *panel_lk_addr = NULL; static u32 mdss_fb_pseudo_palette[16] = { @@ -1013,7 +1013,7 @@ static ssize_t mdss_fb_get_image_mode(struct device *dev, struct msm_fb_data_type *mfd = (struct msm_fb_data_type *)fbi->par; struct mdss_panel_data *pdata; struct mdss_panel_info *pinfo; - int ret; + int ret = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; char *rx_buf = NULL; @@ -1089,7 +1089,7 @@ static ssize_t mdss_fb_get_pixel_mode(struct device *dev, struct msm_fb_data_type *mfd = (struct msm_fb_data_type *)fbi->par; struct mdss_panel_data *pdata; struct mdss_panel_info *pinfo; - int ret; + int ret = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; char *rx_buf = NULL; @@ -1165,7 +1165,7 @@ static ssize_t mdss_fb_get_signal_mode(struct device *dev, struct msm_fb_data_type *mfd = (struct msm_fb_data_type *)fbi->par; struct mdss_panel_data *pdata; struct mdss_panel_info *pinfo; - int ret; + int ret = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; char *rx_buf = NULL; @@ -1203,7 +1203,7 @@ static ssize_t mdss_fb_get_bright_mode(struct device *dev, struct msm_fb_data_type *mfd = (struct msm_fb_data_type *)fbi->par; struct mdss_panel_data *pdata; struct mdss_panel_info *pinfo; - int ret; + int ret = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; char *rx_buf = NULL; @@ -1279,7 +1279,7 @@ static ssize_t mdss_fb_get_bright_en_mode(struct device *dev, struct msm_fb_data_type *mfd = (struct msm_fb_data_type *)fbi->par; struct mdss_panel_data *pdata; struct mdss_panel_info *pinfo; - int ret; + int ret = 0; struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL; char *rx_buf = NULL; @@ -2275,7 +2275,7 @@ int mdss_fb_get_register_value(struct msm_fb_data_type* mfd, int reg, int *val) { struct mdss_panel_data* pdata; struct mdss_panel_info* pinfo; - int ret; + int ret = 0; struct mdss_dsi_ctrl_pdata* ctrl_pdata = NULL; char* rx_buf = NULL; @@ -2370,6 +2370,7 @@ static int mdss_fb_blank_unblank(struct msm_fb_data_type *mfd) { int ret = 0; int cur_power_state; + int reg_val = 0; if (!mfd) return -EINVAL; @@ -2450,6 +2451,16 @@ static int mdss_fb_blank_unblank(struct msm_fb_data_type *mfd) } error: + /*read 0x0d status reg to check whether the panel has been set to all pixel off, set 0x13 cmd to normal mode*/ + reg_val = -1; + mdss_fb_get_register_value(mfd, 0x0d, ®_val); + if (0x08 == reg_val) + { + pr_err("read 0x0d error:%d\n",reg_val); + mdss_set_short_cmd(mfd, 0x13, 0x00); + mdss_fb_get_register_value(mfd, 0x0d, ®_val); + pr_err("read 0x0d after set to normal mode:%d\n",reg_val); + } return ret; } @@ -4154,7 +4165,6 @@ static int __mdss_fb_display_thread(void *data) struct msm_fb_data_type *mfd = data; int ret; struct sched_param param; - int reg_val = 0; /* * this priority was found during empiric testing to have appropriate @@ -4176,16 +4186,6 @@ static int __mdss_fb_display_thread(void *data) break; MDSS_XLOG(mfd->index, XLOG_FUNC_ENTRY); - /*read 0x0d status reg to check whether the panel has been set to all pixel off, set 0x13 cmd to normal mode*/ - reg_val = -1; - mdss_fb_get_register_value(g_mfd, 0x0d, ®_val); - if (0x08 == reg_val) - { - pr_err("read 0x0d error:%d\n",reg_val); - mdss_set_short_cmd(g_mfd, 0x13, 0x00); - mdss_fb_get_register_value(g_mfd, 0x0d, ®_val); - pr_err("read 0x0d after set to normal mode:%d\n",reg_val); - } ret = __mdss_fb_perform_commit(mfd); MDSS_XLOG(mfd->index, XLOG_FUNC_EXIT); |