950-0579-drm-vc4-Add-support-for-composite-syncs-to-vc4_dpi.patch 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. From bbd8dd64c1083232f3da8e097207a5b539ab91c9 Mon Sep 17 00:00:00 2001
  2. From: Dave Stevenson <[email protected]>
  3. Date: Thu, 25 Nov 2021 14:45:33 +0000
  4. Subject: [PATCH] drm/vc4: Add support for composite syncs to vc4_dpi
  5. The hardware can combine H&V syncs onto the output enable line
  6. as composite syncs, so add the relevant configuration to do that.
  7. Signed-off-by: Dave Stevenson <[email protected]>
  8. ---
  9. drivers/gpu/drm/vc4/vc4_dpi.c | 25 ++++++++++++++++---------
  10. 1 file changed, 16 insertions(+), 9 deletions(-)
  11. --- a/drivers/gpu/drm/vc4/vc4_dpi.c
  12. +++ b/drivers/gpu/drm/vc4/vc4_dpi.c
  13. @@ -131,7 +131,7 @@ static void vc4_dpi_encoder_enable(struc
  14. struct vc4_dpi *dpi = vc4_encoder->dpi;
  15. struct drm_connector_list_iter conn_iter;
  16. struct drm_connector *connector = NULL, *connector_scan;
  17. - u32 dpi_c = DPI_ENABLE | DPI_OUTPUT_ENABLE_MODE;
  18. + u32 dpi_c = DPI_ENABLE;
  19. int ret;
  20. /* Look up the connector attached to DPI so we can get the
  21. @@ -202,15 +202,22 @@ static void vc4_dpi_encoder_enable(struc
  22. dpi_c |= VC4_SET_FIELD(DPI_FORMAT_18BIT_666_RGB_1, DPI_FORMAT);
  23. }
  24. - if (mode->flags & DRM_MODE_FLAG_NHSYNC)
  25. - dpi_c |= DPI_HSYNC_INVERT;
  26. - else if (!(mode->flags & DRM_MODE_FLAG_PHSYNC))
  27. - dpi_c |= DPI_HSYNC_DISABLE;
  28. -
  29. - if (mode->flags & DRM_MODE_FLAG_NVSYNC)
  30. - dpi_c |= DPI_VSYNC_INVERT;
  31. - else if (!(mode->flags & DRM_MODE_FLAG_PVSYNC))
  32. - dpi_c |= DPI_VSYNC_DISABLE;
  33. + if (mode->flags & DRM_MODE_FLAG_CSYNC) {
  34. + if (mode->flags & DRM_MODE_FLAG_NCSYNC)
  35. + dpi_c |= DPI_OUTPUT_ENABLE_INVERT;
  36. + } else {
  37. + dpi_c |= DPI_OUTPUT_ENABLE_MODE;
  38. +
  39. + if (mode->flags & DRM_MODE_FLAG_NHSYNC)
  40. + dpi_c |= DPI_HSYNC_INVERT;
  41. + else if (!(mode->flags & DRM_MODE_FLAG_PHSYNC))
  42. + dpi_c |= DPI_HSYNC_DISABLE;
  43. +
  44. + if (mode->flags & DRM_MODE_FLAG_NVSYNC)
  45. + dpi_c |= DPI_VSYNC_INVERT;
  46. + else if (!(mode->flags & DRM_MODE_FLAG_PVSYNC))
  47. + dpi_c |= DPI_VSYNC_DISABLE;
  48. + }
  49. DPI_WRITE(DPI_C, dpi_c);