drm/imx: Use __drm_atomic_helper_crtc_reset
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Fri, 12 Jun 2020 16:00:51 +0000 (18:00 +0200)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Thu, 2 Jul 2020 18:25:52 +0000 (20:25 +0200)
Now also comes with the added benefit of doing a drm_crtc_vblank_off(),
which means vblank state isn't ill-defined and fail-y at driver load
before the first modeset on each crtc.

Acked-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Cc: Philipp Zabel <p.zabel@pengutronix.de>
Cc: Shawn Guo <shawnguo@kernel.org>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Pengutronix Kernel Team <kernel@pengutronix.de>
Cc: Fabio Estevam <festevam@gmail.com>
Cc: NXP Linux Team <linux-imx@nxp.com>
Cc: linux-arm-kernel@lists.infradead.org
Link: https://patchwork.freedesktop.org/patch/msgid/20200612160056.2082681-3-daniel.vetter@ffwll.ch
drivers/gpu/drm/imx/ipuv3-crtc.c

index 63c0284..02c2f84 100644 (file)
@@ -109,20 +109,15 @@ static void imx_drm_crtc_reset(struct drm_crtc *crtc)
 {
        struct imx_crtc_state *state;
 
-       if (crtc->state) {
-               if (crtc->state->mode_blob)
-                       drm_property_blob_put(crtc->state->mode_blob);
-
-               state = to_imx_crtc_state(crtc->state);
-               memset(state, 0, sizeof(*state));
-       } else {
-               state = kzalloc(sizeof(*state), GFP_KERNEL);
-               if (!state)
-                       return;
-               crtc->state = &state->base;
-       }
+       if (crtc->state)
+               __drm_atomic_helper_crtc_destroy_state(crtc->state);
 
-       state->base.crtc = crtc;
+       kfree(to_imx_crtc_state(crtc->state));
+       crtc->state = NULL;
+
+       state = kzalloc(sizeof(*state), GFP_KERNEL);
+       if (state)
+               __drm_atomic_helper_crtc_reset(crtc, &state->base);
 }
 
 static struct drm_crtc_state *imx_drm_crtc_duplicate_state(struct drm_crtc *crtc)