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.ceres...@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.ceres...@bootlin.com>