summaryrefslogtreecommitdiff
path: root/drivers/gpu
diff options
context:
space:
mode:
authorRahul Sharma <rahsha@codeaurora.org>2019-04-17 14:19:45 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2019-04-22 12:11:33 -0700
commit523d657b6d080cfd74f492de9074e11fdbe70750 (patch)
tree07860fc5bace61120dbccd498ffa0d5b7d35b018 /drivers/gpu
parent8b618604151d0ff5998f30eb3c2f114113fdc7c0 (diff)
drm/msm: ekms: Wait for a vblank in ekms disable
After setting the plane to transparent, wait for a vblank to avoid the underrun. Change-Id: I5490c701e3ed598bfec011b8461625c48b9702e0 Signed-off-by: Rahul Sharma <rahsha@codeaurora.org>
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/drm/msm/ekms/edrm_crtc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/msm/ekms/edrm_crtc.c b/drivers/gpu/drm/msm/ekms/edrm_crtc.c
index b39ec94dc69c..cb72aba6d0aa 100644
--- a/drivers/gpu/drm/msm/ekms/edrm_crtc.c
+++ b/drivers/gpu/drm/msm/ekms/edrm_crtc.c
@@ -151,6 +151,7 @@ static void edrm_crtc_disable(struct drm_crtc *crtc)
const struct drm_plane_helper_funcs *funcs;
u32 sspp_flush_mask_bit[10] = {
0, 1, 2, 18, 3, 4, 5, 19, 11, 12};
+ struct drm_encoder *encoder;
edrm_plane = to_edrm_plane(crtc->primary);
funcs = crtc->primary->helper_private;
@@ -159,6 +160,12 @@ static void edrm_crtc_disable(struct drm_crtc *crtc)
edrm_crtc->sspp_flush_mask |=
BIT(sspp_flush_mask_bit[edrm_plane->sspp_cfg_id - 1]);
edrm_crtc_commit_kickoff(crtc);
+
+ drm_for_each_encoder(encoder, crtc->dev) {
+ if (encoder->crtc != crtc)
+ continue;
+ edrm_encoder_wait_for_commit_done(encoder);
+ }
}
void edrm_crtc_destroy(struct drm_crtc *crtc)