Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
[deliverable/linux.git] / drivers / gpu / drm / sun4i / sun4i_crtc.c
index 41cacecbea9a85e280a6978ed41b91752a3bcced..4a192210574f5ed442d09e33babb8697eacd4bad 100644 (file)
@@ -51,10 +51,22 @@ static void sun4i_crtc_atomic_flush(struct drm_crtc *crtc,
 {
        struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc);
        struct sun4i_drv *drv = scrtc->drv;
+       struct drm_pending_vblank_event *event = crtc->state->event;
 
        DRM_DEBUG_DRIVER("Committing plane changes\n");
 
        sun4i_backend_commit(drv->backend);
+
+       if (event) {
+               crtc->state->event = NULL;
+
+               spin_lock_irq(&crtc->dev->event_lock);
+               if (drm_crtc_vblank_get(crtc) == 0)
+                       drm_crtc_arm_vblank_event(crtc, event);
+               else
+                       drm_crtc_send_vblank_event(crtc, event);
+               spin_unlock_irq(&crtc->dev->event_lock);
+       }
 }
 
 static void sun4i_crtc_disable(struct drm_crtc *crtc)
This page took 0.026296 seconds and 5 git commands to generate.