From 2d4daa2f842a1e515d13a10fa0c43c62268152df Mon Sep 17 00:00:00 2001
From: Devin Kim <dojip.kim@lge.com>
Date: Tue, 11 Nov 2014 08:50:09 -0800
Subject: [PATCH] msm: mdss: Idle off before backlight is on

If there is no backlight control after idle off, backlight level is not
applied properly. So be sure to set the idle off before turning the backight
on.

Change-Id: If05382fa5a2fb651270aae93033ee3bc398e071e
Signed-off-by: Devin Kim <dojip.kim@lge.com>
---
 drivers/video/msm/mdss/mdss_dsi_panel.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/drivers/video/msm/mdss/mdss_dsi_panel.c b/drivers/video/msm/mdss/mdss_dsi_panel.c
index 38511d69bcfe..5a8d963ad0a2 100644
--- a/drivers/video/msm/mdss/mdss_dsi_panel.c
+++ b/drivers/video/msm/mdss/mdss_dsi_panel.c
@@ -164,7 +164,8 @@ static void mdss_dsi_panel_bklt_dcs(struct mdss_dsi_ctrl_pdata *ctrl, int level)
 	struct dsi_cmd_desc cmds[2];
 	struct mdss_panel_info *pinfo = &ctrl->panel_data.panel_info;
 	unsigned char new_level = level;
-	bool do_idle = false;
+	bool idle_on = false;
+	bool idle_off = false;
 
 	pr_debug("%s: level=%d\n", __func__, level);
 
@@ -184,7 +185,7 @@ static void mdss_dsi_panel_bklt_dcs(struct mdss_dsi_ctrl_pdata *ctrl, int level)
 			memcpy(&cmds[cmdreq.cmds_cnt], &backlight_on_cmd,
 					sizeof(struct dsi_cmd_desc));
 			cmdreq.cmds_cnt++;
-			do_idle = true;
+			idle_off = true;
 		}
 
 		/* set backlight level */
@@ -206,10 +207,13 @@ static void mdss_dsi_panel_bklt_dcs(struct mdss_dsi_ctrl_pdata *ctrl, int level)
 				sizeof(struct dsi_cmd_desc));
 			cmdreq.cmds_cnt++;
 			ctrl->bklt_off = true;
-			do_idle = true;
+			idle_on = true;
 		}
 	}
 
+	if (idle_off)
+		__mdss_dsi_panel_set_idle_mode(ctrl, 0);
+
 	if (cmdreq.cmds_cnt) {
 		cmdreq.cmds = cmds;
 		cmdreq.flags = CMD_REQ_COMMIT | CMD_CLK_CTRL;
@@ -219,8 +223,8 @@ static void mdss_dsi_panel_bklt_dcs(struct mdss_dsi_ctrl_pdata *ctrl, int level)
 		mdss_dsi_cmdlist_put(ctrl, &cmdreq);
 	}
 
-	if (do_idle)
-		__mdss_dsi_panel_set_idle_mode(ctrl, !new_level);
+	if (idle_on)
+		__mdss_dsi_panel_set_idle_mode(ctrl, 1);
 }
 
 static void idle_on_work(struct work_struct *work)
-- 
GitLab