]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/vc4: crtc: Move HVS channel init before the PV initialisation
authorMaxime Ripard <maxime@cerno.tech>
Thu, 3 Sep 2020 08:00:59 +0000 (10:00 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Mon, 7 Sep 2020 16:03:58 +0000 (18:03 +0200)
In order to avoid stale pixels getting stuck in an intermediate FIFO
between the HVS and the pixelvalve on BCM2711, we need to configure the HVS
channel before the pixelvalve is reset and configured.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
Tested-by: Chanwoo Choi <cw00.choi@samsung.com>
Tested-by: Hoegeun Kwon <hoegeun.kwon@samsung.com>
Tested-by: Stefan Wahren <stefan.wahren@i2se.com>
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Link: https://patchwork.freedesktop.org/patch/msgid/9d7c5a03bc1a1e6d50f7b617cc2d8a46a4bbb7bc.1599120059.git-series.maxime@cerno.tech
drivers/gpu/drm/vc4/vc4_crtc.c

index 2c5ff45dc315554abf206828142a90b3302a30ac..b7b0e19e2fe125598c983599f479ce29a71ba166 100644 (file)
@@ -427,10 +427,6 @@ static void vc4_crtc_atomic_enable(struct drm_crtc *crtc,
 
        require_hvs_enabled(dev);
 
-       vc4_crtc_config_pv(crtc);
-
-       CRTC_WRITE(PV_CONTROL, CRTC_READ(PV_CONTROL) | PV_CONTROL_EN);
-
        /* Enable vblank irq handling before crtc is started otherwise
         * drm_crtc_get_vblank() fails in vc4_crtc_update_dlist().
         */
@@ -438,6 +434,10 @@ static void vc4_crtc_atomic_enable(struct drm_crtc *crtc,
 
        vc4_hvs_atomic_enable(crtc, old_state);
 
+       vc4_crtc_config_pv(crtc);
+
+       CRTC_WRITE(PV_CONTROL, CRTC_READ(PV_CONTROL) | PV_CONTROL_EN);
+
        /* When feeding the transposer block the pixelvalve is unneeded and
         * should not be enabled.
         */