Hi ,

At 2025-04-25 02:59:08, "Luca Ceresoli" <luca.ceres...@bootlin.com> wrote:
>devm_drm_bridge_alloc() is the new API to be used for allocating (and
>partially initializing) a private driver struct embedding a struct
>drm_bridge.
>
>For many drivers having a simple code flow in the probe function, this
>commit does a mass conversion automatically with the following semantic
>patch. The changes have been reviewed manually for correctness as well as
>to find any false positives.
>
>  @@
>  type T;
>  identifier C;
>  identifier BR;
>  expression DEV;
>  expression FUNCS;
>  @@
>  -T *C;
>  +T *C;
>   ...
>  (
>  -C = devm_kzalloc(DEV, ...);
>  -if (!C)
>  -    return -ENOMEM;
>  +C = devm_drm_bridge_alloc(DEV, T, BR, FUNCS);
>  +if (IS_ERR(C))
>  +     return PTR_ERR(C);
>  |
>  -C = devm_kzalloc(DEV, ...);
>  -if (!C)
>  -    return ERR_PTR(-ENOMEM);
>  +C = devm_drm_bridge_alloc(DEV, T, BR, FUNCS);
>  +if (IS_ERR(C))
>  +     return PTR_ERR(C);
>  )
>   ...
>  -C->BR.funcs = FUNCS;
>
>Signed-off-by: Luca Ceresoli <luca.ceres...@bootlin.com>
>
>---
>
>Cc: Adam Ford <aford...@gmail.com>
>Cc: Adrien Grassein <adrien.grass...@gmail.com>
>Cc: Aleksandr Mishin <amis...@t-argos.ru>
>Cc: Andy Yan <andy....@rock-chips.com>
>Cc: AngeloGioacchino Del Regno <angelogioacchino.delre...@collabora.com>
>Cc: Benson Leung <ble...@chromium.org>
>Cc: Biju Das <biju.das...@bp.renesas.com>
>Cc: Christoph Fritz <chf.fr...@googlemail.com>
>Cc: Cristian Ciocaltea <cristian.ciocal...@collabora.com>
>Cc: Detlev Casanova <detlev.casan...@collabora.com>
>Cc: Dharma Balasubiramani <dharm...@microchip.com>
>Cc: Guenter Roeck <gro...@chromium.org>
>Cc: Heiko Stuebner <he...@sntech.de>
>Cc: Jani Nikula <jani.nik...@intel.com>
>Cc: Janne Grunau <j...@jannau.net>
>Cc: Jerome Brunet <jbru...@baylibre.com>
>Cc: Jesse Van Gavere <jesse...@gmail.com>
>Cc: Kevin Hilman <khil...@baylibre.com>
>Cc: Kieran Bingham <kieran.bingham+rene...@ideasonboard.com>
>Cc: Liu Ying <victor....@nxp.com>
>Cc: Manikandan Muralidharan <manikanda...@microchip.com>
>Cc: Martin Blumenstingl <martin.blumensti...@googlemail.com>
>Cc: Matthias Brugger <matthias....@gmail.com>
>Cc: Philipp Zabel <p.za...@pengutronix.de>
>Cc: Phong LE <p...@baylibre.com>
>Cc: Sasha Finkelstein <fnkl.ker...@gmail.com>
>Cc: Sugar Zhang <sugar.zh...@rock-chips.com>
>Cc: Sui Jingfeng <sui.jingf...@linux.dev>
>Cc: Tomi Valkeinen <tomi.valkeinen+rene...@ideasonboard.com>
>Cc: Vitalii Mordan <mor...@ispras.ru>
>
>Changed in v2:
>- added missing PTR_ERR() in the second spatch alternative
>---
> drivers/gpu/drm/adp/adp-mipi.c                      |  8 ++++----
> drivers/gpu/drm/bridge/adv7511/adv7511_drv.c        |  9 ++++-----
> drivers/gpu/drm/bridge/analogix/analogix-anx78xx.c  |  9 ++++-----
> drivers/gpu/drm/bridge/aux-bridge.c                 |  9 ++++-----
> drivers/gpu/drm/bridge/aux-hpd-bridge.c             |  9 +++++----
> drivers/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/fsl-ldb.c                    |  7 +++----
> 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/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/lvds-codec.c                 |  9 ++++-----
> drivers/gpu/drm/bridge/microchip-lvds.c             |  8 ++++----
> drivers/gpu/drm/bridge/nwl-dsi.c                    |  8 ++++----
> drivers/gpu/drm/bridge/parade-ps8622.c              |  9 ++++-----
> drivers/gpu/drm/bridge/parade-ps8640.c              |  9 ++++-----
> 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-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/tc358768.c                   |  9 ++++-----
> drivers/gpu/drm/bridge/tc358775.c                   |  9 ++++-----
> drivers/gpu/drm/bridge/thc63lvd1024.c               |  8 ++++----
> drivers/gpu/drm/bridge/ti-dlpc3433.c                |  9 ++++-----
> 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/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/renesas/rcar-du/rcar_lvds.c         |  9 ++++-----
> drivers/gpu/drm/renesas/rz-du/rzg2l_mipi_dsi.c      | 10 ++++------
> 49 files changed, 201 insertions(+), 237 deletions(-)
>

