On 07.01.2026 14:12, Luca Ceresoli wrote: > This series converts all DRM bridge drivers (*) from the now deprecated > of_drm_find_bridge() to its replacement of_drm_find_and_get_bridge() which > allows correct bridge refcounting. It also converts per-driver > "next_bridge" pointers to the unified drm_bridge::next_bridge which puts > the reference automatically on bridge deallocation. > > This is part of the work to support hotplug of DRM bridges. The grand plan > was discussed in [0].
This patchset breaks Exynos DSI (Samsung-DSIM) driver operation on all my test boards. I will try to debug it and provide more information tomorrow though. > Here's the work breakdown (➜ marks the current series): > > 1. ➜ add refcounting to DRM bridges struct drm_bridge, > based on devm_drm_bridge_alloc() > A. ✔ add new alloc API and refcounting (v6.16) > B. ✔ convert all bridge drivers to new API (v6.17) > C. ✔ kunit tests (v6.17) > D. ✔ add get/put to drm_bridge_add/remove() + attach/detach() > and warn on old allocation pattern (v6.17) > E. ➜ add get/put on drm_bridge accessors > 1. ✔ drm_bridge_chain_get_first_bridge(), add cleanup action (v6.18) > 2. ✔ drm_bridge_get_prev_bridge() (v6.18) > 3. ✔ drm_bridge_get_next_bridge() (v6.19) > 4. ✔ drm_for_each_bridge_in_chain() (v6.19) > 5. ✔ drm_bridge_connector_init (v6.19) > 6. … protect encoder bridge chain with a mutex > 7. ➜ of_drm_find_bridge > a. ✔… add of_drm_get_bridge(), convert basic direct users > (v6.20?, one driver still pending) > b. ➜ convert direct of_drm_get_bridge() users, part 2 > c. convert direct of_drm_get_bridge() users, part 3 > d. convert direct of_drm_get_bridge() users, part 4 > e. convert bridge-only drm_of_find_panel_or_bridge() users > 8. drm_of_find_panel_or_bridge, *_of_get_bridge > 9. ✔ enforce drm_bridge_add before drm_bridge_attach (v6.19) > F. ✔ debugfs improvements > 1. ✔ add top-level 'bridges' file (v6.16) > 2. ✔ show refcount and list lingering bridges (v6.19) > 2. … handle gracefully atomic updates during bridge removal > A. ✔ Add drm_dev_enter/exit() to protect device resources (v6.20?) > B. … protect private_obj removal from list > 3. … DSI host-device driver interaction > 4. ✔ removing the need for the "always-disconnected" connector > 5. finish the hotplug bridge work, moving code to the core and potentially > removing the hotplug-bridge itself (this needs to be clarified as > points 1-3 are developed) > > [0] > https://lore.kernel.org/lkml/[email protected]/#t > > This work is a continuation of the work to correctly handle bridge > refcounting for existing of_drm_find_bridge(). The ground work is in: > > - commit 293a8fd7721a ("drm/bridge: add of_drm_find_and_get_bridge()") > - commit 9da0e06abda8 ("drm/bridge: deprecate of_drm_find_bridge()") > - commit 3fdeae134ba9 ("drm/bridge: add next_bridge pointer to struct > drm_bridge") > > The whole conversion is split in multiple series to make the review process > a bit smoother. Parts 3 and 4 are converting non-bridge drivers (mostly > encoders). > > (*) One bridge driver (synopsys/dw-hdmi) is converted in another series, > together with its (non-bridge) users. Additionally this series converts > drm_of_panel_bridge_remove() which is a special case, and has a bugfix > for it too. > > Signed-off-by: Luca Ceresoli <[email protected]> > --- > Luca Ceresoli (12): > drm: of: drm_of_panel_bridge_remove(): fix device_node leak > drm: of: drm_of_panel_bridge_remove(): convert to > of_drm_find_and_get_bridge() > drm/bridge: sii902x: convert to of_drm_find_and_get_bridge() > drm/bridge: thc63lvd1024: convert to of_drm_find_and_get_bridge() > drm/bridge: tfp410: convert to of_drm_find_and_get_bridge() > drm/bridge: tpd12s015: convert to of_drm_find_and_get_bridge() > drm/bridge: lt8912b: convert to of_drm_find_and_get_bridge() > drm/bridge: imx8mp-hdmi-pvi: convert to of_drm_find_and_get_bridge() > drm/bridge: imx8qxp-ldb: convert to of_drm_find_and_get_bridge() > drm/bridge: samsung-dsim: samsung_dsim_host_attach: use a temporary > variable for the next bridge > drm/bridge: samsung-dsim: samsung_dsim_host_attach: don't use the > bridge pointer as an error indicator > drm/bridge: samsung-dsim: samsung_dsim_host_attach: convert to > of_drm_find_and_get_bridge() > > drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c | 15 +++++++------- > drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c | 3 ++- > drivers/gpu/drm/bridge/lontium-lt8912b.c | 31 > ++++++++++++++-------------- > drivers/gpu/drm/bridge/samsung-dsim.c | 28 ++++++++++++++++--------- > drivers/gpu/drm/bridge/sii902x.c | 7 +++---- > drivers/gpu/drm/bridge/thc63lvd1024.c | 7 +++---- > drivers/gpu/drm/bridge/ti-tfp410.c | 27 ++++++++++++------------ > drivers/gpu/drm/bridge/ti-tpd12s015.c | 8 +++---- > include/drm/bridge/samsung-dsim.h | 1 - > include/drm/drm_of.h | 6 +++++- > 10 files changed, 69 insertions(+), 64 deletions(-) > --- > base-commit: 2bcba510a612cea32b8a536eedeabd7fcb413cd0 > change-id: 20251223-drm-bridge-alloc-getput-drm_of_find_bridge-2-12c6bbcb6896 > > Best regards, Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland
