[PATCH 05/10] drm/rockchip: dw_hdmi: Hold a reference to the dw-hdmi bridge
Jonas Karlman
jonas at kwiboo.se
Sun May 10 11:31:06 PDT 2026
Take a reference on the dw-hdmi bridge during bind and drop it again
from unbind to ensure the bridge is kept alive for the lifetime of the
encoder component.
Signed-off-by: Jonas Karlman <jonas at kwiboo.se>
---
drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
index c5cdf2d1f04b..c7933f3eb64f 100644
--- a/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
+++ b/drivers/gpu/drm/rockchip/dw_hdmi-rockchip.c
@@ -79,6 +79,7 @@ struct rockchip_hdmi {
struct clk *hdmiphy_clk;
struct clk *ref_clk;
struct clk *grf_clk;
+ struct drm_bridge *bridge;
struct dw_hdmi *hdmi;
struct phy *phy;
};
@@ -609,6 +610,13 @@ static int dw_hdmi_rockchip_bind(struct device *dev, struct device *master,
return dev_err_probe(dev, PTR_ERR(hdmi->hdmi),
"failed to bind encoder\n");
+ hdmi->bridge = of_drm_find_and_get_bridge(np);
+ if (!hdmi->bridge) {
+ dw_hdmi_remove(hdmi->hdmi);
+ return dev_err_probe(dev, -ENODEV,
+ "failed to find bridge\n");
+ }
+
return 0;
}
@@ -617,6 +625,7 @@ static void dw_hdmi_rockchip_unbind(struct device *dev, struct device *master,
{
struct rockchip_hdmi *hdmi = dev_get_drvdata(dev);
+ drm_bridge_put(hdmi->bridge);
dw_hdmi_unbind(hdmi->hdmi);
}
--
2.54.0
More information about the Linux-rockchip
mailing list