diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2019-05-01 16:31:04 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-05-01 16:31:04 -0700 |
| commit | 78a2fca7feace280b35c945280ca781c8658cc49 (patch) | |
| tree | e3d244acf42f5564c729587e1816b360b4f84c57 | |
| parent | 1a886ff9a1edbeb40ca0d71688c208737dd58157 (diff) | |
| parent | 523d657b6d080cfd74f492de9074e11fdbe70750 (diff) | |
Merge "drm/msm: ekms: Wait for a vblank in ekms disable"
| -rw-r--r-- | drivers/gpu/drm/msm/ekms/edrm_crtc.c | 7 |
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) |
