diff --git a/drivers/video/msm/mdss/mdss_dsi_panel.c b/drivers/video/msm/mdss/mdss_dsi_panel.c
index 38511d69bcfe41135e63f9a4f219b0f3d51631b1..5a8d963ad0a2608384de73c15336a2519910c98b 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)