[PATCH] drm/imx: fix crtc vblank state regression

2016-08-30 Thread Philipp Zabel
Am Montag, den 29.08.2016, 17:51 +0200 schrieb Lucas Stach:
> The atomic conversion lost the notification to let the DRM core
> know about the current state of the CRTC vblank interrupts. This
> regressed the ability of the core to reject page flip attempts
> on currently disabled CRTCs. Add back the notifications.
> 
> Signed-off-by: Lucas Stach 
> ---
>  drivers/gpu/drm/imx/ipuv3-crtc.c | 4 
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c 
> b/drivers/gpu/drm/imx/ipuv3-crtc.c
> index 08e188bc10fc..462056e4b9e4 100644
> --- a/drivers/gpu/drm/imx/ipuv3-crtc.c
> +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c
> @@ -76,6 +76,8 @@ static void ipu_crtc_disable(struct drm_crtc *crtc)
>   crtc->state->event = NULL;
>   }
>   spin_unlock_irq(>dev->event_lock);
> +
> + drm_crtc_vblank_off(crtc);
>  }
>  
>  static void imx_drm_crtc_reset(struct drm_crtc *crtc)
> @@ -175,6 +177,8 @@ static int ipu_crtc_atomic_check(struct drm_crtc *crtc,
>  static void ipu_crtc_atomic_begin(struct drm_crtc *crtc,
> struct drm_crtc_state *old_crtc_state)
>  {
> + drm_crtc_vblank_on(crtc);
> +
>   spin_lock_irq(>dev->event_lock);
>   if (crtc->state->event) {
>   WARN_ON(drm_crtc_vblank_get(crtc));

Applied, thanks.

regards
Philipp



[PATCH] drm/imx: fix crtc vblank state regression

2016-08-29 Thread Lucas Stach
The atomic conversion lost the notification to let the DRM core
know about the current state of the CRTC vblank interrupts. This
regressed the ability of the core to reject page flip attempts
on currently disabled CRTCs. Add back the notifications.

Signed-off-by: Lucas Stach 
---
 drivers/gpu/drm/imx/ipuv3-crtc.c | 4 
 1 file changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c
index 08e188bc10fc..462056e4b9e4 100644
--- a/drivers/gpu/drm/imx/ipuv3-crtc.c
+++ b/drivers/gpu/drm/imx/ipuv3-crtc.c
@@ -76,6 +76,8 @@ static void ipu_crtc_disable(struct drm_crtc *crtc)
crtc->state->event = NULL;
}
spin_unlock_irq(>dev->event_lock);
+
+   drm_crtc_vblank_off(crtc);
 }

 static void imx_drm_crtc_reset(struct drm_crtc *crtc)
@@ -175,6 +177,8 @@ static int ipu_crtc_atomic_check(struct drm_crtc *crtc,
 static void ipu_crtc_atomic_begin(struct drm_crtc *crtc,
  struct drm_crtc_state *old_crtc_state)
 {
+   drm_crtc_vblank_on(crtc);
+
spin_lock_irq(>dev->event_lock);
if (crtc->state->event) {
WARN_ON(drm_crtc_vblank_get(crtc));
-- 
2.8.1