msm_fb: display: disable timing generator before enable writeback mode
At pulling mode (lcdc and dsi video mode), timing generator need to
be turned off before enable wriback mode and turn it back on after
enabled.
CRs-fixed: 298593
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 e003243..f797076 100644
--- a/drivers/video/msm/mdp4_overlay.c
+++ b/drivers/video/msm/mdp4_overlay.c
@@ -1077,7 +1077,7 @@
off = pipe->src_height * pipe->src_width * bpp;
outpdw(overlay_base + 0x001c, pipe->blt_addr + off);
/* LCDC - FRAME BUFFER + vsync rate */
- outpdw(overlay_base + 0x0004, 0x02);
+ outpdw(overlay_base + 0x0004, 0x04);/* 30 refresh */
} else { /* MDDI */
off = 0;
if (pipe->ov_cnt & 0x01)
@@ -2017,15 +2017,15 @@
return -ERANGE;
}
}
+
if ((mfd->panel_info.type == MIPI_VIDEO_PANEL) &&
(req->src_rect.h >
req->dst_rect.h || req->src_rect.w > req->dst_rect.w)) {
if (mdp4_overlay_validate_downscale(req, mfd,
- perf_level, (&mfd->panel_info.mipi)->dsi_pclk_rate)) {
- mutex_unlock(&mfd->dma->ov_mutex);
- return -ERANGE;
- }
+ perf_level, (&mfd->panel_info.mipi)->dsi_pclk_rate))
+ mdp4_dsi_video_blt_start(mfd);
}
+
mixer = mfd->panel_info.pdest; /* DISPLAY_1 or DISPLAY_2 */
ret = mdp4_overlay_req2pipe(req, mixer, &pipe, mfd);
@@ -2035,7 +2035,6 @@
return ret;
}
-#ifdef CONFIG_FB_MSM_MIPI_DSI
/*
* writeback (blt) mode to provide work around for
* dsi cmd mode interface hardware bug.
@@ -2046,7 +2045,6 @@
mdp4_dsi_overlay_blt_start(mfd);
}
}
-#endif
/* return id back to user */
req->id = pipe->pipe_ndx; /* pipe_ndx start from 1 */
@@ -2163,6 +2161,7 @@
mdp4_overlay_reg_flush(pipe, 1);
mdp4_overlay_dsi_video_vsync_push(mfd, pipe);
pipe->flags = flags;
+ mdp4_dsi_video_blt_stop(mfd);
}
#else
if (ctrl->panel_mode & MDP4_PANEL_MDDI) {