diff --git a/msm/sde/sde_crtc.c b/msm/sde/sde_crtc.c index d42ef4173b..a43f66ec7c 100644 --- a/msm/sde/sde_crtc.c +++ b/msm/sde/sde_crtc.c @@ -4162,7 +4162,12 @@ static void sde_crtc_disable(struct drm_crtc *crtc) msm_mode_object_event_notify(&crtc->base, crtc->dev, &event, (u8 *)&power_on); - _sde_crtc_flush_event_thread(crtc); + 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); + } + kthread_cancel_delayed_work_sync(&sde_crtc->static_cache_read_work); kthread_cancel_delayed_work_sync(&sde_crtc->idle_notify_work);