]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
drm/exynos: simplify completion event handling
authorAndrzej Hajda <a.hajda@samsung.com>
Wed, 15 Mar 2017 14:41:01 +0000 (15:41 +0100)
committerInki Dae <inki.dae@samsung.com>
Thu, 1 Jun 2017 07:21:33 +0000 (16:21 +0900)
All Exynos CRTC drivers shouldn't fail at referencing vblank events,
alternate path is actually dead code.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_crtc.c

index 0620d3ca2d06b3142264f1b66f64d4d334340bf0..918497404aec92d36cb8cbd3ffcff8d04c953686 100644 (file)
@@ -105,16 +105,15 @@ void exynos_crtc_handle_event(struct exynos_drm_crtc *exynos_crtc)
        struct drm_pending_vblank_event *event = crtc->state->event;
        unsigned long flags;
 
-       if (event) {
-               crtc->state->event = NULL;
-               spin_lock_irqsave(&crtc->dev->event_lock, flags);
-               if (drm_crtc_vblank_get(crtc) == 0)
-                       drm_crtc_arm_vblank_event(crtc, event);
-               else
-                       drm_crtc_send_vblank_event(crtc, event);
-               spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
-       }
+       if (!event)
+               return;
+       crtc->state->event = NULL;
+
+       WARN_ON(drm_crtc_vblank_get(crtc) != 0);
 
+       spin_lock_irqsave(&crtc->dev->event_lock, flags);
+       drm_crtc_arm_vblank_event(crtc, event);
+       spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
 }
 
 static void exynos_drm_crtc_destroy(struct drm_crtc *crtc)