[d-kernel] [PATCH 1/1] drm: rockchip: dwhdmiqp-rockchip: attach next bridge to the HDMI bridge

Daniil Gnusarev gnusarevda на basealt.ru
Вт Июл 14 09:15:02 MSK 2026


For embedded systems, additional bridges may be connected after
the HDMI bridge being created. To ensure full functionality, they
must be added to the DRM bridge chain.

Signed-off-by: Daniil Gnusarev <gnusarevda на basealt.ru>
---
 .../gpu/drm/rockchip/dw_hdmi_qp-rockchip.c    | 22 +++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
index 409f1a1e82a061..9485d85a16f35c 100644
--- a/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
+++ b/drivers/gpu/drm/rockchip/dw_hdmi_qp-rockchip.c
@@ -430,6 +430,8 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,
 	struct drm_connector *connector;
 	struct drm_encoder *encoder;
 	struct rockchip_hdmi_qp *hdmi;
+	struct drm_bridge *hdmi_bridge;
+	struct drm_bridge *next_bridge;
 	struct resource *res;
 	struct clk_bulk_data *clks;
 	int ret, irq, i;
@@ -441,6 +443,11 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,
 	if (!hdmi)
 		return -ENOMEM;
 
+	next_bridge = NULL;
+	ret = drm_of_find_panel_or_bridge(pdev->dev.of_node, 1, 0, NULL, &next_bridge);
+	if (ret && ret != -ENODEV)
+		return ret;
+
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 	if (!res)
 		return -ENODEV;
@@ -556,6 +563,21 @@ static int dw_hdmi_qp_rockchip_bind(struct device *dev, struct device *master,
 		return ret;
 	}
 
+	if (next_bridge) {
+		hdmi_bridge = drm_bridge_chain_get_last_bridge(encoder);
+		if (hdmi_bridge)
+			ret = drm_bridge_attach(encoder, next_bridge, hdmi_bridge,
+						DRM_BRIDGE_ATTACH_NO_CONNECTOR);
+		else
+			ret = -ENODEV;
+		if (hdmi_bridge)
+			drm_bridge_put(hdmi_bridge);
+		if (ret) {
+			dev_err(hdmi->dev, "failed to attach next bridge: %d\n", ret);
+			return ret;
+		}
+	}
+
 	connector = drm_bridge_connector_init(drm, encoder);
 	if (IS_ERR(connector)) {
 		ret = PTR_ERR(connector);
-- 
2.42.2



Подробная информация о списке рассылки devel-kernel