public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/12] drm/bridge: convert users of of_drm_find_bridge(), part 2
@ 2026-01-09  7:31 Luca Ceresoli
  2026-01-09  7:31 ` [PATCH v2 01/12] drm: of: drm_of_panel_bridge_remove(): fix device_node leak Luca Ceresoli
                   ` (12 more replies)
  0 siblings, 13 replies; 20+ messages in thread
From: Luca Ceresoli @ 2026-01-09  7:31 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Philippe Cornu, benjamin.gaignard, Andrzej Hajda,
	Neil Armstrong, Robert Foss, Laurent Pinchart, Jonas Karlman,
	Jernej Skrabec, Adrien Grassein, Liu Ying, Shawn Guo,
	Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, Inki Dae,
	Jagan Teki, Marek Szyprowski
  Cc: Hui Pu, Thomas Petazzoni, dri-devel, linux-kernel, imx,
	linux-arm-kernel, Luca Ceresoli, stable

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].

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/20250206-hotplug-drm-bridge-v6-0-9d6f2c9c3058@bootlin.com/#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 <luca.ceresoli@bootlin.com>
---
Changes in v2:
- Fix bug in samsung-dsim code, patch 10;
  update patch 12 on top of those changes
- Fix in imx8qxp-ldb code, patch 9
- Link to v1: https://lore.kernel.org/r/20260107-drm-bridge-alloc-getput-drm_of_find_bridge-2-v1-0-283d7bba061a@bootlin.com

---
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     | 12 ++++++++-
 drivers/gpu/drm/bridge/lontium-lt8912b.c     | 31 +++++++++++------------
 drivers/gpu/drm/bridge/samsung-dsim.c        | 37 +++++++++++++++++++---------
 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, 86 insertions(+), 65 deletions(-)
---
base-commit: 814b88f91b121246b35be9c519b537041fe3d178
change-id: 20251223-drm-bridge-alloc-getput-drm_of_find_bridge-2-12c6bbcb6896

Best regards,
-- 
Luca Ceresoli <luca.ceresoli@bootlin.com>


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2026-01-20 14:16 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-09  7:31 [PATCH v2 00/12] drm/bridge: convert users of of_drm_find_bridge(), part 2 Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 01/12] drm: of: drm_of_panel_bridge_remove(): fix device_node leak Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 02/12] drm: of: drm_of_panel_bridge_remove(): convert to of_drm_find_and_get_bridge() Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 03/12] drm/bridge: sii902x: " Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 04/12] drm/bridge: thc63lvd1024: " Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 05/12] drm/bridge: tfp410: " Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 06/12] drm/bridge: tpd12s015: " Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 07/12] drm/bridge: lt8912b: " Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 08/12] drm/bridge: imx8mp-hdmi-pvi: " Luca Ceresoli
2026-01-09  7:31 ` [PATCH v2 09/12] drm/bridge: imx8qxp-ldb: " Luca Ceresoli
2026-01-13 15:18   ` Maxime Ripard
2026-01-09  7:31 ` [PATCH v2 10/12] drm/bridge: samsung-dsim: samsung_dsim_host_attach: use a temporary variable for the next bridge Luca Ceresoli
2026-01-09  8:49   ` Marek Szyprowski
2026-01-13 15:42   ` Maxime Ripard
2026-01-09  7:31 ` [PATCH v2 11/12] drm/bridge: samsung-dsim: samsung_dsim_host_attach: don't use the bridge pointer as an error indicator Luca Ceresoli
2026-01-09  8:49   ` Marek Szyprowski
2026-01-09  7:31 ` [PATCH v2 12/12] drm/bridge: samsung-dsim: samsung_dsim_host_attach: convert to of_drm_find_and_get_bridge() Luca Ceresoli
2026-01-09  8:50   ` Marek Szyprowski
2026-01-13 15:44   ` Maxime Ripard
2026-01-20 14:15 ` [PATCH v2 00/12] drm/bridge: convert users of of_drm_find_bridge(), part 2 Luca Ceresoli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox