From c9660db2983f1649582c9b8150375debbd455c7c Mon Sep 17 00:00:00 2001 From: Vishnuvardhan Prodduturi Date: Thu, 23 Feb 2017 13:49:08 +0530 Subject: 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 Signed-off-by: Sandeep Panda --- drivers/video/fbdev/msm/mdss_dsi.c | 2 -- 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, -- cgit v1.2.3