diff options
| author | Vishnuvardhan Prodduturi <vproddut@codeaurora.org> | 2017-02-23 13:49:08 +0530 |
|---|---|---|
| committer | Sandeep Panda <spanda@codeaurora.org> | 2017-03-01 14:42:23 +0530 |
| commit | c9660db2983f1649582c9b8150375debbd455c7c (patch) | |
| tree | da9a083525ff280e68a122248eef489c03685e32 /drivers/video/fbdev/msm | |
| parent | 59a631bcacba622a294d0c9e9e54ac9161413950 (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.c | 2 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_intf_video.c | 5 |
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, |
