drm/vc4: dpi: Ensure a default format is selected
authorDave Stevenson <dave.stevenson@raspberrypi.com>
Mon, 13 Jun 2022 14:47:37 +0000 (16:47 +0200)
committerMaxime Ripard <maxime@cerno.tech>
Tue, 28 Jun 2022 12:55:19 +0000 (14:55 +0200)
In a couple of error/incomplete configuration cases, the
DPI_FORMAT bits wouldn't get set.

Enforce our RGB888 default in all these cases.

Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
Link: https://lore.kernel.org/r/20220613144800.326124-11-maxime@cerno.tech
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/vc4_dpi.c

index 695b759..44355b3 100644 (file)
@@ -148,10 +148,15 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder)
        }
        drm_connector_list_iter_end(&conn_iter);
 
+       /* Default to 24bit if no connector or format found. */
+       dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB, DPI_FORMAT);
+
        if (connector) {
                if (connector->display_info.num_bus_formats) {
                        u32 bus_format = connector->display_info.bus_formats[0];
 
+                       dpi_c &= ~DPI_FORMAT_MASK;
+
                        switch (bus_format) {
                        case MEDIA_BUS_FMT_RGB888_1X24:
                                dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB,
@@ -187,9 +192,6 @@ static void vc4_dpi_encoder_enable(struct drm_encoder *encoder)
 
                if (connector->display_info.bus_flags & DRM_BUS_FLAG_DE_LOW)
                        dpi_c |= DPI_OUTPUT_ENABLE_INVERT;
-       } else {
-               /* Default to 24bit if no connector found. */
-               dpi_c |= VC4_SET_FIELD(DPI_FORMAT_24BIT_888_RGB, DPI_FORMAT);
        }
 
        if (mode->flags & DRM_MODE_FLAG_CSYNC) {