msm_fb: display: add spinlock to synchronize mdp irq enable/disable
To improve performance, UI push thread release mutex before blocked at
waiting for vsync to allow Video thread to be updated at same vsycn.
This also cause contention to enable/disable mdp irq.
Add spinlock to synchronize both threads and irq context.
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 cc3bd1b..251e55d 100644
--- a/drivers/video/msm/mdp4_overlay.c
+++ b/drivers/video/msm/mdp4_overlay.c
@@ -2255,11 +2255,15 @@
} else {
/* primary interface */
ctrl->mixer0_played++;
- if (ctrl->panel_mode & MDP4_PANEL_LCDC)
+ if (ctrl->panel_mode & MDP4_PANEL_LCDC) {
+ mdp4_overlay_reg_flush(pipe, 1);
mdp4_overlay_lcdc_vsync_push(mfd, pipe);
+ }
#ifdef CONFIG_FB_MSM_MIPI_DSI
- else if (ctrl->panel_mode & MDP4_PANEL_DSI_VIDEO)
+ else if (ctrl->panel_mode & MDP4_PANEL_DSI_VIDEO) {
+ mdp4_overlay_reg_flush(pipe, 1);
mdp4_overlay_dsi_video_vsync_push(mfd, pipe);
+ }
#endif
else {
/* mddi & mipi dsi cmd mode */