diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index f7d531d01c..44a48041d6 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -3850,8 +3850,10 @@ static int _sde_crtc_vblank_enable_no_lock( if (ret < 0) return ret; - drm_for_each_encoder_mask(enc, crtc->dev, - crtc->state->encoder_mask) { + drm_for_each_encoder(enc, crtc->dev) { + if (enc->crtc != crtc) + continue; + SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, sde_crtc->enabled); @@ -3859,8 +3861,10 @@ static int _sde_crtc_vblank_enable_no_lock( sde_crtc_vblank_cb, (void *)crtc); } } else { - drm_for_each_encoder_mask(enc, crtc->dev, - crtc->state->encoder_mask) { + drm_for_each_encoder(enc, crtc->dev) { + if (enc->crtc != crtc) + continue; + SDE_EVT32(DRMID(&sde_crtc->base), DRMID(enc), enable, sde_crtc->enabled); @@ -4159,11 +4163,9 @@ static void sde_crtc_disable(struct drm_crtc *crtc) msm_mode_object_event_notify(&crtc->base, crtc->dev, &event, (u8 *)&power_on); - if (atomic_read(&sde_crtc->frame_pending)) { - mutex_unlock(&sde_crtc->crtc_lock); - _sde_crtc_flush_event_thread(crtc); - mutex_lock(&sde_crtc->crtc_lock); - } + mutex_unlock(&sde_crtc->crtc_lock); + _sde_crtc_flush_event_thread(crtc); + mutex_lock(&sde_crtc->crtc_lock); kthread_cancel_delayed_work_sync(&sde_crtc->static_cache_read_work); kthread_cancel_delayed_work_sync(&sde_crtc->idle_notify_work);