[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <656e493e.a551.1967c6d0c53.Coremail.andyshrk@163.com>
Date: Mon, 28 Apr 2025 20:44:03 +0800 (CST)
From: "Andy Yan" <andyshrk@....com>
To: "Luca Ceresoli" <luca.ceresoli@...tlin.com>
Cc: "Maarten Lankhorst" <maarten.lankhorst@...ux.intel.com>,
"Maxime Ripard" <mripard@...nel.org>,
"Thomas Zimmermann" <tzimmermann@...e.de>,
"David Airlie" <airlied@...il.com>,
"Simona Vetter" <simona@...ll.ch>,
"Andrzej Hajda" <andrzej.hajda@...el.com>,
"Neil Armstrong" <neil.armstrong@...aro.org>,
"Robert Foss" <rfoss@...nel.org>,
"Laurent Pinchart" <Laurent.pinchart@...asonboard.com>,
"Jonas Karlman" <jonas@...boo.se>,
"Jernej Skrabec" <jernej.skrabec@...il.com>,
"Jagan Teki" <jagan@...rulasolutions.com>,
"Shawn Guo" <shawnguo@...nel.org>,
"Sascha Hauer" <s.hauer@...gutronix.de>,
"Pengutronix Kernel Team" <kernel@...gutronix.de>,
"Fabio Estevam" <festevam@...il.com>,
"Douglas Anderson" <dianders@...omium.org>,
"Chun-Kuang Hu" <chunkuang.hu@...nel.org>,
"Krzysztof Kozlowski" <krzk@...nel.org>,
"Anusha Srivatsa" <asrivats@...hat.com>,
"Paul Kocialkowski" <paulk@...-base.io>,
"Dmitry Baryshkov" <lumag@...nel.org>,
"Hui Pu" <Hui.Pu@...ealthcare.com>,
"Thomas Petazzoni" <thomas.petazzoni@...tlin.com>,
dri-devel@...ts.freedesktop.org, asahi@...ts.linux.dev,
linux-kernel@...r.kernel.org, chrome-platform@...ts.linux.dev,
imx@...ts.linux.dev, linux-arm-kernel@...ts.infradead.org,
linux-mediatek@...ts.infradead.org,
linux-amlogic@...ts.infradead.org, linux-renesas-soc@...r.kernel.org,
platform-driver-x86@...r.kernel.org,
linux-samsung-soc@...r.kernel.org, linux-arm-msm@...r.kernel.org,
freedreno@...ts.freedesktop.org,
linux-stm32@...md-mailman.stormreply.com,
"Adam Ford" <aford173@...il.com>,
"Adrien Grassein" <adrien.grassein@...il.com>,
"Aleksandr Mishin" <amishin@...rgos.ru>,
"Andy Yan" <andy.yan@...k-chips.com>,
"AngeloGioacchino Del Regno" <angelogioacchino.delregno@...labora.com>,
"Benson Leung" <bleung@...omium.org>,
"Biju Das" <biju.das.jz@...renesas.com>,
"Christoph Fritz" <chf.fritz@...glemail.com>,
"Cristian Ciocaltea" <cristian.ciocaltea@...labora.com>,
"Detlev Casanova" <detlev.casanova@...labora.com>,
"Dharma Balasubiramani" <dharma.b@...rochip.com>,
"Guenter Roeck" <groeck@...omium.org>,
"Heiko Stuebner" <heiko@...ech.de>,
"Jani Nikula" <jani.nikula@...el.com>, "Janne Grunau" <j@...nau.net>,
"Jerome Brunet" <jbrunet@...libre.com>,
"Jesse Van Gavere" <jesseevg@...il.com>,
"Kevin Hilman" <khilman@...libre.com>,
"Kieran Bingham" <kieran.bingham+renesas@...asonboard.com>,
"Liu Ying" <victor.liu@....com>,
"Manikandan Muralidharan" <manikandan.m@...rochip.com>,
"Martin Blumenstingl" <martin.blumenstingl@...glemail.com>,
"Matthias Brugger" <matthias.bgg@...il.com>,
"Philipp Zabel" <p.zabel@...gutronix.de>,
"Phong LE" <ple@...libre.com>,
"Sasha Finkelstein" <fnkl.kernel@...il.com>,
"Sugar Zhang" <sugar.zhang@...k-chips.com>,
"Sui Jingfeng" <sui.jingfeng@...ux.dev>,
"Tomi Valkeinen" <tomi.valkeinen+renesas@...asonboard.com>,
"Vitalii Mordan" <mordan@...ras.ru>
Subject: Re:[PATCH v2 01/34] drm: convert many bridge drivers from
devm_kzalloc() to devm_drm_bridge_alloc() API
Hi ,
At 2025-04-25 02:59:08, "Luca Ceresoli" <luca.ceresoli@...tlin.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.ceresoli@...tlin.com>
>
>---
>
>Cc: Adam Ford <aford173@...il.com>
>Cc: Adrien Grassein <adrien.grassein@...il.com>
>Cc: Aleksandr Mishin <amishin@...rgos.ru>
>Cc: Andy Yan <andy.yan@...k-chips.com>
>Cc: AngeloGioacchino Del Regno <angelogioacchino.delregno@...labora.com>
>Cc: Benson Leung <bleung@...omium.org>
>Cc: Biju Das <biju.das.jz@...renesas.com>
>Cc: Christoph Fritz <chf.fritz@...glemail.com>
>Cc: Cristian Ciocaltea <cristian.ciocaltea@...labora.com>
>Cc: Detlev Casanova <detlev.casanova@...labora.com>
>Cc: Dharma Balasubiramani <dharma.b@...rochip.com>
>Cc: Guenter Roeck <groeck@...omium.org>
>Cc: Heiko Stuebner <heiko@...ech.de>
>Cc: Jani Nikula <jani.nikula@...el.com>
>Cc: Janne Grunau <j@...nau.net>
>Cc: Jerome Brunet <jbrunet@...libre.com>
>Cc: Jesse Van Gavere <jesseevg@...il.com>
>Cc: Kevin Hilman <khilman@...libre.com>
>Cc: Kieran Bingham <kieran.bingham+renesas@...asonboard.com>
>Cc: Liu Ying <victor.liu@....com>
>Cc: Manikandan Muralidharan <manikandan.m@...rochip.com>
>Cc: Martin Blumenstingl <martin.blumenstingl@...glemail.com>
>Cc: Matthias Brugger <matthias.bgg@...il.com>
>Cc: Philipp Zabel <p.zabel@...gutronix.de>
>Cc: Phong LE <ple@...libre.com>
>Cc: Sasha Finkelstein <fnkl.kernel@...il.com>
>Cc: Sugar Zhang <sugar.zhang@...k-chips.com>
>Cc: Sui Jingfeng <sui.jingfeng@...ux.dev>
>Cc: Tomi Valkeinen <tomi.valkeinen+renesas@...asonboard.com>
>Cc: Vitalii Mordan <mordan@...ras.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
Powered by blists - more mailing lists