DT bindings for adv7511 and adv7533 bridges specify HDMI output to be
present at the port@1. This allows board DT to add e.g. HDMI connector
nodes or any other next chained bridge. Make adv7511 driver discover
that bridge and attach it to the chain.

Signed-off-by: Dmitry Baryshkov <dmitry.barysh...@linaro.org>
---
 drivers/gpu/drm/bridge/adv7511/adv7511.h     |  1 +
 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511.h 
b/drivers/gpu/drm/bridge/adv7511/adv7511.h
index 39c9ece373b0..ea271f62b214 100644
--- a/drivers/gpu/drm/bridge/adv7511/adv7511.h
+++ b/drivers/gpu/drm/bridge/adv7511/adv7511.h
@@ -356,6 +356,7 @@ struct adv7511 {
        enum drm_connector_status status;
        bool powered;
 
+       struct drm_bridge *next_bridge;
        struct drm_display_mode curr_mode;
 
        unsigned int f_tmds;
diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c 
b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
index b5518ff97165..4eea9e8fb603 100644
--- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
+++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c
@@ -17,6 +17,7 @@
 #include <drm/drm_atomic.h>
 #include <drm/drm_atomic_helper.h>
 #include <drm/drm_edid.h>
+#include <drm/drm_of.h>
 #include <drm/drm_print.h>
 #include <drm/drm_probe_helper.h>
 
@@ -946,6 +947,10 @@ static int adv7511_bridge_attach(struct drm_bridge *bridge,
        struct adv7511 *adv = bridge_to_adv7511(bridge);
        int ret = 0;
 
+       ret = drm_bridge_attach(bridge->encoder, adv->next_bridge, bridge, 
flags);
+       if (ret)
+               return ret;
+
        if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) {
                ret = adv7511_connector_init(adv);
                if (ret < 0)
@@ -1216,6 +1221,11 @@ static int adv7511_probe(struct i2c_client *i2c)
 
        memset(&link_config, 0, sizeof(link_config));
 
+       ret = drm_of_find_panel_or_bridge(dev->of_node, 1, -1, NULL,
+                                         &adv7511->next_bridge);
+       if (ret)
+               return ret;
+
        if (adv7511->info->link_config)
                ret = adv7511_parse_dt(dev->of_node, &link_config);
        else

---
base-commit: 1843e16d2df9d98427ef8045589571749d627cf7
change-id: 20240309-adv7511-next-bridge-10d8bbe0544e

Best regards,
-- 
Dmitry Baryshkov <dmitry.barysh...@linaro.org>

Reply via email to