imx.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH 00/34] drm: convert all bridges to devm_drm_bridge_alloc()
@ 2025-04-07 14:23 Luca Ceresoli
  2025-04-07 14:23 ` [PATCH 01/34] drm: convert many bridge drivers from devm_kzalloc() to devm_drm_bridge_alloc() API Luca Ceresoli
                   ` (33 more replies)
  0 siblings, 34 replies; 50+ messages in thread
From: Luca Ceresoli @ 2025-04-07 14:23 UTC (permalink / raw)
  To: Maarten Lankhorst, Maxime Ripard, Thomas Zimmermann, David Airlie,
	Simona Vetter, Andrzej Hajda, Neil Armstrong, Robert Foss,
	Laurent Pinchart, Jonas Karlman, Jernej Skrabec, Jagan Teki,
	Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam,
	Douglas Anderson, Chun-Kuang Hu, Krzysztof Kozlowski,
	Dmitry Baryshkov
  Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov,
	Hervé Codina, Hui Pu, Thomas Petazzoni, dri-devel, asahi,
	linux-kernel, chrome-platform, imx, linux-arm-kernel,
	linux-mediatek, linux-amlogic, linux-renesas-soc,
	platform-driver-x86, linux-samsung-soc, linux-arm-msm, freedreno,
	linux-stm32, Luca Ceresoli, Adam Ford, Adrien Grassein,
	Aleksandr Mishin, Andy Yan, AngeloGioacchino Del Regno,
	Benson Leung, Biju Das, Christoph Fritz, Cristian Ciocaltea,
	Detlev Casanova, Dharma Balasubiramani, Guenter Roeck,
	Heiko Stuebner, Jani Nikula, Janne Grunau, Jerome Brunet,
	Jesse Van Gavere, Kevin Hilman, Kieran Bingham, Liu Ying,
	Manikandan Muralidharan, Martin Blumenstingl, Matthias Brugger,
	Philipp Zabel, Phong LE, Sasha Finkelstein, Sugar Zhang,
	Sui Jingfeng, Tomi Valkeinen, Vitalii Mordan,
	Bryan O'Donoghue, Ilpo Järvinen, Hans de Goede,
	Uwe Kleine-König, Dmitry Baryshkov, Rob Herring (Arm),
	Hsin-Te Yuan, Pin-yen Lin, Xin Ji, Aradhya Bhatia, Tomi Valkeinen,
	Ian Ray, Martyn Welch, Peter Senna Tschudin, Russell King,
	Alim Akhtar, Inki Dae, Kyungmin Park, Seung-Woo Kim,
	Linus Walleij, Abhinav Kumar, Bjorn Andersson, Marijn Suijten,
	Rob Clark, Sean Paul, Helge Deller, Kuninori Morimoto,
	Laurent Pinchart, Alexandre Torgue, Maxime Coquelin,
	Philippe Cornu, Raphael Gallais-Pou, Yannick Fertre,
	Maíra Canal, Dave Stevenson, Raspberry Pi Kernel Maintenance,
	Alain Volmat, Raphael Gallais-Pou, Laurent Pinchart, Michal Simek

devm_drm_bridge_alloc() is the new API to allocate and initialize a DRM
bridge, and the only one supported from now on. It is also necessary for
implementing reference counting and thus needed to support removal of
bridges from a still existing DRM pipeline without use-after-free.

This series converts all DRM bridges to the new API.

Patch 1 uses a coccinelle semantic patch to mass-convert some of those
drivers -- thanks Maxime for having suggested the patch that served as a
starting point for me. I was unable to come up with a better patch
converting more drivers though, so I converted all others manually. Most of
them were trivial. I left the non-trivial ones at the end of the series to
help reviewers know where to look at more carefully.

Due to the large number of touched files, the list of recipients generated
by get_maintainers (b4 actually) was huge, 60~70 people (not counting
mailing lists), so I took the liberty of trimming the list as reasonably as
I could to DRM maintainers and frequent contributors, and added all other
recipients individually per-patch. I hope this is fine. Don't hesitate to
suggest more people which should be Cc-ed in a future series, or a better
Cc policy.

Current plan and status of the DRM bridge refcounting work:

 A. ✔ add new alloc API and refcounting -> (now in drm-misc-next)
 B. ➜ convert all bridge drivers to new API (this series)
 C. documentation, kunit tests, debugfs improvements
 D. after (B), add get/put to drm_bridge_add/remove() + attach/detech()
 E. after (B), convert accessors; this is a large work and can be done
    in chunks

