The drm_display_info structure contains bus flags that specify on which
pixel clock edge the data are driven and sampled. Add a set of flags to
specify the pixel clock edge for sync signals, as they can be driven and
sampled on the opposite clock edge of the data signals.

Signed-off-by: Laurent Pinchart <[email protected]>
---
 drivers/gpu/drm/drm_modes.c | 10 ++++++++--
 include/drm/drm_connector.h |  4 ++++
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
index c78ca0e84ffd..2daa19e0b4c1 100644
--- a/drivers/gpu/drm/drm_modes.c
+++ b/drivers/gpu/drm/drm_modes.c
@@ -661,8 +661,9 @@ EXPORT_SYMBOL_GPL(drm_display_mode_to_videomode);
  * @vm: videomode structure to use
  * @bus_flags: information about pixelclk and DE polarity will be stored here
  *
- * Sets DRM_BUS_FLAG_DE_(LOW|HIGH) and DRM_BUS_FLAG_PIXDATA_(POS|NEG)EDGE
- * in @bus_flags according to DISPLAY_FLAGS found in @vm
+ * Sets DRM_BUS_FLAG_DE_(LOW|HIGH), DRM_BUS_FLAG_PIXDATA_(POS|NEG)EDGE and
+ * DRM_BUS_FLAG_SYNC_(POS|NEG)EDGE in @bus_flags according to DISPLAY_FLAGS
+ * found in @vm
  */
 void drm_bus_flags_from_videomode(const struct videomode *vm, u32 *bus_flags)
 {
@@ -676,6 +677,11 @@ void drm_bus_flags_from_videomode(const struct videomode 
*vm, u32 *bus_flags)
                *bus_flags |= DRM_BUS_FLAG_DE_LOW;
        if (vm->flags & DISPLAY_FLAGS_DE_HIGH)
                *bus_flags |= DRM_BUS_FLAG_DE_HIGH;
+
+       if (vm->flags & DISPLAY_FLAGS_SYNC_POSEDGE)
+               *bus_flags |= DRM_BUS_FLAG_SYNC_POSEDGE;
+       if (vm->flags & DISPLAY_FLAGS_SYNC_NEGEDGE)
+               *bus_flags |= DRM_BUS_FLAG_SYNC_NEGEDGE;
 }
 EXPORT_SYMBOL_GPL(drm_bus_flags_from_videomode);
 
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index 675cc3f8cf85..ad8f87c77390 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -290,6 +290,10 @@ struct drm_display_info {
 #define DRM_BUS_FLAG_DATA_MSB_TO_LSB   (1<<4)
 /* data is transmitted LSB to MSB on the bus */
 #define DRM_BUS_FLAG_DATA_LSB_TO_MSB   (1<<5)
+/* drive [hv]sync on pos. edge */
+#define DRM_BUS_FLAG_SYNC_POSEDGE      (1<<6)
+/* drive [hv]sync on neg. edge */
+#define DRM_BUS_FLAG_SYNC_NEGEDGE      (1<<7)
 
        /**
         * @bus_flags: Additional information (like pixel signal polarity) for
-- 
Regards,

Laurent Pinchart

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to