public inbox for linux-arm-kernel@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH 00/10] drm/bridge: handle refcounting for bridge-only callers of drm_of_find_panel_or_bridge()
@ 2026-04-13 13:58 Luca Ceresoli
  2026-04-13 13:58 ` [PATCH 01/10] drm/bridge: add of_drm_get_bridge_by_endpoint() Luca Ceresoli
                   ` (9 more replies)
  0 siblings, 10 replies; 24+ messages in thread
From: Luca Ceresoli @ 2026-04-13 13:58 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Rob Clark, Dmitry Baryshkov, Abhinav Kumar,
	Jessica Zhang, Sean Paul, Marijn Suijten, Xinliang Liu, Tian Tao,
	Xinwei Kong, Sumit Semwal, Yongqin Liu, John Stultz,
	Andrzej Hajda, Neil Armstrong, Robert Foss, Laurent Pinchart,
	Jonas Karlman, Jernej Skrabec, Tomi Valkeinen, Michal Simek
  Cc: Hui Pu, Ian Ray, Thomas Petazzoni, dri-devel, linux-kernel,
	linux-arm-msm, freedreno, linux-arm-kernel, Luca Ceresoli

This series converts all the bridge-only callers of the deprecated
drm_of_find_panel_or_bridge() API to a new, simpler API that handles bridge
refcounting.

== Series description

 * The first patch introduces of_drm_get_bridge_by_endpoint() as a
   replacement for bridge-only calls to drm_of_find_panel_or_bridge(); the
   new function is simpler and returns a refcounted bridge
 * The following patches convert all bridge-only users to the new API
 * The last patch forbids new bridge-only calls to
   drm_of_find_panel_or_bridge()

== Grand plan

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() (v7.0),
               convert basic direct users (v7.0-v7.1)
          b. ✔ convert direct of_drm_get_bridge() users, part 2 (v7.0)
          c. ✔ convert direct of_drm_get_bridge() users, part 3 (v7.0)
          d. ✔… convert direct of_drm_get_bridge() users, part 4
                (some v7.1, some pending)
          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_bridge_enter/exit() to protect device resources (v7.0)
    B. … protect private_obj removal from list
    C. ✔ Add drm_bridge_clear_and_put() (v7.1)
 3. … DSI host-device driver interaction
 4. ✔ removing the need for the "always-disconnected" connector
 5. … Migrate i.MX LCDIF driver to bridge-connector
 6.   DRM bridge hotplug
    A.   Bridge hotplug management in the DRM core
    B.   Device tree description

[0] https://lore.kernel.org/lkml/20250206-hotplug-drm-bridge-v6-0-9d6f2c9c3058@bootlin.com/#t

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Luca Ceresoli (10):
      drm/bridge: add of_drm_get_bridge_by_endpoint()
      drm/msm/hdmi: switch to of_drm_get_bridge_by_endpoint()
      drm/hisilicon/kirin: switch to of_drm_get_bridge_by_endpoint()
      drm/bridge: chrontel-ch7033: switch to of_drm_get_bridge_by_endpoint()
      drm/bridge: lontium-lt9611uxc: switch to of_drm_get_bridge_by_endpoint()
      drm/bridge: lt9611: switch to of_drm_get_bridge_by_endpoint()
      drm/bridge: adv7511: switch to of_drm_get_bridge_by_endpoint()
      drm/bridge: lt8713sx: switch to of_drm_get_bridge_by_endpoint()
      drm: zynqmp_dp: switch to of_drm_get_bridge_by_endpoint()
      drm: of: forbid bridge-only calls to drm_of_find_panel_or_bridge()

 drivers/gpu/drm/bridge/adv7511/adv7511.h     |  1 -
 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c |  8 ++---
 drivers/gpu/drm/bridge/chrontel-ch7033.c     | 24 +++++++--------
 drivers/gpu/drm/bridge/lontium-lt8713sx.c    |  7 ++---
 drivers/gpu/drm/bridge/lontium-lt9611.c      |  5 ++-
 drivers/gpu/drm/bridge/lontium-lt9611uxc.c   |  5 ++-
 drivers/gpu/drm/drm_bridge.c                 | 46 ++++++++++++++++++++++++++++
 drivers/gpu/drm/drm_of.c                     | 26 ++++++++--------
 drivers/gpu/drm/hisilicon/kirin/dw_drm_dsi.c |  4 +--
 drivers/gpu/drm/msm/hdmi/hdmi.c              |  3 +-
 drivers/gpu/drm/xlnx/zynqmp_dp.c             | 10 +++---
 include/drm/drm_bridge.h                     |  9 ++++++
 12 files changed, 97 insertions(+), 51 deletions(-)
---
base-commit: f9ef69563cc82e908e1ce84fd135d3290fb65cde
change-id: 20260410-drm-bridge-alloc-getput-panel_or_bridge-42501b38eaad

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



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

end of thread, other threads:[~2026-04-14  7:02 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-13 13:58 [PATCH 00/10] drm/bridge: handle refcounting for bridge-only callers of drm_of_find_panel_or_bridge() Luca Ceresoli
2026-04-13 13:58 ` [PATCH 01/10] drm/bridge: add of_drm_get_bridge_by_endpoint() Luca Ceresoli
2026-04-13 14:58   ` Dmitry Baryshkov
2026-04-13 17:07     ` Luca Ceresoli
2026-04-13 17:56       ` Dmitry Baryshkov
2026-04-14  6:44         ` Luca Ceresoli
2026-04-13 13:58 ` [PATCH 02/10] drm/msm/hdmi: switch to of_drm_get_bridge_by_endpoint() Luca Ceresoli
2026-04-13 17:57   ` Dmitry Baryshkov
2026-04-13 18:10     ` Dmitry Baryshkov
2026-04-13 13:58 ` [PATCH 03/10] drm/hisilicon/kirin: " Luca Ceresoli
2026-04-13 13:58 ` [PATCH 04/10] drm/bridge: chrontel-ch7033: " Luca Ceresoli
2026-04-13 13:58 ` [PATCH 05/10] drm/bridge: lontium-lt9611uxc: " Luca Ceresoli
2026-04-13 18:01   ` Dmitry Baryshkov
2026-04-13 18:12     ` Dmitry Baryshkov
2026-04-13 13:58 ` [PATCH 06/10] drm/bridge: lt9611: " Luca Ceresoli
2026-04-13 18:18   ` Dmitry Baryshkov
2026-04-13 13:58 ` [PATCH 07/10] drm/bridge: adv7511: " Luca Ceresoli
2026-04-13 18:17   ` Dmitry Baryshkov
2026-04-13 13:58 ` [PATCH 08/10] drm/bridge: lt8713sx: " Luca Ceresoli
2026-04-13 18:18   ` Dmitry Baryshkov
2026-04-13 13:58 ` [PATCH 09/10] drm: zynqmp_dp: " Luca Ceresoli
2026-04-13 13:58 ` [PATCH 10/10] drm: of: forbid bridge-only calls to drm_of_find_panel_or_bridge() Luca Ceresoli
2026-04-13 18:04   ` Dmitry Baryshkov
2026-04-14  7:02     ` Luca Ceresoli

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