summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev/msm
diff options
context:
space:
mode:
authorVishnuvardhan Prodduturi <vproddut@codeaurora.org>2017-02-23 13:49:08 +0530
committerSandeep Panda <spanda@codeaurora.org>2017-03-01 14:42:23 +0530
commitc9660db2983f1649582c9b8150375debbd455c7c (patch)
treeda9a083525ff280e68a122248eef489c03685e32 /drivers/video/fbdev/msm
parent59a631bcacba622a294d0c9e9e54ac9161413950 (diff)
msm: mdss: add HW recommended delay for dfps feature.
When prefetch is enabled, MDSS HW works on 2 vsync boundaries i.e. mdp_vsync and panel_vsync. In the current implementation we are only waiting for mdp_vsync and there might be scenarios where driver is configuring interface flush before panel_vsync, which might lead to undefined behavior in MDSS HW. So add the recommended delays before and after dfps update to avoid such scenarios. Change-Id: Idc801f7b63ea85d88949c8ded06fae322f90dbdb Signed-off-by: Vishnuvardhan Prodduturi <vproddut@codeaurora.org> Signed-off-by: Sandeep Panda <spanda@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev/msm')
-rw-r--r--drivers/video/fbdev/msm/mdss_dsi.c2
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_intf_video.c5
2 files changed, 4 insertions, 3 deletions
diff --git a/drivers/video/fbdev/msm/mdss_dsi.c b/drivers/video/fbdev/msm/mdss_dsi.c
index c66d9f3b3a65..e01ad4f9083e 100644
--- a/drivers/video/fbdev/msm/mdss_dsi.c
+++ b/drivers/video/fbdev/msm/mdss_dsi.c
@@ -2533,8 +2533,6 @@ static void mdss_dsi_timing_db_ctrl(struct mdss_dsi_ctrl_pdata *ctrl,
MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_ON);
MIPI_OUTP((ctrl->ctrl_base + 0x1e8), enable);
wmb(); /* ensure timing db is disabled */
- MIPI_OUTP((ctrl->ctrl_base + 0x1e4), enable);
- wmb(); /* ensure timing flush is disabled */
mdss_dsi_clk_ctrl(ctrl, ctrl->dsi_clk_handle,
MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_OFF);
}
diff --git a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
index 5173567a3420..97a1e5d6a9fb 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_intf_video.c
@@ -1416,6 +1416,8 @@ static int mdss_mdp_video_config_fps(struct mdss_mdp_ctl *ctl, int new_fps)
}
}
+ /* add HW recommended delay to handle panel_vsync */
+ udelay(2000);
mutex_lock(&ctl->offlock);
pdata = ctl->panel_data;
if (pdata == NULL) {
@@ -1545,7 +1547,8 @@ exit_dfps:
if (rc < 0)
pr_err("Error in dfps_wait: %d\n", rc);
}
-
+ /* add HW recommended delay to handle panel_vsync */
+ udelay(2000);
/* Disable interface timing double buffer */
rc = mdss_mdp_ctl_intf_event(ctl,
MDSS_EVENT_DSI_TIMING_DB_CTRL,