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>
This commit is contained in:
parent
59a631bcac
commit
c9660db298
2 changed files with 4 additions and 3 deletions
|
@ -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);
|
MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_ON);
|
||||||
MIPI_OUTP((ctrl->ctrl_base + 0x1e8), enable);
|
MIPI_OUTP((ctrl->ctrl_base + 0x1e8), enable);
|
||||||
wmb(); /* ensure timing db is disabled */
|
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_clk_ctrl(ctrl, ctrl->dsi_clk_handle,
|
||||||
MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_OFF);
|
MDSS_DSI_CORE_CLK, MDSS_DSI_CLK_OFF);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
mutex_lock(&ctl->offlock);
|
||||||
pdata = ctl->panel_data;
|
pdata = ctl->panel_data;
|
||||||
if (pdata == NULL) {
|
if (pdata == NULL) {
|
||||||
|
@ -1545,7 +1547,8 @@ exit_dfps:
|
||||||
if (rc < 0)
|
if (rc < 0)
|
||||||
pr_err("Error in dfps_wait: %d\n", rc);
|
pr_err("Error in dfps_wait: %d\n", rc);
|
||||||
}
|
}
|
||||||
|
/* add HW recommended delay to handle panel_vsync */
|
||||||
|
udelay(2000);
|
||||||
/* Disable interface timing double buffer */
|
/* Disable interface timing double buffer */
|
||||||
rc = mdss_mdp_ctl_intf_event(ctl,
|
rc = mdss_mdp_ctl_intf_event(ctl,
|
||||||
MDSS_EVENT_DSI_TIMING_DB_CTRL,
|
MDSS_EVENT_DSI_TIMING_DB_CTRL,
|
||||||
|
|
Loading…
Add table
Reference in a new issue