Luca

Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Luca Ceresoli (34):
      drm: convert many bridge drivers from devm_kzalloc() to devm_drm_bridge_alloc() API
      platform: arm64: acer-aspire1-ec: convert to devm_drm_bridge_alloc() API
      drm/bridge: analogix-anx6345: convert to devm_drm_bridge_alloc() API
      drm/bridge: anx7625: convert to devm_drm_bridge_alloc() API
      drm/bridge: cdns-dsi: convert to devm_drm_bridge_alloc() API
      drm/bridge: display-connector: convert to devm_drm_bridge_alloc() API
      drm/bridge: lt9611uxc: convert to devm_drm_bridge_alloc() API
      drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: convert to devm_drm_bridge_alloc() API
      drm/bridge: nxp-ptn3460: convert to devm_drm_bridge_alloc() API
      drm/bridge: sii902x: convert to devm_drm_bridge_alloc() API
      drm/bridge: dw-hdmi: convert to devm_drm_bridge_alloc() API
      drm/bridge: tda998x: convert to devm_drm_bridge_alloc() API
      drm/bridge: ti-sn65dsi86: convert to devm_drm_bridge_alloc() API
      drm/exynos: mic: convert to devm_drm_bridge_alloc() API
      drm/mcde: convert to devm_drm_bridge_alloc() API
      drm/msm/dp: convert to devm_drm_bridge_alloc() API
      drm/msm/dsi: convert to devm_drm_bridge_alloc() API
      drm/msm/hdmi: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: dpi: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: dsi: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: hdmi4: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: hdmi5: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: sdi: convert to devm_drm_bridge_alloc() API
      drm/omap: dss: venc: convert to devm_drm_bridge_alloc() API
      drm/rcar-du: dsi: convert to devm_drm_bridge_alloc() API
      drm/bridge: stm_lvds: convert to devm_drm_bridge_alloc() API
      drm/vc4: convert to devm_drm_bridge_alloc() API
      drm/sti: dvo: convert to devm_drm_bridge_alloc() API
      drm: zynqmp_dp: convert to devm_drm_bridge_alloc() API
      drm/bridge: imx8qxp-pixel-combiner: convert to devm_drm_bridge_alloc() API
      drm/bridge: imx8*-ldb: convert to devm_drm_bridge_alloc() API
      drm/bridge: tc358767: convert to devm_drm_bridge_alloc() API
      drm/bridge: add devm_drm_put_bridge()
      drm/bridge: panel: convert to devm_drm_bridge_alloc() API

 drivers/gpu/drm/adp/adp-mipi.c                     |  8 ++--
 drivers/gpu/drm/bridge/adv7511/adv7511_drv.c       |  9 ++--
 drivers/gpu/drm/bridge/analogix/analogix-anx6345.c |  8 ++--
 drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c |  9 ++--
 drivers/gpu/drm/bridge/analogix/anx7625.c          |  7 ++-
 drivers/gpu/drm/bridge/aux-bridge.c                |  9 ++--
 drivers/gpu/drm/bridge/aux-hpd-bridge.c            |  9 ++--
 drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c     |  8 ++--
 .../gpu/drm/bridge/cadence/cdns-mhdp8546-core.c    |  8 ++--
 drivers/gpu/drm/bridge/chipone-icn6211.c           |  9 ++--
 drivers/gpu/drm/bridge/chrontel-ch7033.c           |  8 ++--
 drivers/gpu/drm/bridge/cros-ec-anx7688.c           |  9 ++--
 drivers/gpu/drm/bridge/display-connector.c         |  8 ++--
 drivers/gpu/drm/bridge/fsl-ldb.c                   |  7 ++-
 drivers/gpu/drm/bridge/imx/imx-ldb-helper.c        |  4 +-
 drivers/gpu/drm/bridge/imx/imx-ldb-helper.h        |  3 +-
 drivers/gpu/drm/bridge/imx/imx-legacy-bridge.c     |  9 ++--
 drivers/gpu/drm/bridge/imx/imx8mp-hdmi-pvi.c       | 10 ++--
 drivers/gpu/drm/bridge/imx/imx8qm-ldb.c            | 32 ++++++++-----
 drivers/gpu/drm/bridge/imx/imx8qxp-ldb.c           | 20 +++++---
 .../gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c    | 18 ++++---
 drivers/gpu/drm/bridge/imx/imx8qxp-pixel-link.c    |  8 ++--
 drivers/gpu/drm/bridge/imx/imx8qxp-pxl2dpi.c       |  8 ++--
 drivers/gpu/drm/bridge/ite-it6263.c                |  9 ++--
 drivers/gpu/drm/bridge/ite-it6505.c                |  9 ++--
 drivers/gpu/drm/bridge/ite-it66121.c               |  9 ++--
 drivers/gpu/drm/bridge/lontium-lt8912b.c           |  9 ++--
 drivers/gpu/drm/bridge/lontium-lt9211.c            |  8 ++--
 drivers/gpu/drm/bridge/lontium-lt9611.c            |  9 ++--
 drivers/gpu/drm/bridge/lontium-lt9611uxc.c         |  7 ++-
 drivers/gpu/drm/bridge/lvds-codec.c                |  9 ++--
 .../drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c   | 11 ++---
 drivers/gpu/drm/bridge/microchip-lvds.c            |  8 ++--
 drivers/gpu/drm/bridge/nwl-dsi.c                   |  8 ++--
 drivers/gpu/drm/bridge/nxp-ptn3460.c               |  9 ++--
 drivers/gpu/drm/bridge/panel.c                     | 11 ++---
 drivers/gpu/drm/bridge/parade-ps8622.c             |  9 ++--
 drivers/gpu/drm/bridge/parade-ps8640.c             |  9 ++--
 drivers/gpu/drm/bridge/sii902x.c                   |  7 ++-
 drivers/gpu/drm/bridge/sii9234.c                   |  9 ++--
 drivers/gpu/drm/bridge/sil-sii8620.c               |  9 ++--
 drivers/gpu/drm/bridge/simple-bridge.c             | 10 ++--
 drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c       |  8 ++--
 drivers/gpu/drm/bridge/synopsys/dw-hdmi.c          |  7 ++-
 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c      |  8 ++--
 drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c     |  8 ++--
 drivers/gpu/drm/bridge/tc358762.c                  |  9 ++--
 drivers/gpu/drm/bridge/tc358764.c                  |  9 ++--
 drivers/gpu/drm/bridge/tc358767.c                  | 56 +++++++++++++++-------
 drivers/gpu/drm/bridge/tc358768.c                  |  9 ++--
 drivers/gpu/drm/bridge/tc358775.c                  |  9 ++--
 drivers/gpu/drm/bridge/tda998x_drv.c               |  7 ++-
 drivers/gpu/drm/bridge/thc63lvd1024.c              |  8 ++--
 drivers/gpu/drm/bridge/ti-dlpc3433.c               |  9 ++--
 drivers/gpu/drm/bridge/ti-sn65dsi86.c              |  7 ++-
 drivers/gpu/drm/bridge/ti-tdp158.c                 |  8 ++--
 drivers/gpu/drm/bridge/ti-tfp410.c                 |  9 ++--
 drivers/gpu/drm/bridge/ti-tpd12s015.c              |  9 ++--
 drivers/gpu/drm/drm_bridge.c                       | 14 ++++++
 drivers/gpu/drm/exynos/exynos_drm_mic.c            |  7 ++-
 drivers/gpu/drm/mcde/mcde_dsi.c                    |  7 ++-
 drivers/gpu/drm/mediatek/mtk_dp.c                  |  9 ++--
 drivers/gpu/drm/mediatek/mtk_dpi.c                 |  9 ++--
 drivers/gpu/drm/mediatek/mtk_dsi.c                 |  9 ++--
 drivers/gpu/drm/mediatek/mtk_hdmi.c                |  9 ++--
 drivers/gpu/drm/meson/meson_encoder_cvbs.c         | 12 ++---
 drivers/gpu/drm/meson/meson_encoder_dsi.c          | 12 ++---
 drivers/gpu/drm/meson/meson_encoder_hdmi.c         | 12 ++---
 drivers/gpu/drm/msm/dp/dp_drm.c                    |  9 ++--
 drivers/gpu/drm/msm/dsi/dsi_manager.c              |  9 ++--
 drivers/gpu/drm/msm/hdmi/hdmi_bridge.c             |  9 ++--
 drivers/gpu/drm/omapdrm/dss/dpi.c                  |  7 ++-
 drivers/gpu/drm/omapdrm/dss/dsi.c                  |  7 ++-
 drivers/gpu/drm/omapdrm/dss/hdmi4.c                | 26 ++++------
 drivers/gpu/drm/omapdrm/dss/hdmi5.c                | 26 ++++------
 drivers/gpu/drm/omapdrm/dss/sdi.c                  | 25 ++++------
 drivers/gpu/drm/omapdrm/dss/venc.c                 | 23 ++++-----
 drivers/gpu/drm/renesas/rcar-du/rcar_lvds.c        |  9 ++--
 drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c    |  8 ++--
 drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c     | 10 ++--
 drivers/gpu/drm/sti/sti_dvo.c                      | 29 +++++------
 drivers/gpu/drm/stm/lvds.c                         |  7 ++-
 drivers/gpu/drm/vc4/vc4_dsi.c                      | 30 ++----------
 drivers/gpu/drm/xlnx/zynqmp_dp.c                   |  7 ++-
 drivers/platform/arm64/acer-aspire1-ec.c           |  7 ++-
 include/drm/drm_bridge.h                           |  4 ++
 86 files changed, 438 insertions(+), 491 deletions(-)
---
base-commit: 0bed7a4df3efaeaeec3e48fa1dfa3aefc1b07e37
change-id: 20250404-drm-bridge-convert-to-alloc-api-614becf62294

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


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

end of thread, other threads:[~2025-05-25 12:59 UTC | newest]

Thread overview: 50+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-07 14:23 [PATCH 00/34] drm: convert all bridges to devm_drm_bridge_alloc() Luca Ceresoli
2025-04-07 14:23 ` [PATCH 01/34] drm: convert many bridge drivers from devm_kzalloc() to devm_drm_bridge_alloc() API Luca Ceresoli
2025-05-25 12:58   ` Adam Ford
2025-04-07 14:23 ` [PATCH 02/34] platform: arm64: acer-aspire1-ec: convert " Luca Ceresoli
2025-04-07 16:46   ` Ilpo Järvinen
2025-04-07 19:27     ` Luca Ceresoli
2025-04-07 14:23 ` [PATCH 03/34] drm/bridge: analogix-anx6345: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 04/34] drm/bridge: anx7625: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 05/34] drm/bridge: cdns-dsi: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 06/34] drm/bridge: display-connector: " Luca Ceresoli
2025-04-08 12:06   ` Dmitry Baryshkov
2025-04-07 14:23 ` [PATCH 07/34] drm/bridge: lt9611uxc: " Luca Ceresoli
2025-04-08 12:07   ` Dmitry Baryshkov
2025-04-07 14:23 ` [PATCH 08/34] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 09/34] drm/bridge: nxp-ptn3460: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 10/34] drm/bridge: sii902x: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 11/34] drm/bridge: dw-hdmi: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 12/34] drm/bridge: tda998x: " Luca Ceresoli
2025-04-08 12:07   ` Dmitry Baryshkov
2025-04-07 14:23 ` [PATCH 13/34] drm/bridge: ti-sn65dsi86: " Luca Ceresoli
2025-04-07 15:25   ` Herve Codina
2025-04-07 14:23 ` [PATCH 14/34] drm/exynos: mic: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 15/34] drm/mcde: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 16/34] drm/msm/dp: " Luca Ceresoli
2025-04-08 11:59   ` Dmitry Baryshkov
2025-04-07 14:23 ` [PATCH 17/34] drm/msm/dsi: " Luca Ceresoli
2025-04-08 11:59   ` Dmitry Baryshkov
2025-04-07 14:23 ` [PATCH 18/34] drm/msm/hdmi: " Luca Ceresoli
2025-04-08 11:59   ` Dmitry Baryshkov
2025-04-07 14:23 ` [PATCH 19/34] drm/omap: dss: dpi: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 20/34] drm/omap: dss: dsi: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 21/34] drm/omap: dss: hdmi4: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 22/34] drm/omap: dss: hdmi5: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 23/34] drm/omap: dss: sdi: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 24/34] drm/omap: dss: venc: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 25/34] drm/rcar-du: dsi: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 26/34] drm/bridge: stm_lvds: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 27/34] drm/vc4: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 28/34] drm/sti: dvo: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 29/34] drm: zynqmp_dp: " Luca Ceresoli
2025-04-16 12:26   ` Tomi Valkeinen
2025-04-16 12:31   ` Tomi Valkeinen
2025-04-24 11:28     ` Luca Ceresoli
2025-04-07 14:23 ` [PATCH 30/34] drm/bridge: imx8qxp-pixel-combiner: " Luca Ceresoli
2025-04-07 14:23 ` [PATCH 31/34] drm/bridge: imx8*-ldb: " Luca Ceresoli
2025-04-07 15:24 ` [PATCH 32/34] drm/bridge: tc358767: " Luca Ceresoli
2025-04-07 15:27 ` [PATCH 33/34] drm/bridge: add devm_drm_put_bridge() Luca Ceresoli
2025-04-07 15:27 ` [PATCH 34/34] drm/bridge: panel: convert to devm_drm_bridge_alloc() API Luca Ceresoli
2025-04-08 15:51   ` Maxime Ripard
2025-04-24 15:18     ` Luca Ceresoli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).