video: dw_mipi_dsi: Fix hsync/vsync settings
authorOndrej Jirman <megi@xff.cz>
Mon, 22 May 2023 21:47:02 +0000 (23:47 +0200)
committerAnatolij Gustschin <agust@denx.de>
Fri, 14 Jul 2023 16:17:43 +0000 (18:17 +0200)
These must be read from timings->flags, like other DSI HOST drivers do.

And they must not be inverted either. Low means low.

Without this fix, panel drivers that set *SYNC_LOW produce corrupted
output on screen (shifted horizontally and vertically by back porch
distance).

Signed-off-by: Ondrej Jirman <megi@xff.cz>
drivers/video/dw_mipi_dsi.c

index 92e388a..22fef7e 100644 (file)
@@ -538,9 +538,9 @@ static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi,
                break;
        }
 
-       if (device->mode_flags & DISPLAY_FLAGS_VSYNC_HIGH)
+       if (timings->flags & DISPLAY_FLAGS_VSYNC_LOW)
                val |= VSYNC_ACTIVE_LOW;
-       if (device->mode_flags & DISPLAY_FLAGS_HSYNC_HIGH)
+       if (timings->flags & DISPLAY_FLAGS_HSYNC_LOW)
                val |= HSYNC_ACTIVE_LOW;
 
        dsi_write(dsi, DSI_DPI_VCID, DPI_VCID(dsi->channel));