|
@@ -581,17 +581,6 @@ static void rcar_du_crtc_atomic_begin(struct drm_crtc *crtc,
|
|
|
struct drm_crtc_state *old_crtc_state)
|
|
|
{
|
|
|
struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
|
|
|
- struct drm_device *dev = rcrtc->crtc.dev;
|
|
|
- unsigned long flags;
|
|
|
-
|
|
|
- if (crtc->state->event) {
|
|
|
- WARN_ON(drm_crtc_vblank_get(crtc) != 0);
|
|
|
-
|
|
|
- spin_lock_irqsave(&dev->event_lock, flags);
|
|
|
- rcrtc->event = crtc->state->event;
|
|
|
- crtc->state->event = NULL;
|
|
|
- spin_unlock_irqrestore(&dev->event_lock, flags);
|
|
|
- }
|
|
|
|
|
|
if (rcar_du_has(rcrtc->group->dev, RCAR_DU_FEATURE_VSP1_SOURCE))
|
|
|
rcar_du_vsp_atomic_begin(rcrtc);
|
|
@@ -601,9 +590,20 @@ static void rcar_du_crtc_atomic_flush(struct drm_crtc *crtc,
|
|
|
struct drm_crtc_state *old_crtc_state)
|
|
|
{
|
|
|
struct rcar_du_crtc *rcrtc = to_rcar_crtc(crtc);
|
|
|
+ struct drm_device *dev = rcrtc->crtc.dev;
|
|
|
+ unsigned long flags;
|
|
|
|
|
|
rcar_du_crtc_update_planes(rcrtc);
|
|
|
|
|
|
+ if (crtc->state->event) {
|
|
|
+ WARN_ON(drm_crtc_vblank_get(crtc) != 0);
|
|
|
+
|
|
|
+ spin_lock_irqsave(&dev->event_lock, flags);
|
|
|
+ rcrtc->event = crtc->state->event;
|
|
|
+ crtc->state->event = NULL;
|
|
|
+ spin_unlock_irqrestore(&dev->event_lock, flags);
|
|
|
+ }
|
|
|
+
|
|
|
if (rcar_du_has(rcrtc->group->dev, RCAR_DU_FEATURE_VSP1_SOURCE))
|
|
|
rcar_du_vsp_atomic_flush(rcrtc);
|
|
|
}
|