aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorm00389129 <m00389129@notesmail.huawei.com>2017-09-26 19:12:20 +0800
committery00230200 <yanghongliang.yang@huawei.com>2017-09-26 19:40:09 +0800
commit22c580f7fb449994cf60024c9fde9e54e0592f16 (patch)
tree9f49537d0e755a4e44c34fcf18c7020af27c5998
parent69972d72f9f89a632a776f44d790bf54e19cf5b0 (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-xdrivers/video/msm/mdss/mdp3_ctrl.c2
-rwxr-xr-xdrivers/video/msm/mdss/mdss_fb.c36
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, &reg_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, &reg_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, &reg_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, &reg_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);