|
@@ -518,6 +518,19 @@ static void vc4_crtc_disable(struct drm_crtc *crtc)
|
|
|
WARN_ON_ONCE((HVS_READ(SCALER_DISPSTATX(chan)) &
|
|
|
(SCALER_DISPSTATX_FULL | SCALER_DISPSTATX_EMPTY)) !=
|
|
|
SCALER_DISPSTATX_EMPTY);
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Make sure we issue a vblank event after disabling the CRTC if
|
|
|
+ * someone was waiting it.
|
|
|
+ */
|
|
|
+ if (crtc->state->event) {
|
|
|
+ unsigned long flags;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&dev->event_lock, flags);
|
|
|
+ drm_crtc_send_vblank_event(crtc, crtc->state->event);
|
|
|
+ crtc->state->event = NULL;
|
|
|
+ spin_unlock_irqrestore(&dev->event_lock, flags);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void vc4_crtc_enable(struct drm_crtc *crtc)
|