mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-22 15:02:32 +00:00
20ea6adbf1
Build system: x86_64 Build-tested: bcm2708, bcm2709, bcm2710, bcm2711 Run-tested: bcm2708/RPiB+, bcm2709/RPi3B, bcm2710/RPi3B, bcm2711/RPi4B Signed-off-by: Marty Jones <mj8263788@gmail.com> Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
57 lines
1.9 KiB
Diff
57 lines
1.9 KiB
Diff
From bbd8dd64c1083232f3da8e097207a5b539ab91c9 Mon Sep 17 00:00:00 2001
|
|
From: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
Date: Thu, 25 Nov 2021 14:45:33 +0000
|
|
Subject: [PATCH] drm/vc4: Add support for composite syncs to vc4_dpi
|
|
|
|
The hardware can combine H&V syncs onto the output enable line
|
|
as composite syncs, so add the relevant configuration to do that.
|
|
|
|
Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
|
---
|
|
drivers/gpu/drm/vc4/vc4_dpi.c | 25 ++++++++++++++++---------
|
|
1 file changed, 16 insertions(+), 9 deletions(-)
|
|
|
|
--- a/drivers/gpu/drm/vc4/vc4_dpi.c
|
|
+++ b/drivers/gpu/drm/vc4/vc4_dpi.c
|
|
@@ -131,7 +131,7 @@ static void vc4_dpi_encoder_enable(struc
|
|
struct vc4_dpi *dpi = vc4_encoder->dpi;
|
|
struct drm_connector_list_iter conn_iter;
|
|
struct drm_connector *connector = NULL, *connector_scan;
|
|
- u32 dpi_c = DPI_ENABLE | DPI_OUTPUT_ENABLE_MODE;
|
|
+ u32 dpi_c = DPI_ENABLE;
|
|
int ret;
|
|
|
|
/* Look up the connector attached to DPI so we can get the
|
|
@@ -192,15 +192,22 @@ static void vc4_dpi_encoder_enable(struc
|
|
dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT);
|
|
}
|
|
|
|
- if (mode->flags & DRM_MODE_FLAG_NHSYNC)
|
|
- dpi_c |= DPI_HSYNC_INVERT;
|
|
- else if (!(mode->flags & DRM_MODE_FLAG_PHSYNC))
|
|
- dpi_c |= DPI_HSYNC_DISABLE;
|
|
-
|
|
- if (mode->flags & DRM_MODE_FLAG_NVSYNC)
|
|
- dpi_c |= DPI_VSYNC_INVERT;
|
|
- else if (!(mode->flags & DRM_MODE_FLAG_PVSYNC))
|
|
- dpi_c |= DPI_VSYNC_DISABLE;
|
|
+ if (mode->flags & DRM_MODE_FLAG_CSYNC) {
|
|
+ if (mode->flags & DRM_MODE_FLAG_NCSYNC)
|
|
+ dpi_c |= DPI_OUTPUT_ENABLE_INVERT;
|
|
+ } else {
|
|
+ dpi_c |= DPI_OUTPUT_ENABLE_MODE;
|
|
+
|
|
+ if (mode->flags & DRM_MODE_FLAG_NHSYNC)
|
|
+ dpi_c |= DPI_HSYNC_INVERT;
|
|
+ else if (!(mode->flags & DRM_MODE_FLAG_PHSYNC))
|
|
+ dpi_c |= DPI_HSYNC_DISABLE;
|
|
+
|
|
+ if (mode->flags & DRM_MODE_FLAG_NVSYNC)
|
|
+ dpi_c |= DPI_VSYNC_INVERT;
|
|
+ else if (!(mode->flags & DRM_MODE_FLAG_PVSYNC))
|
|
+ dpi_c |= DPI_VSYNC_DISABLE;
|
|
+ }
|
|
|
|
DPI_WRITE(DPI_C, dpi_c);
|
|
|