drm/sun4i: Send vblank event when the CRTC is disabled
authorMaxime Ripard <maxime.ripard@free-electrons.com>
Mon, 20 Jun 2016 10:20:59 +0000 (12:20 +0200)
committerMaxime Ripard <maxime.ripard@free-electrons.com>
Thu, 30 Jun 2016 19:55:32 +0000 (21:55 +0200)
So far, we were missing to send the vblank event when disabling the CRTC,
making us never report the last vblank event.

This was causing a time out on the page flip, which should be solved now.

Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
drivers/gpu/drm/sun4i/sun4i_crtc.c

index 4182a21..41cacec 100644 (file)
@@ -65,6 +65,14 @@ static void sun4i_crtc_disable(struct drm_crtc *crtc)
        DRM_DEBUG_DRIVER("Disabling the CRTC\n");
 
        sun4i_tcon_disable(drv->tcon);
+
+       if (crtc->state->event && !crtc->state->active) {
+               spin_lock_irq(&crtc->dev->event_lock);
+               drm_crtc_send_vblank_event(crtc, crtc->state->event);
+               spin_unlock_irq(&crtc->dev->event_lock);
+
+               crtc->state->event = NULL;
+       }
 }
 
 static void sun4i_crtc_enable(struct drm_crtc *crtc)