drm/sun4i: backend: Move line stride setup to buffer setup function
authorMaxime Ripard <maxime.ripard@free-electrons.com>
Mon, 22 Jan 2018 09:25:15 +0000 (10:25 +0100)
committerMaxime Ripard <maxime.ripard@free-electrons.com>
Mon, 22 Jan 2018 14:14:21 +0000 (15:14 +0100)
Setup the line stride in the buffer setup function, since it's tied to the
buffer itself, and is not needed when we do not set the buffer in the
backend.

This is for example the case when using the frontend and then routing its
output to the backend.

Reviewed-by: Chen-Yu Tsai <wens@csie.org>
Reviewed-by: Neil Armstrong <narmstrong@baylibre.com>
Signed-off-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Link: https://patchwork.freedesktop.org/patch/msgid/cbec84125bc0d5a6cf1d856b8291fbf77b138881.1516613040.git-series.maxime.ripard@free-electrons.com
drivers/gpu/drm/sun4i/sun4i_backend.c

index 847eecbe4d141fdebaa6bad67b9346ee37255094..095fddbaff027d3282355a66af69d26d433a553b 100644 (file)
@@ -141,7 +141,6 @@ int sun4i_backend_update_layer_coord(struct sun4i_backend *backend,
                                     int layer, struct drm_plane *plane)
 {
        struct drm_plane_state *state = plane->state;
-       struct drm_framebuffer *fb = state->fb;
 
        DRM_DEBUG_DRIVER("Updating layer %d\n", layer);
 
@@ -153,12 +152,6 @@ int sun4i_backend_update_layer_coord(struct sun4i_backend *backend,
                                                   state->crtc_h));
        }
 
-       /* Set the line width */
-       DRM_DEBUG_DRIVER("Layer line width: %d bits\n", fb->pitches[0] * 8);
-       regmap_write(backend->engine.regs,
-                    SUN4I_BACKEND_LAYLINEWIDTH_REG(layer),
-                    fb->pitches[0] * 8);
-
        /* Set height and width */
        DRM_DEBUG_DRIVER("Layer size W: %u H: %u\n",
                         state->crtc_w, state->crtc_h);
@@ -218,6 +211,12 @@ int sun4i_backend_update_layer_buffer(struct sun4i_backend *backend,
        u32 lo_paddr, hi_paddr;
        dma_addr_t paddr;
 
+       /* Set the line width */
+       DRM_DEBUG_DRIVER("Layer line width: %d bits\n", fb->pitches[0] * 8);
+       regmap_write(backend->engine.regs,
+                    SUN4I_BACKEND_LAYLINEWIDTH_REG(layer),
+                    fb->pitches[0] * 8);
+
        /* Get the start of the displayed memory */
        paddr = drm_fb_cma_get_gem_addr(fb, state, 0);
        DRM_DEBUG_DRIVER("Setting buffer address to %pad\n", &paddr);