......

> 
>@@ -202,9 +203,6 @@ static int simple_bridge_probe(struct platform_device 
>*pdev)
>       if (IS_ERR(sbridge->enable))
>               return dev_err_probe(&pdev->dev, PTR_ERR(sbridge->enable),
>                                    "Unable to retrieve enable GPIO\n");
>-
>-      /* Register the bridge. */
>-      sbridge->bridge.funcs = &simple_bridge_bridge_funcs;
>       sbridge->bridge.of_node = pdev->dev.of_node;
>       sbridge->bridge.timings = sbridge->info->timings;
> 
>diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c 
>b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
>index 
>5e5f8c2f95be1f5c4633f1093b17a00f9425bb37..9b1dfdb5e7ee528c876c01916c9821d550cad679
> 100644
>--- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
>+++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi-qp.c
>@@ -1045,9 +1045,10 @@ struct dw_hdmi_qp *dw_hdmi_qp_bind(struct 
>platform_device *pdev,
>               return ERR_PTR(-ENODEV);
>       }
> 
>-      hdmi = devm_kzalloc(dev, sizeof(*hdmi), GFP_KERNEL);
>-      if (!hdmi)
>-              return ERR_PTR(-ENOMEM);
>+      hdmi = devm_drm_bridge_alloc(dev, struct dw_hdmi_qp, bridge,
>+                                   &dw_hdmi_qp_bridge_funcs);
>+      if (IS_ERR(hdmi))
>+              return PTR_ERR(hdmi);

           This should return hdmi or ERR_CAST(hdmi);


> 
>       hdmi->dev = dev;
> 
>@@ -1073,7 +1074,6 @@ struct dw_hdmi_qp *dw_hdmi_qp_bind(struct 
>platform_device *pdev,
>               return ERR_PTR(ret);
> 
>       hdmi->bridge.driver_private = hdmi;
>-      hdmi->bridge.funcs = &dw_hdmi_qp_bridge_funcs;
>       hdmi->bridge.ops = DRM_BRIDGE_OP_DETECT |
>                          DRM_BRIDGE_OP_EDID |
>                          DRM_BRIDGE_OP_HDMI |
>diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c 
>b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
>index 
>b08ada920a501d6a62f39581944a87019f5e5c15..87886235b8d3a85e0711f7763d048ad9eefd159a
> 100644
>--- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
>+++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi.c
>@@ -1194,9 +1194,10 @@ __dw_mipi_dsi_probe(struct platform_device *pdev,
>       struct dw_mipi_dsi *dsi;
>       int ret;
> 
>-      dsi = devm_kzalloc(dev, sizeof(*dsi), GFP_KERNEL);
>-      if (!dsi)
>-              return ERR_PTR(-ENOMEM);
>+      dsi = devm_drm_bridge_alloc(dev, struct dw_mipi_dsi, bridge,
>+                                  &dw_mipi_dsi_bridge_funcs);
>+      if (IS_ERR(dsi))
>+              return PTR_ERR(dsi);


This shoud return dsi or ERR_CAST(dsi);
> 
>       dsi->dev = dev;
>       dsi->plat_data = plat_data;
>@@ -1265,7 +1266,6 @@ __dw_mipi_dsi_probe(struct platform_device *pdev,
>       }
> 
>       dsi->bridge.driver_private = dsi;
>-      dsi->bridge.funcs = &dw_mipi_dsi_bridge_funcs;
>       dsi->bridge.of_node = pdev->dev.of_node;
> 
>       return dsi;
>diff --git a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c 
>b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c
>index 
>c76f5f2e74d14bd372f969c6c7832aa57f80772b..9f694f72b521912f5d4af46f2df2fc0fe3f776ea
> 100644
>--- a/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c
>+++ b/drivers/gpu/drm/bridge/synopsys/dw-mipi-dsi2.c
>@@ -914,9 +914,10 @@ __dw_mipi_dsi2_probe(struct platform_device *pdev,
>       struct dw_mipi_dsi2 *dsi2;
>       int ret;
> 
>-      dsi2 = devm_kzalloc(dev, sizeof(*dsi2), GFP_KERNEL);
>-      if (!dsi2)
>-              return ERR_PTR(-ENOMEM);
>+      dsi2 = devm_drm_bridge_alloc(dev, struct dw_mipi_dsi2, bridge,
>+                                   &dw_mipi_dsi2_bridge_funcs);
>+      if (IS_ERR(dsi2))
>+              return PTR_ERR(dsi2);

This should return dsi2 or ERR_CAST(dis2);

> 
>       dsi2->dev = dev;
>       dsi2->plat_data = plat_data;
>@@ -981,7 +982,6 @@ __dw_mipi_dsi2_probe(struct platform_device *pdev,
>       }
> 
>       dsi2->bridge.driver_private = dsi2;
>-      dsi2->bridge.funcs = &dw_mipi_dsi2_bridge_funcs;
>       dsi2->bridge.of_node = pdev->dev.of_node;
> 
>       return dsi2;
>
>       /* Init host device */
>
>-- 
>2.49.0

Reply via email to