of_drm_find_bridge() is deprecated. Move to its replacement
of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it
is put when done.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
drivers/gpu/drm/exynos/exynos_hdmi.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 01813e11e6c6..bfcf2fa62fe1 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -1779,7 +1779,7 @@ static int hdmi_bridge_init(struct hdmi_context *hdata)
return -EINVAL;
}
- hdata->bridge = of_drm_find_bridge(np);
+ hdata->bridge = of_drm_find_and_get_bridge(np);
of_node_put(np);
if (!hdata->bridge)
@@ -2096,6 +2096,8 @@ static void hdmi_remove(struct platform_device *pdev)
put_device(&hdata->ddc_adpt->dev);
+ drm_bridge_put(hdata->bridge);
+
mutex_destroy(&hdata->mutex);
}
--
2.52.0
On 07.01.2026 17:22, Luca Ceresoli wrote: > of_drm_find_bridge() is deprecated. Move to its replacement > of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it > is put when done. > > Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> > --- > drivers/gpu/drm/exynos/exynos_hdmi.c | 4 +++- Tested-by: Marek Szyprowski <m.szyprowski@samsung.com> > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c > index 01813e11e6c6..bfcf2fa62fe1 100644 > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c > @@ -1779,7 +1779,7 @@ static int hdmi_bridge_init(struct hdmi_context *hdata) > return -EINVAL; > } > > - hdata->bridge = of_drm_find_bridge(np); > + hdata->bridge = of_drm_find_and_get_bridge(np); > of_node_put(np); > > if (!hdata->bridge) > @@ -2096,6 +2096,8 @@ static void hdmi_remove(struct platform_device *pdev) > > put_device(&hdata->ddc_adpt->dev); > > + drm_bridge_put(hdata->bridge); > + > mutex_destroy(&hdata->mutex); > } > > Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland
On Wed, Jan 07, 2026 at 05:22:03PM +0100, Luca Ceresoli wrote: > of_drm_find_bridge() is deprecated. Move to its replacement > of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it > is put when done. > > Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> Why can't we use next_bridge for this one? > --- > drivers/gpu/drm/exynos/exynos_hdmi.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c > index 01813e11e6c6..bfcf2fa62fe1 100644 > --- a/drivers/gpu/drm/exynos/exynos_hdmi.c > +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c > @@ -1779,7 +1779,7 @@ static int hdmi_bridge_init(struct hdmi_context *hdata) > return -EINVAL; > } > > - hdata->bridge = of_drm_find_bridge(np); > + hdata->bridge = of_drm_find_and_get_bridge(np); > of_node_put(np); > > if (!hdata->bridge) > @@ -2096,6 +2096,8 @@ static void hdmi_remove(struct platform_device *pdev) > > put_device(&hdata->ddc_adpt->dev); > > + drm_bridge_put(hdata->bridge); > + > mutex_destroy(&hdata->mutex); > } Same story than in your part 2 series, it should be dropped in destroy. Maxime
Hi Maxime, On Thu Jan 8, 2026 at 9:14 AM CET, Maxime Ripard wrote: > On Wed, Jan 07, 2026 at 05:22:03PM +0100, Luca Ceresoli wrote: >> of_drm_find_bridge() is deprecated. Move to its replacement >> of_drm_find_and_get_bridge() which gets a bridge reference, and ensure it >> is put when done. >> >> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> > > Why can't we use next_bridge for this one? Because this device is not a bridge, so we have no struct drm_bridge. >> --- >> drivers/gpu/drm/exynos/exynos_hdmi.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c >> index 01813e11e6c6..bfcf2fa62fe1 100644 >> --- a/drivers/gpu/drm/exynos/exynos_hdmi.c >> +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c >> @@ -1779,7 +1779,7 @@ static int hdmi_bridge_init(struct hdmi_context *hdata) >> return -EINVAL; >> } >> >> - hdata->bridge = of_drm_find_bridge(np); >> + hdata->bridge = of_drm_find_and_get_bridge(np); >> of_node_put(np); >> >> if (!hdata->bridge) >> @@ -2096,6 +2096,8 @@ static void hdmi_remove(struct platform_device *pdev) >> >> put_device(&hdata->ddc_adpt->dev); >> >> + drm_bridge_put(hdata->bridge); >> + >> mutex_destroy(&hdata->mutex); >> } > > Same story than in your part 2 series, it should be dropped in destroy. hdata->bridge is only used for drm_bridge_attach(), it won't be referenced after that. So this is safe, unless I'm missing something. Also as we don't have a struct drm_bridge (as mentioned above) we have no bridge destroy. We have the encoder destroy, but that will never be called on bridge hotplug. Luca -- Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
© 2016 - 2026 Red Hat, Inc.