[PATCH 10/26] video: bridge: Add check_timing interface

Dario Binacchi
2024-09-13T09:58:46Z

From: Michael Trimarchi <michael@amarulasolutions.com>

Add new interface check_timing to video bridge uclass. For bridge device
who may update timing needs to implement the callback. So host device can
sync the timing with the bridge.

Signed-off-by: Ye Li <ye.li@nxp.com>
Signed-off-by: Michael Trimarchi <michael@amarulasolutions.com>
Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---

drivers/video/bridge/video-bridge-uclass.c | 10 ++++++++++
include/video_bridge.h | 20 ++++++++++++++++++++
2 files changed, 30 insertions(+)

diff --git a/drivers/video/bridge/video-bridge-uclass.c b/drivers/video/bridge/video-bridge-uclass.c
index 2084a2e03ee8..7432107238cc 100644
--- a/drivers/video/bridge/video-bridge-uclass.c
+++ b/drivers/video/bridge/video-bridge-uclass.c
@@ -48,6 +48,16 @@ int video_bridge_check_attached(struct udevice *dev)
return ops->check_attached(dev);
}

+int video_bridge_check_timing(struct udevice *dev, struct display_timing *timing)
+{
+ struct video_bridge_ops *ops = video_bridge_get_ops(dev);
+
+ if (ops->check_timing)
+ return ops->check_timing(dev, timing);
+
+ return 0;
+}
+
int video_bridge_read_edid(struct udevice *dev, u8 *buf, int buf_size)
{
struct video_bridge_ops *ops = video_bridge_get_ops(dev);
diff --git a/include/video_bridge.h b/include/video_bridge.h
index 3b429eac578a..8b71b04a1119 100644
--- a/include/video_bridge.h
+++ b/include/video_bridge.h
@@ -44,6 +44,17 @@ struct video_bridge_ops {
*/
int (*check_attached)(struct udevice *dev);

+ /**
+ * check_timing() - check if the timing need update after the bridge device attached
+ *
+ * This method is optional - if not provided then return 0
+ *
+ * @dev: Device to check
+ * @active: The timing to be checked and updated
+ * Return: 0 if OK, -ve on error
+ */
+ int (*check_timing)(struct udevice *dev, struct display_timing *timing);
+
/**
* set_backlight() - Set the backlight brightness
*
@@ -98,6 +109,15 @@ int video_bridge_set_active(struct udevice *dev, bool active);
*/
int video_bridge_check_attached(struct udevice *dev);

+/**
+ * check_timing() - check if the timing need update after the bridge device attached
+ *
+ * @dev: Device to check
+ * @active: The timing to be checked and updated
+ * Return: 0 if OK, -ve on error
+ */
+int video_bridge_check_timing(struct udevice *dev, struct display_timing *timing);
+
/**
* video_bridge_read_edid() - Read information from EDID
*
--
2.43.0