1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- From bbd8dd64c1083232f3da8e097207a5b539ab91c9 Mon Sep 17 00:00:00 2001
- From: Dave Stevenson <[email protected]>
- 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 <[email protected]>
- ---
- 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
- @@ -202,15 +202,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);
-
|