msm_fb: display: wait for vsync instead of dmap_done
At both lcdc and dsi video mode panel, wait for vsync
interrupt instead of dmap_done interrupt to make sure a
single frame updated during every vsync period.
CRs-fixed: 305599
Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
diff --git a/drivers/video/msm/mdp4_overlay.c b/drivers/video/msm/mdp4_overlay.c
index 84b3f3f..3870afd 100644
--- a/drivers/video/msm/mdp4_overlay.c
+++ b/drivers/video/msm/mdp4_overlay.c
@@ -1979,7 +1979,6 @@
struct msm_fb_data_type *mfd = (struct msm_fb_data_type *)info->par;
int ret, mixer, perf_level;
struct mdp4_overlay_pipe *pipe;
- uint32 flags;
if (mfd == NULL) {
pr_err("%s: mfd == NULL, -ENODEV\n", __func__);
@@ -2064,17 +2063,15 @@
mdp4_update_perf_level(perf_level);
/* change clck base on perf level */
- flags = pipe->flags;
- pipe->flags &= ~MDP_OV_PLAY_NOWAIT;
if (pipe->mixer_num == MDP4_MIXER0) {
if (ctrl->panel_mode & MDP4_PANEL_DSI_VIDEO) {
- mdp4_overlay_dsi_video_vsync_push(mfd, pipe);
+ mdp4_overlay_dsi_video_set_perf(mfd);
} else if (ctrl->panel_mode & MDP4_PANEL_DSI_CMD) {
mdp4_dsi_cmd_dma_busy_wait(mfd);
mdp4_dsi_blt_dmap_busy_wait(mfd);
mdp4_set_perf_level();
} else if (ctrl->panel_mode & MDP4_PANEL_LCDC) {
- mdp4_overlay_lcdc_vsync_push(mfd, pipe);
+ mdp4_overlay_lcdc_set_perf(mfd);
} else if (ctrl->panel_mode & MDP4_PANEL_MDDI) {
mdp4_mddi_dma_busy_wait(mfd);
mdp4_set_perf_level();
@@ -2083,7 +2080,6 @@
if (ctrl->panel_mode & MDP4_PANEL_DTV)
mdp4_overlay_dtv_vsync_push(mfd, pipe);
}
- pipe->flags = flags;
}
mutex_unlock(&mfd->dma->ov_mutex);