|
@@ -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);
|