summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTerence Hampson <thampson@codeaurora.org>2015-09-11 16:34:51 -0400
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 20:45:47 -0700
commitc0ae920e8bcff905811f37b7c8b07d6ef2e7d2cd (patch)
tree73eae99d6d782f66cdabaf68c89d6a334c206c4c
parentdacb6ec79edc7abafe4fe24eb3356e58a9934d35 (diff)
msm: mdss: fix flicker during DSI mode switch
Resolve regression change I65ca10c2adad21637f8414784986aa15026fd774. DSI mode switch should not be calling mdss_dsi_ctrl_setup prior to issuing panel switch commands. Change-Id: I95eb9768d8bf64251466baaa371d6c12bb699410 Signed-off-by: Terence Hampson <thampson@codeaurora.org>
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c
index f51f80b6a502..460b2ed0d47b 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.c
+++ b/drivers/video/fbdev/msm/mdss_dsi.c
@@ -1086,6 +1086,7 @@ int mdss_dsi_switch_mode(struct mdss_panel_data *pdata, int mode)
{
struct mdss_dsi_ctrl_pdata *ctrl_pdata = NULL;
struct mipi_panel_info *pinfo;
+ bool dsi_ctrl_setup_needed = false;
if (!pdata) {
pr_err("%s: Invalid input data\n", __func__);
@@ -1108,6 +1109,7 @@ int mdss_dsi_switch_mode(struct mdss_panel_data *pdata, int mode)
} else if (mode == MIPI_CMD_PANEL) {
mode = SWITCH_TO_CMD_MODE;
} else if (mode == SWITCH_RESOLUTION) {
+ dsi_ctrl_setup_needed = true;
pr_debug("Resolution switch mode selected\n");
} else {
pr_err("Invalid mode selected, mode=%d\n", mode);
@@ -1116,7 +1118,8 @@ int mdss_dsi_switch_mode(struct mdss_panel_data *pdata, int mode)
mdss_dsi_clk_ctrl(ctrl_pdata, ctrl_pdata->dsi_clk_handle,
MDSS_DSI_ALL_CLKS, MDSS_DSI_CLK_ON);
- mdss_dsi_ctrl_setup(ctrl_pdata);
+ if (dsi_ctrl_setup_needed)
+ mdss_dsi_ctrl_setup(ctrl_pdata);
ctrl_pdata->switch_mode(pdata, mode);
mdss_dsi_clk_ctrl(ctrl_pdata, ctrl_pdata->dsi_clk_handle,
MDSS_DSI_ALL_CLKS, MDSS_DSI_CLK_OFF);