* [PATCH v3 01/22] Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API"
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 03/22] drm/bridge: anx7625: convert to devm_drm_bridge_alloc() API Luca Ceresoli
` (19 subsequent siblings)
20 siblings, 0 replies; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Louis Chauvet, Alim Akhtar, Inki Dae, Kyungmin Park,
Seung-Woo Kim
This reverts commit 3be618fab0e31b086cd6456280293119bb20fd41.
This patch has been applied by mistake without needed review/ack by
maintainers.
---
Cc: Louis Chauvet <louis.chauvet@bootlin.com>
Cc: Alim Akhtar <alim.akhtar@samsung.com>
Cc: Inki Dae <inki.dae@samsung.com>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
---
drivers/gpu/drm/exynos/exynos_drm_mic.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/exynos/exynos_drm_mic.c b/drivers/gpu/drm/exynos/exynos_drm_mic.c
index 29a8366513fa70655c6ceec9a09db0158e7bb169..b34ec67283370e3fa836c7df06e12e2fba524622 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_mic.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_mic.c
@@ -379,11 +379,11 @@ static int exynos_mic_probe(struct platform_device *pdev)
struct resource res;
int ret, i;
- mic = devm_drm_bridge_alloc(dev, struct exynos_mic, bridge, &mic_bridge_funcs);
- if (IS_ERR(mic)) {
+ mic = devm_kzalloc(dev, sizeof(*mic), GFP_KERNEL);
+ if (!mic) {
DRM_DEV_ERROR(dev,
"mic: Failed to allocate memory for MIC object\n");
- ret = PTR_ERR(mic);
+ ret = -ENOMEM;
goto err;
}
@@ -421,6 +421,7 @@ static int exynos_mic_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, mic);
+ mic->bridge.funcs = &mic_bridge_funcs;
mic->bridge.of_node = dev->of_node;
drm_bridge_add(&mic->bridge);
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 03/22] drm/bridge: anx7625: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
2025-05-09 13:53 ` [PATCH v3 01/22] Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API" Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:43 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 04/22] drm/bridge: cdns-dsi: " Luca Ceresoli
` (18 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Rob Herring (Arm), Hsin-Te Yuan, Jani Nikula, Pin-yen Lin,
Sui Jingfeng, Xin Ji
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: "Rob Herring (Arm)" <robh@kernel.org>
Cc: Hsin-Te Yuan <yuanhsinte@chromium.org>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Pin-yen Lin <treapking@chromium.org>
Cc: Sui Jingfeng <sui.jingfeng@linux.dev>
Cc: Xin Ji <xji@analogixsemi.com>
---
drivers/gpu/drm/bridge/analogix/anx7625.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/analogix/anx7625.c b/drivers/gpu/drm/bridge/analogix/anx7625.c
index 8a9079c2ed5c22565d0733ef899119e347947d21..0ac4a82c5a6e5e665d913674b664905a96c0d8e6 100644
--- a/drivers/gpu/drm/bridge/analogix/anx7625.c
+++ b/drivers/gpu/drm/bridge/analogix/anx7625.c
@@ -2596,7 +2596,6 @@ static int anx7625_link_bridge(struct drm_dp_aux *aux)
return ret;
}
- platform->bridge.funcs = &anx7625_bridge_funcs;
platform->bridge.of_node = dev->of_node;
if (!anx7625_of_panel_on_aux_bus(dev))
platform->bridge.ops |= DRM_BRIDGE_OP_EDID;
@@ -2630,10 +2629,10 @@ static int anx7625_i2c_probe(struct i2c_client *client)
return -ENODEV;
}
- platform = devm_kzalloc(dev, sizeof(*platform), GFP_KERNEL);
- if (!platform) {
+ platform = devm_drm_bridge_alloc(dev, struct anx7625_data, bridge, &anx7625_bridge_funcs);
+ if (IS_ERR(platform)) {
DRM_DEV_ERROR(dev, "fail to allocate driver data\n");
- return -ENOMEM;
+ return PTR_ERR(platform);
}
pdata = &platform->pdata;
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 04/22] drm/bridge: cdns-dsi: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
2025-05-09 13:53 ` [PATCH v3 01/22] Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API" Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 03/22] drm/bridge: anx7625: convert to devm_drm_bridge_alloc() API Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:44 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 05/22] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Luca Ceresoli
` (17 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Aradhya Bhatia, Tomi Valkeinen
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Aradhya Bhatia <a-bhatia1@ti.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
index b022dd6e6b6e9e43bf11583806e1a8d1e7431ae8..7604574da66606c103cc035dd94b0e211b64ebdc 100644
--- a/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
+++ b/drivers/gpu/drm/bridge/cadence/cdns-dsi-core.c
@@ -1289,9 +1289,10 @@ static int cdns_dsi_drm_probe(struct platform_device *pdev)
int ret, irq;
u32 val;
- dsi = devm_kzalloc(&pdev->dev, sizeof(*dsi), GFP_KERNEL);
- if (!dsi)
- return -ENOMEM;
+ dsi = devm_drm_bridge_alloc(&pdev->dev, struct cdns_dsi, input.bridge,
+ &cdns_dsi_bridge_funcs);
+ if (IS_ERR(dsi))
+ return PTR_ERR(dsi);
platform_set_drvdata(pdev, dsi);
@@ -1349,7 +1350,6 @@ static int cdns_dsi_drm_probe(struct platform_device *pdev)
* CDNS_DPI_INPUT.
*/
input->id = CDNS_DPI_INPUT;
- input->bridge.funcs = &cdns_dsi_bridge_funcs;
input->bridge.of_node = pdev->dev.of_node;
/* Mask all interrupts before registering the IRQ handler. */
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 05/22] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (2 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 04/22] drm/bridge: cdns-dsi: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:52 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 06/22] drm/bridge: nxp-ptn3460: " Luca Ceresoli
` (16 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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, Ian Ray,
Martyn Welch, Peter Senna Tschudin
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Ian Ray <ian.ray@gehealthcare.com>
Cc: Martyn Welch <martyn.welch@collabora.co.uk>
Cc: Peter Senna Tschudin <peter.senna@gmail.com>
Changed in v3:
- updated Ian Ray's e-mail (old one is bouncing
Changed in v2: none
---
drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c | 11 ++++-------
1 file changed, 4 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
index 15a5a1f644fc10182c55bc9e489ccb81d4f924f9..81dde9ed7bcf7cacae000d9da31a3a5c347ce037 100644
--- a/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
+++ b/drivers/gpu/drm/bridge/megachips-stdpxxxx-ge-b850v3-fw.c
@@ -225,13 +225,11 @@ static int ge_b850v3_lvds_init(struct device *dev)
if (ge_b850v3_lvds_ptr)
goto success;
- ge_b850v3_lvds_ptr = devm_kzalloc(dev,
- sizeof(*ge_b850v3_lvds_ptr),
- GFP_KERNEL);
-
- if (!ge_b850v3_lvds_ptr) {
+ ge_b850v3_lvds_ptr = devm_drm_bridge_alloc(dev, struct ge_b850v3_lvds, bridge,
+ &ge_b850v3_lvds_funcs);
+ if (IS_ERR(ge_b850v3_lvds_ptr)) {
mutex_unlock(&ge_b850v3_lvds_dev_mutex);
- return -ENOMEM;
+ return PTR_ERR(ge_b850v3_lvds_ptr);
}
success:
@@ -264,7 +262,6 @@ static int ge_b850v3_register(void)
struct device *dev = &stdp4028_i2c->dev;
/* drm bridge initialization */
- ge_b850v3_lvds_ptr->bridge.funcs = &ge_b850v3_lvds_funcs;
ge_b850v3_lvds_ptr->bridge.ops = DRM_BRIDGE_OP_DETECT |
DRM_BRIDGE_OP_EDID;
ge_b850v3_lvds_ptr->bridge.type = DRM_MODE_CONNECTOR_DisplayPort;
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 06/22] drm/bridge: nxp-ptn3460: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (3 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 05/22] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:52 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 07/22] drm/bridge: sii902x: " Luca Ceresoli
` (15 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
drivers/gpu/drm/bridge/nxp-ptn3460.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/bridge/nxp-ptn3460.c b/drivers/gpu/drm/bridge/nxp-ptn3460.c
index 25d7c415478b14ef634bff4185a8dd8e866be0c6..7acb11f16dc19e87a84cc765b1cebef158662c00 100644
--- a/drivers/gpu/drm/bridge/nxp-ptn3460.c
+++ b/drivers/gpu/drm/bridge/nxp-ptn3460.c
@@ -261,10 +261,10 @@ static int ptn3460_probe(struct i2c_client *client)
struct drm_bridge *panel_bridge;
int ret;
- ptn_bridge = devm_kzalloc(dev, sizeof(*ptn_bridge), GFP_KERNEL);
- if (!ptn_bridge) {
- return -ENOMEM;
- }
+ ptn_bridge = devm_drm_bridge_alloc(dev, struct ptn3460_bridge, bridge,
+ &ptn3460_bridge_funcs);
+ if (IS_ERR(ptn_bridge))
+ return PTR_ERR(ptn_bridge);
panel_bridge = devm_drm_of_get_bridge(dev, dev->of_node, 0, 0);
if (IS_ERR(panel_bridge))
@@ -300,7 +300,6 @@ static int ptn3460_probe(struct i2c_client *client)
return ret;
}
- ptn_bridge->bridge.funcs = &ptn3460_bridge_funcs;
ptn_bridge->bridge.ops = DRM_BRIDGE_OP_EDID;
ptn_bridge->bridge.type = DRM_MODE_CONNECTOR_LVDS;
ptn_bridge->bridge.of_node = dev->of_node;
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 07/22] drm/bridge: sii902x: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (4 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 06/22] drm/bridge: nxp-ptn3460: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:52 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 08/22] drm/omap: dss: dpi: " Luca Ceresoli
` (14 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
drivers/gpu/drm/bridge/sii902x.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/bridge/sii902x.c b/drivers/gpu/drm/bridge/sii902x.c
index 6de61d9fe06487856e8b3c32db3c8d8c25633fd8..882973e900628c0d972d32cd4ff3588432daa8e9 100644
--- a/drivers/gpu/drm/bridge/sii902x.c
+++ b/drivers/gpu/drm/bridge/sii902x.c
@@ -1135,7 +1135,6 @@ static int sii902x_init(struct sii902x *sii902x)
if (ret)
goto err_unreg_audio;
- sii902x->bridge.funcs = &sii902x_bridge_funcs;
sii902x->bridge.of_node = dev->of_node;
sii902x->bridge.timings = &default_sii902x_timings;
sii902x->bridge.ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID;
@@ -1170,9 +1169,9 @@ static int sii902x_probe(struct i2c_client *client)
return -EIO;
}
- sii902x = devm_kzalloc(dev, sizeof(*sii902x), GFP_KERNEL);
- if (!sii902x)
- return -ENOMEM;
+ sii902x = devm_drm_bridge_alloc(dev, struct sii902x, bridge, &sii902x_bridge_funcs);
+ if (IS_ERR(sii902x))
+ return PTR_ERR(sii902x);
sii902x->i2c = client;
sii902x->regmap = devm_regmap_init_i2c(client, &sii902x_regmap_config);
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 08/22] drm/omap: dss: dpi: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (5 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 07/22] drm/bridge: sii902x: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:54 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 09/22] drm/omap: dss: dsi: " Luca Ceresoli
` (13 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Rob Herring (Arm), Helge Deller, Kuninori Morimoto,
Tomi Valkeinen
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: "Rob Herring (Arm)" <robh@kernel.org>
Cc: Helge Deller <deller@gmx.de>
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
drivers/gpu/drm/omapdrm/dss/dpi.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/dpi.c b/drivers/gpu/drm/omapdrm/dss/dpi.c
index 6eff97a091602f6d137095b3b7bf54fce17e8d3e..9f86db774c395db7e3396cbf2694748fc23c309d 100644
--- a/drivers/gpu/drm/omapdrm/dss/dpi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dpi.c
@@ -562,7 +562,6 @@ static const struct drm_bridge_funcs dpi_bridge_funcs = {
static void dpi_bridge_init(struct dpi_data *dpi)
{
- dpi->bridge.funcs = &dpi_bridge_funcs;
dpi->bridge.of_node = dpi->pdev->dev.of_node;
dpi->bridge.type = DRM_MODE_CONNECTOR_DPI;
@@ -707,9 +706,9 @@ int dpi_init_port(struct dss_device *dss, struct platform_device *pdev,
u32 datalines;
int r;
- dpi = devm_kzalloc(&pdev->dev, sizeof(*dpi), GFP_KERNEL);
- if (!dpi)
- return -ENOMEM;
+ dpi = devm_drm_bridge_alloc(&pdev->dev, struct dpi_data, bridge, &dpi_bridge_funcs);
+ if (IS_ERR(dpi))
+ return PTR_ERR(dpi);
ep = of_graph_get_next_port_endpoint(port, NULL);
if (!ep)
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 09/22] drm/omap: dss: dsi: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (6 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 08/22] drm/omap: dss: dpi: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:54 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 10/22] drm/omap: dss: hdmi4: " Luca Ceresoli
` (12 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Tomi Valkeinen
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
drivers/gpu/drm/omapdrm/dss/dsi.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/dsi.c b/drivers/gpu/drm/omapdrm/dss/dsi.c
index 91ee63bfe0bc73e28877d0383812225867e167a4..b129e5a8d791507098c7b8d1bc54f54c4b453954 100644
--- a/drivers/gpu/drm/omapdrm/dss/dsi.c
+++ b/drivers/gpu/drm/omapdrm/dss/dsi.c
@@ -4701,7 +4701,6 @@ static const struct drm_bridge_funcs dsi_bridge_funcs = {
static void dsi_bridge_init(struct dsi_data *dsi)
{
- dsi->bridge.funcs = &dsi_bridge_funcs;
dsi->bridge.of_node = dsi->host.dev->of_node;
dsi->bridge.type = DRM_MODE_CONNECTOR_DSI;
@@ -4894,9 +4893,9 @@ static int dsi_probe(struct platform_device *pdev)
unsigned int i;
int r;
- dsi = devm_kzalloc(dev, sizeof(*dsi), GFP_KERNEL);
- if (!dsi)
- return -ENOMEM;
+ dsi = devm_drm_bridge_alloc(dev, struct dsi_data, bridge, &dsi_bridge_funcs);
+ if (IS_ERR(dsi))
+ return PTR_ERR(dsi);
dsi->dev = dev;
dev_set_drvdata(dev, dsi);
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 10/22] drm/omap: dss: hdmi4: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (7 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 09/22] drm/omap: dss: dsi: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:54 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 11/22] drm/omap: dss: hdmi5: " Luca Ceresoli
` (11 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Tomi Valkeinen
This is the new API for allocating DRM bridges.
Switching from a non-devm to a devm allocation allows removing the kfree()
in the remove function and in the probe error management code, and as a
consequence to simplify the code flow by removing now unnecessary gotos.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
drivers/gpu/drm/omapdrm/dss/hdmi4.c | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi4.c b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
index a3b22952fdc32b5899dae82d413108c5c0a1c3c8..3cd612af24498b057c33eaecb3d43c8df76cd23e 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi4.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi4.c
@@ -505,7 +505,6 @@ static const struct drm_bridge_funcs hdmi4_bridge_funcs = {
static void hdmi4_bridge_init(struct omap_hdmi *hdmi)
{
- hdmi->bridge.funcs = &hdmi4_bridge_funcs;
hdmi->bridge.of_node = hdmi->pdev->dev.of_node;
hdmi->bridge.ops = DRM_BRIDGE_OP_EDID;
hdmi->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
@@ -761,9 +760,9 @@ static int hdmi4_probe(struct platform_device *pdev)
int irq;
int r;
- hdmi = kzalloc(sizeof(*hdmi), GFP_KERNEL);
- if (!hdmi)
- return -ENOMEM;
+ hdmi = devm_drm_bridge_alloc(&pdev->dev, struct omap_hdmi, bridge, &hdmi4_bridge_funcs);
+ if (IS_ERR(hdmi))
+ return PTR_ERR(hdmi);
hdmi->pdev = pdev;
@@ -774,25 +773,24 @@ static int hdmi4_probe(struct platform_device *pdev)
r = hdmi4_probe_of(hdmi);
if (r)
- goto err_free;
+ return r;
r = hdmi_wp_init(pdev, &hdmi->wp, 4);
if (r)
- goto err_free;
+ return r;
r = hdmi_phy_init(pdev, &hdmi->phy, 4);
if (r)
- goto err_free;
+ return r;
r = hdmi4_core_init(pdev, &hdmi->core);
if (r)
- goto err_free;
+ return r;
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
DSSERR("platform_get_irq failed\n");
- r = -ENODEV;
- goto err_free;
+ return -ENODEV;
}
r = devm_request_threaded_irq(&pdev->dev, irq,
@@ -800,7 +798,7 @@ static int hdmi4_probe(struct platform_device *pdev)
IRQF_ONESHOT, "OMAP HDMI", hdmi);
if (r) {
DSSERR("HDMI IRQ request failed\n");
- goto err_free;
+ return r;
}
hdmi->vdda_reg = devm_regulator_get(&pdev->dev, "vdda");
@@ -808,7 +806,7 @@ static int hdmi4_probe(struct platform_device *pdev)
r = PTR_ERR(hdmi->vdda_reg);
if (r != -EPROBE_DEFER)
DSSERR("can't get VDDA regulator\n");
- goto err_free;
+ return r;
}
pm_runtime_enable(&pdev->dev);
@@ -827,8 +825,6 @@ static int hdmi4_probe(struct platform_device *pdev)
hdmi4_uninit_output(hdmi);
err_pm_disable:
pm_runtime_disable(&pdev->dev);
-err_free:
- kfree(hdmi);
return r;
}
@@ -841,8 +837,6 @@ static void hdmi4_remove(struct platform_device *pdev)
hdmi4_uninit_output(hdmi);
pm_runtime_disable(&pdev->dev);
-
- kfree(hdmi);
}
static const struct of_device_id hdmi_of_match[] = {
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 11/22] drm/omap: dss: hdmi5: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (8 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 10/22] drm/omap: dss: hdmi4: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:54 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 12/22] drm/omap: dss: sdi: " Luca Ceresoli
` (10 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Tomi Valkeinen
This is the new API for allocating DRM bridges.
Switching from a non-devm to a devm allocation allows removing the kfree()
in the remove function and in the probe error management code, and as a
consequence to simplify the code flow by removing now unnecessary gotos.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
drivers/gpu/drm/omapdrm/dss/hdmi5.c | 26 ++++++++++----------------
1 file changed, 10 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/hdmi5.c b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
index 0c98444d39a93d8336b4d8dbd45aa4521181c3b4..5636b3dfec1c9581118b20adecd268c03e882efb 100644
--- a/drivers/gpu/drm/omapdrm/dss/hdmi5.c
+++ b/drivers/gpu/drm/omapdrm/dss/hdmi5.c
@@ -480,7 +480,6 @@ static const struct drm_bridge_funcs hdmi5_bridge_funcs = {
static void hdmi5_bridge_init(struct omap_hdmi *hdmi)
{
- hdmi->bridge.funcs = &hdmi5_bridge_funcs;
hdmi->bridge.of_node = hdmi->pdev->dev.of_node;
hdmi->bridge.ops = DRM_BRIDGE_OP_EDID;
hdmi->bridge.type = DRM_MODE_CONNECTOR_HDMIA;
@@ -727,9 +726,9 @@ static int hdmi5_probe(struct platform_device *pdev)
int irq;
int r;
- hdmi = kzalloc(sizeof(*hdmi), GFP_KERNEL);
- if (!hdmi)
- return -ENOMEM;
+ hdmi = devm_drm_bridge_alloc(&pdev->dev, struct omap_hdmi, bridge, &hdmi5_bridge_funcs);
+ if (IS_ERR(hdmi))
+ return PTR_ERR(hdmi);
hdmi->pdev = pdev;
@@ -740,25 +739,24 @@ static int hdmi5_probe(struct platform_device *pdev)
r = hdmi5_probe_of(hdmi);
if (r)
- goto err_free;
+ return r;
r = hdmi_wp_init(pdev, &hdmi->wp, 5);
if (r)
- goto err_free;
+ return r;
r = hdmi_phy_init(pdev, &hdmi->phy, 5);
if (r)
- goto err_free;
+ return r;
r = hdmi5_core_init(pdev, &hdmi->core);
if (r)
- goto err_free;
+ return r;
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
DSSERR("platform_get_irq failed\n");
- r = -ENODEV;
- goto err_free;
+ return -ENODEV;
}
r = devm_request_threaded_irq(&pdev->dev, irq,
@@ -766,7 +764,7 @@ static int hdmi5_probe(struct platform_device *pdev)
IRQF_ONESHOT, "OMAP HDMI", hdmi);
if (r) {
DSSERR("HDMI IRQ request failed\n");
- goto err_free;
+ return r;
}
hdmi->vdda_reg = devm_regulator_get(&pdev->dev, "vdda");
@@ -774,7 +772,7 @@ static int hdmi5_probe(struct platform_device *pdev)
r = PTR_ERR(hdmi->vdda_reg);
if (r != -EPROBE_DEFER)
DSSERR("can't get VDDA regulator\n");
- goto err_free;
+ return r;
}
pm_runtime_enable(&pdev->dev);
@@ -793,8 +791,6 @@ static int hdmi5_probe(struct platform_device *pdev)
hdmi5_uninit_output(hdmi);
err_pm_disable:
pm_runtime_disable(&pdev->dev);
-err_free:
- kfree(hdmi);
return r;
}
@@ -807,8 +803,6 @@ static void hdmi5_remove(struct platform_device *pdev)
hdmi5_uninit_output(hdmi);
pm_runtime_disable(&pdev->dev);
-
- kfree(hdmi);
}
static const struct of_device_id hdmi_of_match[] = {
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 12/22] drm/omap: dss: sdi: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (9 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 11/22] drm/omap: dss: hdmi5: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:58 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 13/22] drm/omap: dss: venc: " Luca Ceresoli
` (9 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Rob Herring (Arm), Kuninori Morimoto, Tomi Valkeinen
This is the new API for allocating DRM bridges.
Switching from a non-devm to a devm allocation allows removing the kfree()
in the remove function and in the probe error management code, and as a
consequence to simplify the code flow by removing now unnecessary gotos.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: "Rob Herring (Arm)" <robh@kernel.org>
Cc: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
drivers/gpu/drm/omapdrm/dss/sdi.c | 25 ++++++++-----------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/sdi.c b/drivers/gpu/drm/omapdrm/dss/sdi.c
index e78826e4b560a2b9af2d8a5a38e181bd3e44d250..df4cbc683e2ca27ef5fc45f79b77dcdcd9ca529a 100644
--- a/drivers/gpu/drm/omapdrm/dss/sdi.c
+++ b/drivers/gpu/drm/omapdrm/dss/sdi.c
@@ -284,7 +284,6 @@ static const struct drm_bridge_funcs sdi_bridge_funcs = {
static void sdi_bridge_init(struct sdi_device *sdi)
{
- sdi->bridge.funcs = &sdi_bridge_funcs;
sdi->bridge.of_node = sdi->pdev->dev.of_node;
sdi->bridge.type = DRM_MODE_CONNECTOR_LVDS;
@@ -344,21 +343,19 @@ int sdi_init_port(struct dss_device *dss, struct platform_device *pdev,
u32 datapairs;
int r;
- sdi = kzalloc(sizeof(*sdi), GFP_KERNEL);
- if (!sdi)
- return -ENOMEM;
+ sdi = devm_drm_bridge_alloc(&pdev->dev, struct sdi_device, bridge, &sdi_bridge_funcs);
+ if (IS_ERR(sdi))
+ return PTR_ERR(sdi);
ep = of_graph_get_next_port_endpoint(port, NULL);
- if (!ep) {
- r = 0;
- goto err_free;
- }
+ if (!ep)
+ return 0;
r = of_property_read_u32(ep, "datapairs", &datapairs);
of_node_put(ep);
if (r) {
DSSERR("failed to parse datapairs\n");
- goto err_free;
+ return r;
}
sdi->datapairs = datapairs;
@@ -372,19 +369,14 @@ int sdi_init_port(struct dss_device *dss, struct platform_device *pdev,
r = PTR_ERR(sdi->vdds_sdi_reg);
if (r != -EPROBE_DEFER)
DSSERR("can't get VDDS_SDI regulator\n");
- goto err_free;
+ return r;
}
r = sdi_init_output(sdi);
if (r)
- goto err_free;
+ return r;
return 0;
-
-err_free:
- kfree(sdi);
-
- return r;
}
void sdi_uninit_port(struct device_node *port)
@@ -395,5 +387,4 @@ void sdi_uninit_port(struct device_node *port)
return;
sdi_uninit_output(sdi);
- kfree(sdi);
}
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 13/22] drm/omap: dss: venc: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (10 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 12/22] drm/omap: dss: sdi: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:55 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 14/22] drm/rcar-du: dsi: " Luca Ceresoli
` (8 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Tomi Valkeinen
This is the new API for allocating DRM bridges.
Switching from a non-devm to a devm allocation allows removing the kfree()
in the remove function and in the probe error management code, and as a
consequence to simplify the code flow by removing now unnecessary gotos.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
---
drivers/gpu/drm/omapdrm/dss/venc.c | 23 ++++++++---------------
1 file changed, 8 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/omapdrm/dss/venc.c b/drivers/gpu/drm/omapdrm/dss/venc.c
index 50349518eda1630400529caf27ca4469bb09fc82..9b5d53dc361e654a2e4009c3c81b726f9ef76ced 100644
--- a/drivers/gpu/drm/omapdrm/dss/venc.c
+++ b/drivers/gpu/drm/omapdrm/dss/venc.c
@@ -664,7 +664,6 @@ static const struct drm_bridge_funcs venc_bridge_funcs = {
static void venc_bridge_init(struct venc_device *venc)
{
- venc->bridge.funcs = &venc_bridge_funcs;
venc->bridge.of_node = venc->pdev->dev.of_node;
venc->bridge.ops = DRM_BRIDGE_OP_MODES;
venc->bridge.type = DRM_MODE_CONNECTOR_SVIDEO;
@@ -809,9 +808,9 @@ static int venc_probe(struct platform_device *pdev)
struct venc_device *venc;
int r;
- venc = kzalloc(sizeof(*venc), GFP_KERNEL);
- if (!venc)
- return -ENOMEM;
+ venc = devm_drm_bridge_alloc(&pdev->dev, struct venc_device, bridge, &venc_bridge_funcs);
+ if (IS_ERR(venc))
+ return PTR_ERR(venc);
venc->pdev = pdev;
@@ -824,26 +823,24 @@ static int venc_probe(struct platform_device *pdev)
venc->config = &venc_config_pal_trm;
venc->base = devm_platform_ioremap_resource(pdev, 0);
- if (IS_ERR(venc->base)) {
- r = PTR_ERR(venc->base);
- goto err_free;
- }
+ if (IS_ERR(venc->base))
+ return PTR_ERR(venc->base);
venc->vdda_dac_reg = devm_regulator_get(&pdev->dev, "vdda");
if (IS_ERR(venc->vdda_dac_reg)) {
r = PTR_ERR(venc->vdda_dac_reg);
if (r != -EPROBE_DEFER)
DSSERR("can't get VDDA_DAC regulator\n");
- goto err_free;
+ return r;
}
r = venc_get_clocks(venc);
if (r)
- goto err_free;
+ return r;
r = venc_probe_of(venc);
if (r)
- goto err_free;
+ return r;
pm_runtime_enable(&pdev->dev);
@@ -861,8 +858,6 @@ static int venc_probe(struct platform_device *pdev)
venc_uninit_output(venc);
err_pm_disable:
pm_runtime_disable(&pdev->dev);
-err_free:
- kfree(venc);
return r;
}
@@ -875,8 +870,6 @@ static void venc_remove(struct platform_device *pdev)
venc_uninit_output(venc);
pm_runtime_disable(&pdev->dev);
-
- kfree(venc);
}
static __maybe_unused int venc_runtime_suspend(struct device *dev)
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 14/22] drm/rcar-du: dsi: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (11 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 13/22] drm/omap: dss: venc: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:56 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 15/22] drm/bridge: stm_lvds: " Luca Ceresoli
` (7 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Kieran Bingham, Laurent Pinchart, Tomi Valkeinen
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Cc: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
---
drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
index 7ab8be46c7f6547f29b4d45af7ac704283da9dcd..1af4c73f7a887712aef8c8176b0d0338d9ca9727 100644
--- a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
+++ b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
@@ -918,7 +918,6 @@ static int rcar_mipi_dsi_host_attach(struct mipi_dsi_host *host,
}
/* Initialize the DRM bridge. */
- dsi->bridge.funcs = &rcar_mipi_dsi_bridge_ops;
dsi->bridge.of_node = dsi->dev->of_node;
drm_bridge_add(&dsi->bridge);
@@ -1004,9 +1003,10 @@ static int rcar_mipi_dsi_probe(struct platform_device *pdev)
struct rcar_mipi_dsi *dsi;
int ret;
- dsi = devm_kzalloc(&pdev->dev, sizeof(*dsi), GFP_KERNEL);
- if (dsi == NULL)
- return -ENOMEM;
+ dsi = devm_drm_bridge_alloc(&pdev->dev, struct rcar_mipi_dsi, bridge,
+ &rcar_mipi_dsi_bridge_ops);
+ if (IS_ERR(dsi))
+ return PTR_ERR(dsi);
platform_set_drvdata(pdev, dsi);
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 15/22] drm/bridge: stm_lvds: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (12 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 14/22] drm/rcar-du: dsi: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:56 ` Maxime Ripard
2025-05-20 11:37 ` Raphael Gallais-Pou
2025-05-09 13:53 ` [PATCH v3 16/22] drm/sti: dvo: " Luca Ceresoli
` (6 subsequent siblings)
20 siblings, 2 replies; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Alexandre Torgue, Maxime Coquelin, Philippe Cornu,
Raphael Gallais-Pou, Yannick Fertre
This is the new API for allocating DRM bridges.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
Cc: Philippe Cornu <philippe.cornu@foss.st.com>
Cc: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
Cc: Yannick Fertre <yannick.fertre@foss.st.com>
---
drivers/gpu/drm/stm/lvds.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/stm/lvds.c b/drivers/gpu/drm/stm/lvds.c
index a3ae9a93ce6670eb2c4dd36b3e572fcbca791a1c..07788e8d3d8302a3951e97d64736b721033998d3 100644
--- a/drivers/gpu/drm/stm/lvds.c
+++ b/drivers/gpu/drm/stm/lvds.c
@@ -1049,9 +1049,9 @@ static int lvds_probe(struct platform_device *pdev)
dev_dbg(dev, "Probing LVDS driver...\n");
- lvds = devm_kzalloc(dev, sizeof(*lvds), GFP_KERNEL);
- if (!lvds)
- return -ENOMEM;
+ lvds = devm_drm_bridge_alloc(dev, struct stm_lvds, lvds_bridge, &lvds_bridge_funcs);
+ if (IS_ERR(lvds))
+ return PTR_ERR(lvds);
lvds->dev = dev;
@@ -1164,7 +1164,6 @@ static int lvds_probe(struct platform_device *pdev)
goto err_lvds_probe;
}
- lvds->lvds_bridge.funcs = &lvds_bridge_funcs;
lvds->lvds_bridge.of_node = dev->of_node;
lvds->hw_version = lvds_read(lvds, LVDS_VERR);
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 16/22] drm/sti: dvo: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (13 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 15/22] drm/bridge: stm_lvds: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:57 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 17/22] drm: zynqmp_dp: " Luca Ceresoli
` (5 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Alain Volmat, Raphael Gallais-Pou
This is the new API for allocating DRM bridges.
This driver allocates the DRM bridge separately from the main driver
private struct, which prevents using the new devm_drm_bridge_alloc()
API. Simplify the code by replacing the struct drm_bridge pointer with an
embedded struct drm_bridge inside the private struct, to make use of the
new API with the same code flow.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Alain Volmat <alain.volmat@foss.st.com>
Cc: Raphael Gallais-Pou <rgallaispou@gmail.com>
Changed in v2:
- fix typos in commit message
---
drivers/gpu/drm/sti/sti_dvo.c | 29 +++++++++++------------------
1 file changed, 11 insertions(+), 18 deletions(-)
diff --git a/drivers/gpu/drm/sti/sti_dvo.c b/drivers/gpu/drm/sti/sti_dvo.c
index 74a1eef4674eeabc445b53b380e325f785242024..7484d3c3f4ed5fac7eab408e30cbe2f6b87f27e5 100644
--- a/drivers/gpu/drm/sti/sti_dvo.c
+++ b/drivers/gpu/drm/sti/sti_dvo.c
@@ -97,7 +97,7 @@ struct sti_dvo {
struct dvo_config *config;
bool enabled;
struct drm_encoder *encoder;
- struct drm_bridge *bridge;
+ struct drm_bridge bridge;
};
struct sti_dvo_connector {
@@ -439,7 +439,6 @@ static int sti_dvo_bind(struct device *dev, struct device *master, void *data)
struct drm_encoder *encoder;
struct sti_dvo_connector *connector;
struct drm_connector *drm_connector;
- struct drm_bridge *bridge;
int err;
/* Set the drm device handle */
@@ -455,20 +454,14 @@ static int sti_dvo_bind(struct device *dev, struct device *master, void *data)
connector->dvo = dvo;
- bridge = devm_kzalloc(dev, sizeof(*bridge), GFP_KERNEL);
- if (!bridge)
- return -ENOMEM;
-
- bridge->driver_private = dvo;
- bridge->funcs = &sti_dvo_bridge_funcs;
- bridge->of_node = dvo->dev.of_node;
- drm_bridge_add(bridge);
+ dvo->bridge.driver_private = dvo;
+ dvo->bridge.of_node = dvo->dev.of_node;
+ drm_bridge_add(&dvo->bridge);
- err = drm_bridge_attach(encoder, bridge, NULL, 0);
+ err = drm_bridge_attach(encoder, &dvo->bridge, NULL, 0);
if (err)
return err;
- dvo->bridge = bridge;
connector->encoder = encoder;
dvo->encoder = encoder;
@@ -490,7 +483,7 @@ static int sti_dvo_bind(struct device *dev, struct device *master, void *data)
return 0;
err_sysfs:
- drm_bridge_remove(bridge);
+ drm_bridge_remove(&dvo->bridge);
return -EINVAL;
}
@@ -499,7 +492,7 @@ static void sti_dvo_unbind(struct device *dev,
{
struct sti_dvo *dvo = dev_get_drvdata(dev);
- drm_bridge_remove(dvo->bridge);
+ drm_bridge_remove(&dvo->bridge);
}
static const struct component_ops sti_dvo_ops = {
@@ -515,10 +508,10 @@ static int sti_dvo_probe(struct platform_device *pdev)
DRM_INFO("%s\n", __func__);
- dvo = devm_kzalloc(dev, sizeof(*dvo), GFP_KERNEL);
- if (!dvo) {
- DRM_ERROR("Failed to allocate memory for DVO\n");
- return -ENOMEM;
+ dvo = devm_drm_bridge_alloc(dev, struct sti_dvo, bridge, &sti_dvo_bridge_funcs);
+ if (IS_ERR(dvo)) {
+ DRM_ERROR("Failed to allocate DVO\n");
+ return PTR_ERR(dvo);
}
dvo->dev = pdev->dev;
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 17/22] drm: zynqmp_dp: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (14 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 16/22] drm/sti: dvo: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 8:57 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 18/22] drm/bridge: imx8qxp-pixel-combiner: " Luca Ceresoli
` (4 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Laurent Pinchart, Michal Simek, Tomi Valkeinen
This is the new API for allocating DRM bridges.
This driver has a peculiar structure. zynqmp_dpsub.c is the actual driver,
which delegates to a submodule (zynqmp_dp.c) the allocation of a
sub-structure embedding the drm_bridge and its initialization, however it
does not delegate the drm_bridge_add(). Hence, following carefully the code
flow, it is correct to change the allocation function and .funcs assignment
in the submodule, while the drm_bridge_add() is not in that submodule.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Michal Simek <michal.simek@amd.com>
Cc: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Changes in v2:
- rebased on current drm-misc-next
- remove the kfree() calls too, as we are converting from kzalloc+kfree,
not from devm_kzalloc
---
drivers/gpu/drm/xlnx/zynqmp_dp.c | 31 +++++++++++--------------------
drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 1 -
2 files changed, 11 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dp.c b/drivers/gpu/drm/xlnx/zynqmp_dp.c
index 238cbb49963efa6e8cc737d8a6e76250f6531276..02e1feaa611596a24217136ee8ce7f5d2f1900a2 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dp.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dp.c
@@ -2439,9 +2439,9 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub)
struct zynqmp_dp *dp;
int ret;
- dp = kzalloc(sizeof(*dp), GFP_KERNEL);
- if (!dp)
- return -ENOMEM;
+ dp = devm_drm_bridge_alloc(&pdev->dev, struct zynqmp_dp, bridge, &zynqmp_dp_bridge_funcs);
+ if (IS_ERR(dp))
+ return PTR_ERR(dp);
dp->dev = &pdev->dev;
dp->dpsub = dpsub;
@@ -2454,31 +2454,25 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub)
/* Acquire all resources (IOMEM, IRQ and PHYs). */
dp->iomem = devm_platform_ioremap_resource_byname(pdev, "dp");
- if (IS_ERR(dp->iomem)) {
- ret = PTR_ERR(dp->iomem);
- goto err_free;
- }
+ if (IS_ERR(dp->iomem))
+ return PTR_ERR(dp->iomem);
dp->irq = platform_get_irq(pdev, 0);
- if (dp->irq < 0) {
- ret = dp->irq;
- goto err_free;
- }
+ if (dp->irq < 0)
+ return dp->irq;
dp->reset = devm_reset_control_get(dp->dev, NULL);
- if (IS_ERR(dp->reset)) {
- ret = dev_err_probe(dp->dev, PTR_ERR(dp->reset),
+ if (IS_ERR(dp->reset))
+ return dev_err_probe(dp->dev, PTR_ERR(dp->reset),
"failed to get reset\n");
- goto err_free;
- }
ret = zynqmp_dp_reset(dp, true);
if (ret < 0)
- goto err_free;
+ return ret;
ret = zynqmp_dp_reset(dp, false);
if (ret < 0)
- goto err_free;
+ return ret;
ret = zynqmp_dp_phy_probe(dp);
if (ret)
@@ -2486,7 +2480,6 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub)
/* Initialize the bridge. */
bridge = &dp->bridge;
- bridge->funcs = &zynqmp_dp_bridge_funcs;
bridge->ops = DRM_BRIDGE_OP_DETECT | DRM_BRIDGE_OP_EDID
| DRM_BRIDGE_OP_HPD;
bridge->type = DRM_MODE_CONNECTOR_DisplayPort;
@@ -2539,8 +2532,6 @@ int zynqmp_dp_probe(struct zynqmp_dpsub *dpsub)
zynqmp_dp_phy_exit(dp);
err_reset:
zynqmp_dp_reset(dp, true);
-err_free:
- kfree(dp);
return ret;
}
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index 3a9544b97bc5311f9adeb57c08c837a04b6922fa..2764c4b17c5e49611db8adf41dd09e3134c2d524 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -180,7 +180,6 @@ static int zynqmp_dpsub_parse_dt(struct zynqmp_dpsub *dpsub)
void zynqmp_dpsub_release(struct zynqmp_dpsub *dpsub)
{
kfree(dpsub->disp);
- kfree(dpsub->dp);
kfree(dpsub);
}
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 18/22] drm/bridge: imx8qxp-pixel-combiner: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (15 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 17/22] drm: zynqmp_dp: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-27 1:48 ` Liu Ying
2025-05-09 13:53 ` [PATCH v3 19/22] drm/bridge: tc358767: " Luca Ceresoli
` (3 subsequent siblings)
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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, Liu Ying
This is the new API for allocating DRM bridges.
This driver embeds an array of channels in the main struct, and each
channel embeds a drm_bridge. This prevents dynamic, refcount-based
deallocation of the bridges.
To make the new, dynamic bridge allocation possible:
* change the array of channels into an array of channel pointers
* allocate each channel using devm_drm_bridge_alloc()
* adapt the code wherever using the channels
* remove the is_available flag, now "ch != NULL" is equivalent
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Cc: Liu Ying <victor.liu@nxp.com>
Changes in v3:
- fix NULL pointer deref in .remove and remove is_available bool
Changes in v2: none
---
.../gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c | 27 +++++++++++-----------
1 file changed, 14 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c
index 1f6fd488e7039e943351006d3373009f0c15cb08..8517b1c953d4e0fb9f5b6dbe25fbaaa63eef2b33 100644
--- a/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c
+++ b/drivers/gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c
@@ -63,12 +63,11 @@ struct imx8qxp_pc_channel {
struct drm_bridge *next_bridge;
struct imx8qxp_pc *pc;
unsigned int stream_id;
- bool is_available;
};
struct imx8qxp_pc {
struct device *dev;
- struct imx8qxp_pc_channel ch[2];
+ struct imx8qxp_pc_channel *ch[2];
struct clk *clk_apb;
void __iomem *base;
};
@@ -307,7 +306,14 @@ static int imx8qxp_pc_bridge_probe(struct platform_device *pdev)
goto free_child;
}
- ch = &pc->ch[i];
+ ch = devm_drm_bridge_alloc(dev, struct imx8qxp_pc_channel, bridge,
+ &imx8qxp_pc_bridge_funcs);
+ if (IS_ERR(ch)) {
+ ret = PTR_ERR(ch);
+ goto free_child;
+ }
+
+ pc->ch[i] = ch;
ch->pc = pc;
ch->stream_id = i;
@@ -333,9 +339,7 @@ static int imx8qxp_pc_bridge_probe(struct platform_device *pdev)
of_node_put(remote);
ch->bridge.driver_private = ch;
- ch->bridge.funcs = &imx8qxp_pc_bridge_funcs;
ch->bridge.of_node = child;
- ch->is_available = true;
drm_bridge_add(&ch->bridge);
}
@@ -345,8 +349,8 @@ static int imx8qxp_pc_bridge_probe(struct platform_device *pdev)
free_child:
of_node_put(child);
- if (i == 1 && pc->ch[0].next_bridge)
- drm_bridge_remove(&pc->ch[0].bridge);
+ if (i == 1 && pc->ch[0]->next_bridge)
+ drm_bridge_remove(&pc->ch[0]->bridge);
pm_runtime_disable(dev);
return ret;
@@ -359,13 +363,10 @@ static void imx8qxp_pc_bridge_remove(struct platform_device *pdev)
int i;
for (i = 0; i < 2; i++) {
- ch = &pc->ch[i];
-
- if (!ch->is_available)
- continue;
+ ch = pc->ch[i];
- drm_bridge_remove(&ch->bridge);
- ch->is_available = false;
+ if (ch)
+ drm_bridge_remove(&ch->bridge);
}
pm_runtime_disable(&pdev->dev);
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 19/22] drm/bridge: tc358767: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (16 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 18/22] drm/bridge: imx8qxp-pixel-combiner: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 20/22] drm/bridge: add devm_drm_put_bridge() Luca Ceresoli
` (2 subsequent siblings)
20 siblings, 0 replies; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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
This is the new API for allocating DRM bridges.
Converting this driver is a bit convoluted because the drm_bridge funcs
pointer differs based on the bridge mode. So the current code does:
* tc_probe()
* devm_kzalloc() private struct embedding drm_bridge
* call tc_probe_bridge_endpoint() which
* parses DT description into struct fields
* computes the mode
* calls different bridge init functions based on the mode
* each sets a different bridge.funcs pointer
The new API expects the funcs pointer to be known at alloc time, which does
not fit in the current code structure.
Solve this by moving the part of tc_probe_bridge_endpoint() computing the
mode into a separate function, tc_probe_get_mode(), which does not need the
private driver structure. So now the mode is known before allocation and so
is the funcs pointer, while all other operations are still happening after
allocation, directly into the private struct data, as they used to.
This solution is chosen to minimize the changes in the driver logical code
flow. The drawback is we now iterate twice over the endpoints.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
drivers/gpu/drm/bridge/tc358767.c | 56 ++++++++++++++++++++++++++++-----------
1 file changed, 40 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index 7e5449fb86a3fcdae8255bc490d12c543ef3f8ae..61559467e2d22b4b1b4223c97766ca3bf58908fd 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -344,6 +344,14 @@
#define COLOR_BAR_MODE_BARS 2
#define PLL_DBG 0x0a04
+enum tc_mode {
+ mode_dpi_to_edp = BIT(1) | BIT(2),
+ mode_dpi_to_dp = BIT(1),
+ mode_dsi_to_edp = BIT(0) | BIT(2),
+ mode_dsi_to_dp = BIT(0),
+ mode_dsi_to_dpi = BIT(0) | BIT(1),
+};
+
static bool tc_test_pattern;
module_param_named(test, tc_test_pattern, bool, 0644);
@@ -2327,7 +2335,6 @@ static int tc_probe_dpi_bridge_endpoint(struct tc_data *tc)
if (bridge) {
tc->panel_bridge = bridge;
tc->bridge.type = DRM_MODE_CONNECTOR_DPI;
- tc->bridge.funcs = &tc_dpi_bridge_funcs;
return 0;
}
@@ -2360,7 +2367,6 @@ static int tc_probe_edp_bridge_endpoint(struct tc_data *tc)
tc->bridge.type = DRM_MODE_CONNECTOR_DisplayPort;
}
- tc->bridge.funcs = &tc_edp_bridge_funcs;
if (tc->hpd_pin >= 0)
tc->bridge.ops |= DRM_BRIDGE_OP_DETECT;
tc->bridge.ops |= DRM_BRIDGE_OP_EDID;
@@ -2368,17 +2374,11 @@ static int tc_probe_edp_bridge_endpoint(struct tc_data *tc)
return 0;
}
-static int tc_probe_bridge_endpoint(struct tc_data *tc)
+static enum tc_mode tc_probe_get_mode(struct device *dev)
{
- struct device *dev = tc->dev;
struct of_endpoint endpoint;
struct device_node *node = NULL;
- const u8 mode_dpi_to_edp = BIT(1) | BIT(2);
- const u8 mode_dpi_to_dp = BIT(1);
- const u8 mode_dsi_to_edp = BIT(0) | BIT(2);
- const u8 mode_dsi_to_dp = BIT(0);
- const u8 mode_dsi_to_dpi = BIT(0) | BIT(1);
- u8 mode = 0;
+ enum tc_mode mode = 0;
/*
* Determine bridge configuration.
@@ -2401,7 +2401,27 @@ static int tc_probe_bridge_endpoint(struct tc_data *tc)
return -EINVAL;
}
mode |= BIT(endpoint.port);
+ }
+
+ if (mode != mode_dpi_to_edp &&
+ mode != mode_dpi_to_dp &&
+ mode != mode_dsi_to_dpi &&
+ mode != mode_dsi_to_edp &&
+ mode != mode_dsi_to_dp) {
+ dev_warn(dev, "Invalid mode (0x%x) is not supported!\n", mode);
+ return -EINVAL;
+ }
+
+ return mode;
+}
+static int tc_probe_bridge_endpoint(struct tc_data *tc, enum tc_mode mode)
+{
+ struct device *dev = tc->dev;
+ struct of_endpoint endpoint;
+ struct device_node *node = NULL;
+
+ for_each_endpoint_of_node(dev->of_node, node) {
if (endpoint.port == 2) {
of_property_read_u8_array(node, "toshiba,pre-emphasis",
tc->pre_emphasis,
@@ -2427,24 +2447,28 @@ static int tc_probe_bridge_endpoint(struct tc_data *tc)
return tc_probe_edp_bridge_endpoint(tc);
}
- dev_warn(dev, "Invalid mode (0x%x) is not supported!\n", mode);
-
+ /* Should never happen, mode was validated by tc_probe_get_mode() */
return -EINVAL;
}
static int tc_probe(struct i2c_client *client)
{
struct device *dev = &client->dev;
+ const struct drm_bridge_funcs *funcs;
struct tc_data *tc;
+ int mode;
int ret;
- tc = devm_kzalloc(dev, sizeof(*tc), GFP_KERNEL);
- if (!tc)
- return -ENOMEM;
+ mode = tc_probe_get_mode(dev);
+ funcs = (mode == mode_dsi_to_dpi) ? &tc_dpi_bridge_funcs : &tc_edp_bridge_funcs;
+
+ tc = devm_drm_bridge_alloc(dev, struct tc_data, bridge, funcs);
+ if (IS_ERR(tc))
+ return PTR_ERR(tc);
tc->dev = dev;
- ret = tc_probe_bridge_endpoint(tc);
+ ret = tc_probe_bridge_endpoint(tc, mode);
if (ret)
return ret;
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 20/22] drm/bridge: add devm_drm_put_bridge()
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (17 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 19/22] drm/bridge: tc358767: " Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 9:15 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 21/22] drm/bridge: panel: convert to devm_drm_bridge_alloc() API Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 22/22] drm/todo: add entry to remove devm_drm_put_bridge() Luca Ceresoli
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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
Bridges obtained via devm_drm_bridge_alloc(dev, ...) will be put when the
requesting device (@dev) is removed.
However drivers which obtained them may need to put the obtained reference
explicitly. One such case is if they bind the devm removal action to a
different device than the one implemented by the driver itself and which
might be removed at a different time, such as bridge/panel.c.
Add devm_drm_put_bridge() to manually release a devm-obtained bridge in
such cases.
This function is considered only a temporary workaround until the panel
bridge is reworked and should be removed afterwards.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Changes in v3:
- document this function is a temporary workaround, not to be used
(in kerneldoc and commit message)
Changes in v2: none
---
drivers/gpu/drm/drm_bridge.c | 17 +++++++++++++++++
include/drm/drm_bridge.h | 4 ++++
2 files changed, 21 insertions(+)
diff --git a/drivers/gpu/drm/drm_bridge.c b/drivers/gpu/drm/drm_bridge.c
index b4c89ec01998b849018ce031c7cd84614e65e710..d0e81639927a73422671b7b43f3e8a946f1d4300 100644
--- a/drivers/gpu/drm/drm_bridge.c
+++ b/drivers/gpu/drm/drm_bridge.c
@@ -1392,6 +1392,23 @@ struct drm_bridge *of_drm_find_bridge(struct device_node *np)
EXPORT_SYMBOL(of_drm_find_bridge);
#endif
+/**
+ * devm_drm_put_bridge - Release a bridge reference obtained via devm
+ * @dev: device that got the bridge via devm
+ * @bridge: pointer to a struct drm_bridge obtained via devm
+ *
+ * Same as drm_bridge_put() for bridge pointers obtained via devm functions
+ * such as devm_drm_bridge_alloc().
+ *
+ * This function is a temporary workaround and MUST NOT be used. Manual
+ * handling of bridge lifetime is inherently unsafe.
+ */
+void devm_drm_put_bridge(struct device *dev, struct drm_bridge *bridge)
+{
+ devm_release_action(dev, drm_bridge_put_void, bridge);
+}
+EXPORT_SYMBOL(devm_drm_put_bridge);
+
static void drm_bridge_debugfs_show_bridge(struct drm_printer *p,
struct drm_bridge *bridge,
unsigned int idx)
diff --git a/include/drm/drm_bridge.h b/include/drm/drm_bridge.h
index 4e418a29a9ff9d014d6ac0910a5d9bcf7118195e..6f00a3998ed6d026332b0f1e3bb5bee3cb5158e0 100644
--- a/include/drm/drm_bridge.h
+++ b/include/drm/drm_bridge.h
@@ -1265,6 +1265,8 @@ static inline struct drm_bridge *devm_drm_of_get_bridge(struct device *dev,
return ERR_PTR(-ENODEV);
}
+static inline void devm_drm_put_bridge(struct device *dev, struct drm_bridge *bridge) {}
+
static inline struct drm_bridge *drmm_of_get_bridge(struct drm_device *drm,
struct device_node *node,
u32 port,
@@ -1274,6 +1276,8 @@ static inline struct drm_bridge *drmm_of_get_bridge(struct drm_device *drm,
}
#endif
+void devm_drm_put_bridge(struct device *dev, struct drm_bridge *bridge);
+
void drm_bridge_debugfs_params(struct dentry *root);
void drm_bridge_debugfs_encoder_params(struct dentry *root, struct drm_encoder *encoder);
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 21/22] drm/bridge: panel: convert to devm_drm_bridge_alloc() API
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (18 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 20/22] drm/bridge: add devm_drm_put_bridge() Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 9:42 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 22/22] drm/todo: add entry to remove devm_drm_put_bridge() Luca Ceresoli
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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
This is the new API for allocating DRM bridges.
The devm lifetime management of this driver is peculiar. The underlying
device for the panel_bridge is the panel, and the devm lifetime is tied the
panel device (panel->dev). However the panel_bridge allocation is not
performed by the panel driver, but rather by a separate entity (typically
the previous bridge in the encoder chain).
Thus when that separate entity is destroyed, the panel_bridge is not
removed automatically by devm, so it is rather done explicitly by calling
drm_panel_bridge_remove(). This is the function that does devm_kfree() the
panel_bridge in current code, so update it as well to put the bridge
reference instead.
This is a temporary solution until the panel lifetime is reworked, which
should make this workaround unnecessary, so add a comment to clarify that.
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
Changes in v3:
- add TODO to remove devm_drm_put_bridge(), update commit message
- fix typo in commit message
Changes in v2: none
---
drivers/gpu/drm/bridge/panel.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/bridge/panel.c b/drivers/gpu/drm/bridge/panel.c
index 79b009ab9396048eac57ad47631a902e949d77c6..6cbbfb1381a4a75fbc3acf6e6c5361202627e740 100644
--- a/drivers/gpu/drm/bridge/panel.c
+++ b/drivers/gpu/drm/bridge/panel.c
@@ -287,15 +287,14 @@ struct drm_bridge *drm_panel_bridge_add_typed(struct drm_panel *panel,
if (!panel)
return ERR_PTR(-EINVAL);
- panel_bridge = devm_kzalloc(panel->dev, sizeof(*panel_bridge),
- GFP_KERNEL);
- if (!panel_bridge)
- return ERR_PTR(-ENOMEM);
+ panel_bridge = devm_drm_bridge_alloc(panel->dev, struct panel_bridge, bridge,
+ &panel_bridge_bridge_funcs);
+ if (IS_ERR(panel_bridge))
+ return (void *)panel_bridge;
panel_bridge->connector_type = connector_type;
panel_bridge->panel = panel;
- panel_bridge->bridge.funcs = &panel_bridge_bridge_funcs;
panel_bridge->bridge.of_node = panel->dev->of_node;
panel_bridge->bridge.ops = DRM_BRIDGE_OP_MODES;
panel_bridge->bridge.type = connector_type;
@@ -327,7 +326,8 @@ void drm_panel_bridge_remove(struct drm_bridge *bridge)
panel_bridge = drm_bridge_to_panel_bridge(bridge);
drm_bridge_remove(bridge);
- devm_kfree(panel_bridge->panel->dev, bridge);
+ /* TODO remove this after reworking panel_bridge lifetime */
+ devm_drm_put_bridge(panel_bridge->panel->dev, bridge);
}
EXPORT_SYMBOL(drm_panel_bridge_remove);
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* [PATCH v3 22/22] drm/todo: add entry to remove devm_drm_put_bridge()
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
` (19 preceding siblings ...)
2025-05-09 13:53 ` [PATCH v3 21/22] drm/bridge: panel: convert to devm_drm_bridge_alloc() API Luca Ceresoli
@ 2025-05-09 13:53 ` Luca Ceresoli
2025-05-10 9:42 ` Maxime Ripard
20 siblings, 1 reply; 41+ messages in thread
From: Luca Ceresoli @ 2025-05-09 13:53 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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,
Jonathan Corbet, linux-doc
devm_drm_put_bridge() is a temporary workaround waiting for the panel
bridge lifetime rework. Add a TODO entry to not forget it must be removed
after such rework.
Suggested-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
---
To: Jonathan Corbet <corbet@lwn.net>
Cc: linux-doc@vger.kernel.org
This patch was added in v3
---
Documentation/gpu/todo.rst | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
index c57777a24e03d91b1ffe04365f7356f2d938befd..be8637da3fe950ddcb65cdcf626bc4b4e6b0fa26 100644
--- a/Documentation/gpu/todo.rst
+++ b/Documentation/gpu/todo.rst
@@ -515,6 +515,21 @@ Contact: Douglas Anderson <dianders@chromium.org>
Level: Starter
+Remove devm_drm_put_bridge()
+----------------------------
+
+Due to how the panel bridge handles the drm_bridge object lifetime, special
+care must be taken to dispose of the drm_bridge object when the
+panel_bridge is removed. This is currently managed using
+devm_drm_put_bridge(), but that is an unsafe, temporary workaround. To fix
+that, the DRM panel lifetime needs to be reworked. After the rework is
+done, remove devm_drm_put_bridge() and the TODO in
+drm_panel_bridge_remove().
+
+Contact: Maxime Ripard <mripard@kernel.org>,
+ Luca Ceresoli <luca.ceresoli@bootlin.com>
+
+Level: Intermediate
Core refactorings
=================
--
2.49.0
^ permalink raw reply related [flat|nested] 41+ messages in thread
* Re: [PATCH v3 03/22] drm/bridge: anx7625: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 03/22] drm/bridge: anx7625: convert to devm_drm_bridge_alloc() API Luca Ceresoli
@ 2025-05-10 8:43 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:43 UTC (permalink / raw)
To: Luca Ceresoli
Cc: Maarten Lankhorst, 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,
Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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, Rob Herring (Arm),
Hsin-Te Yuan, Jani Nikula, Pin-yen Lin, Sui Jingfeng, Xin Ji
[-- Attachment #1: Type: text/plain, Size: 227 bytes --]
On Fri, May 09, 2025 at 03:53:29PM +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 04/22] drm/bridge: cdns-dsi: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 04/22] drm/bridge: cdns-dsi: " Luca Ceresoli
@ 2025-05-10 8:44 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:44 UTC (permalink / raw)
To: Luca Ceresoli
Cc: Maarten Lankhorst, 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,
Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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, Aradhya Bhatia,
Tomi Valkeinen
[-- Attachment #1: Type: text/plain, Size: 237 bytes --]
On Fri, May 09, 2025 at 03:53:30PM +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Maxime
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 273 bytes --]
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 05/22] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 05/22] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Luca Ceresoli
@ 2025-05-10 8:52 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:52 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Ian Ray, Jagan Teki, Jernej Skrabec,
Jonas Karlman, Krzysztof Kozlowski, Laurent Pinchart,
Maarten Lankhorst, Martyn Welch, Maxime Ripard, Neil Armstrong,
Paul Kocialkowski, Pengutronix Kernel Team, Peter Senna Tschudin,
Robert Foss, Sascha Hauer, Shawn Guo, Simona Vetter,
Thomas Petazzoni, Thomas Zimmermann
On Fri, 9 May 2025 15:53:31 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 06/22] drm/bridge: nxp-ptn3460: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 06/22] drm/bridge: nxp-ptn3460: " Luca Ceresoli
@ 2025-05-10 8:52 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:52 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann
On Fri, 9 May 2025 15:53:32 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 07/22] drm/bridge: sii902x: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 07/22] drm/bridge: sii902x: " Luca Ceresoli
@ 2025-05-10 8:52 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:52 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann
On Fri, 9 May 2025 15:53:33 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 08/22] drm/omap: dss: dpi: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 08/22] drm/omap: dss: dpi: " Luca Ceresoli
@ 2025-05-10 8:54 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:54 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Helge Deller, Hui Pu, Jagan Teki, Jernej Skrabec,
Jonas Karlman, Krzysztof Kozlowski, Kuninori Morimoto,
Laurent Pinchart, Maarten Lankhorst, Maxime Ripard,
Neil Armstrong, Paul Kocialkowski, Pengutronix Kernel Team,
Rob Herring (Arm), Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann,
Tomi Valkeinen
On Fri, 9 May 2025 15:53:34 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 09/22] drm/omap: dss: dsi: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 09/22] drm/omap: dss: dsi: " Luca Ceresoli
@ 2025-05-10 8:54 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:54 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann,
Tomi Valkeinen
On Fri, 9 May 2025 15:53:35 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 10/22] drm/omap: dss: hdmi4: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 10/22] drm/omap: dss: hdmi4: " Luca Ceresoli
@ 2025-05-10 8:54 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:54 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann,
Tomi Valkeinen
On Fri, 9 May 2025 15:53:36 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Switching from a non-devm to a devm allocation allows removing the kfree()
> in the remove function and in the probe error management code, and as a
> consequence to simplify the code flow by removing now unnecessary gotos.
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 11/22] drm/omap: dss: hdmi5: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 11/22] drm/omap: dss: hdmi5: " Luca Ceresoli
@ 2025-05-10 8:54 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:54 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann,
Tomi Valkeinen
On Fri, 9 May 2025 15:53:37 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Switching from a non-devm to a devm allocation allows removing the kfree()
> in the remove function and in the probe error management code, and as a
> consequence to simplify the code flow by removing now unnecessary gotos.
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 13/22] drm/omap: dss: venc: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 13/22] drm/omap: dss: venc: " Luca Ceresoli
@ 2025-05-10 8:55 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:55 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann,
Tomi Valkeinen
On Fri, 9 May 2025 15:53:39 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Switching from a non-devm to a devm allocation allows removing the kfree()
> in the remove function and in the probe error management code, and as a
> consequence to simplify the code flow by removing now unnecessary gotos.
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 14/22] drm/rcar-du: dsi: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 14/22] drm/rcar-du: dsi: " Luca Ceresoli
@ 2025-05-10 8:56 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:56 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Kieran Bingham, Krzysztof Kozlowski, Laurent Pinchart,
Laurent Pinchart, Maarten Lankhorst, Maxime Ripard,
Neil Armstrong, Paul Kocialkowski, Pengutronix Kernel Team,
Robert Foss, Sascha Hauer, Shawn Guo, Simona Vetter,
Thomas Petazzoni, Thomas Zimmermann, Tomi Valkeinen
On Fri, 9 May 2025 15:53:40 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 15/22] drm/bridge: stm_lvds: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 15/22] drm/bridge: stm_lvds: " Luca Ceresoli
@ 2025-05-10 8:56 ` Maxime Ripard
2025-05-20 11:37 ` Raphael Gallais-Pou
1 sibling, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:56 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Alexandre Torgue, Andrzej Hajda,
Anusha Srivatsa, Chun-Kuang Hu, David Airlie, Dmitry Baryshkov,
Douglas Anderson, Fabio Estevam, Hui Pu, Jagan Teki,
Jernej Skrabec, Jonas Karlman, Krzysztof Kozlowski,
Laurent Pinchart, Maarten Lankhorst, Maxime Coquelin,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Philippe Cornu, Raphael Gallais-Pou,
Robert Foss, Sascha Hauer, Shawn Guo, Simona Vetter,
Thomas Petazzoni, Thomas Zimmermann, Yannick Fertre
On Fri, 9 May 2025 15:53:41 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
>
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 16/22] drm/sti: dvo: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 16/22] drm/sti: dvo: " Luca Ceresoli
@ 2025-05-10 8:57 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:57 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Alain Volmat, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Raphael Gallais-Pou, Robert Foss,
Sascha Hauer, Shawn Guo, Simona Vetter, Thomas Petazzoni,
Thomas Zimmermann
On Fri, 9 May 2025 15:53:42 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> This driver allocates the DRM bridge separately from the main driver
> private struct, which prevents using the new devm_drm_bridge_alloc()
> API. Simplify the code by replacing the struct drm_bridge pointer with an
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 17/22] drm: zynqmp_dp: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 17/22] drm: zynqmp_dp: " Luca Ceresoli
@ 2025-05-10 8:57 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:57 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Laurent Pinchart,
Maarten Lankhorst, Maxime Ripard, Michal Simek, Neil Armstrong,
Paul Kocialkowski, Pengutronix Kernel Team, Robert Foss,
Sascha Hauer, Shawn Guo, Simona Vetter, Thomas Petazzoni,
Thomas Zimmermann, Tomi Valkeinen
On Fri, 9 May 2025 15:53:43 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> This driver has a peculiar structure. zynqmp_dpsub.c is the actual driver,
> which delegates to a submodule (zynqmp_dp.c) the allocation of a
> sub-structure embedding the drm_bridge and its initialization, however it
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 12/22] drm/omap: dss: sdi: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 12/22] drm/omap: dss: sdi: " Luca Ceresoli
@ 2025-05-10 8:58 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 8:58 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Kuninori Morimoto, Laurent Pinchart,
Maarten Lankhorst, Maxime Ripard, Neil Armstrong,
Paul Kocialkowski, Pengutronix Kernel Team, Rob Herring (Arm),
Robert Foss, Sascha Hauer, Shawn Guo, Simona Vetter,
Thomas Petazzoni, Thomas Zimmermann, Tomi Valkeinen
On Fri, 9 May 2025 15:53:38 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Switching from a non-devm to a devm allocation allows removing the kfree()
> in the remove function and in the probe error management code, and as a
> consequence to simplify the code flow by removing now unnecessary gotos.
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 20/22] drm/bridge: add devm_drm_put_bridge()
2025-05-09 13:53 ` [PATCH v3 20/22] drm/bridge: add devm_drm_put_bridge() Luca Ceresoli
@ 2025-05-10 9:15 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 9:15 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann
On Fri, 9 May 2025 15:53:46 +0200, Luca Ceresoli wrote:
> Bridges obtained via devm_drm_bridge_alloc(dev, ...) will be put when the
> requesting device (@dev) is removed.
>
> However drivers which obtained them may need to put the obtained reference
> explicitly. One such case is if they bind the devm removal action to a
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 21/22] drm/bridge: panel: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 21/22] drm/bridge: panel: convert to devm_drm_bridge_alloc() API Luca Ceresoli
@ 2025-05-10 9:42 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 9:42 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-kernel, linux-mediatek,
linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Krzysztof Kozlowski, Laurent Pinchart, Maarten Lankhorst,
Maxime Ripard, Neil Armstrong, Paul Kocialkowski,
Pengutronix Kernel Team, Robert Foss, Sascha Hauer, Shawn Guo,
Simona Vetter, Thomas Petazzoni, Thomas Zimmermann
On Fri, 9 May 2025 15:53:47 +0200, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> The devm lifetime management of this driver is peculiar. The underlying
> device for the panel_bridge is the panel, and the devm lifetime is tied the
> panel device (panel->dev). However the panel_bridge allocation is not
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 22/22] drm/todo: add entry to remove devm_drm_put_bridge()
2025-05-09 13:53 ` [PATCH v3 22/22] drm/todo: add entry to remove devm_drm_put_bridge() Luca Ceresoli
@ 2025-05-10 9:42 ` Maxime Ripard
0 siblings, 0 replies; 41+ messages in thread
From: Maxime Ripard @ 2025-05-10 9:42 UTC (permalink / raw)
To: Luca Ceresoli
Cc: asahi, chrome-platform, dri-devel, freedreno, imx, linux-amlogic,
linux-arm-kernel, linux-arm-msm, linux-doc, linux-kernel,
linux-mediatek, linux-renesas-soc, linux-samsung-soc, linux-stm32,
platform-driver-x86, Andrzej Hajda, Anusha Srivatsa,
Chun-Kuang Hu, David Airlie, Dmitry Baryshkov, Douglas Anderson,
Fabio Estevam, Hui Pu, Jagan Teki, Jernej Skrabec, Jonas Karlman,
Jonathan Corbet, Krzysztof Kozlowski, Laurent Pinchart,
Maarten Lankhorst, Maxime Ripard, Neil Armstrong,
Paul Kocialkowski, Pengutronix Kernel Team, Robert Foss,
Sascha Hauer, Shawn Guo, Simona Vetter, Thomas Petazzoni,
Thomas Zimmermann
On Fri, 9 May 2025 15:53:48 +0200, Luca Ceresoli wrote:
> devm_drm_put_bridge() is a temporary workaround waiting for the panel
> bridge lifetime rework. Add a TODO entry to not forget it must be removed
> after such rework.
>
> Suggested-by: Maxime Ripard <mripard@kernel.org>
>
> [ ... ]
Acked-by: Maxime Ripard <mripard@kernel.org>
Thanks!
Maxime
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 15/22] drm/bridge: stm_lvds: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 15/22] drm/bridge: stm_lvds: " Luca Ceresoli
2025-05-10 8:56 ` Maxime Ripard
@ 2025-05-20 11:37 ` Raphael Gallais-Pou
1 sibling, 0 replies; 41+ messages in thread
From: Raphael Gallais-Pou @ 2025-05-20 11:37 UTC (permalink / raw)
To: Luca Ceresoli, 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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, Alexandre Torgue,
Maxime Coquelin, Philippe Cornu, Yannick Fertre
Hi Luca,
On 5/9/25 15:53, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
>
> ---
>
> Cc: Alexandre Torgue <alexandre.torgue@foss.st.com>
> Cc: Maxime Coquelin <mcoquelin.stm32@gmail.com>
> Cc: Philippe Cornu <philippe.cornu@foss.st.com>
> Cc: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
> Cc: Yannick Fertre <yannick.fertre@foss.st.com>
> ---
I went away from keyboard for some time. Sorry for the delay :
Acked-by: Raphael Gallais-Pou <raphael.gallais-pou@foss.st.com>
Regards,
Raphaël
^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: [PATCH v3 18/22] drm/bridge: imx8qxp-pixel-combiner: convert to devm_drm_bridge_alloc() API
2025-05-09 13:53 ` [PATCH v3 18/22] drm/bridge: imx8qxp-pixel-combiner: " Luca Ceresoli
@ 2025-05-27 1:48 ` Liu Ying
0 siblings, 0 replies; 41+ messages in thread
From: Liu Ying @ 2025-05-27 1:48 UTC (permalink / raw)
To: Luca Ceresoli, 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
Cc: Anusha Srivatsa, Paul Kocialkowski, Dmitry Baryshkov, 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
On 05/09/2025, Luca Ceresoli wrote:
> This is the new API for allocating DRM bridges.
>
> This driver embeds an array of channels in the main struct, and each
> channel embeds a drm_bridge. This prevents dynamic, refcount-based
> deallocation of the bridges.
>
> To make the new, dynamic bridge allocation possible:
>
> * change the array of channels into an array of channel pointers
> * allocate each channel using devm_drm_bridge_alloc()
> * adapt the code wherever using the channels
> * remove the is_available flag, now "ch != NULL" is equivalent
>
> Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com>
>
> ---
>
> Cc: Liu Ying <victor.liu@nxp.com>
>
> Changes in v3:
> - fix NULL pointer deref in .remove and remove is_available bool
>
> Changes in v2: none
> ---
> .../gpu/drm/bridge/imx/imx8qxp-pixel-combiner.c | 27 +++++++++++-----------
> 1 file changed, 14 insertions(+), 13 deletions(-)
Reviewed-by: Liu Ying <victor.liu@nxp.com>
^ permalink raw reply [flat|nested] 41+ messages in thread
end of thread, other threads:[~2025-05-27 1:49 UTC | newest]
Thread overview: 41+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20250509-drm-bridge-convert-to-alloc-api-v3-0-b8bc1f16d7aa@bootlin.com>
2025-05-09 13:53 ` [PATCH v3 01/22] Revert "drm/exynos: mic: convert to devm_drm_bridge_alloc() API" Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 03/22] drm/bridge: anx7625: convert to devm_drm_bridge_alloc() API Luca Ceresoli
2025-05-10 8:43 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 04/22] drm/bridge: cdns-dsi: " Luca Ceresoli
2025-05-10 8:44 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 05/22] drm/bridge: megachips-stdpxxxx-ge-b850v3-fw: " Luca Ceresoli
2025-05-10 8:52 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 06/22] drm/bridge: nxp-ptn3460: " Luca Ceresoli
2025-05-10 8:52 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 07/22] drm/bridge: sii902x: " Luca Ceresoli
2025-05-10 8:52 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 08/22] drm/omap: dss: dpi: " Luca Ceresoli
2025-05-10 8:54 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 09/22] drm/omap: dss: dsi: " Luca Ceresoli
2025-05-10 8:54 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 10/22] drm/omap: dss: hdmi4: " Luca Ceresoli
2025-05-10 8:54 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 11/22] drm/omap: dss: hdmi5: " Luca Ceresoli
2025-05-10 8:54 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 12/22] drm/omap: dss: sdi: " Luca Ceresoli
2025-05-10 8:58 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 13/22] drm/omap: dss: venc: " Luca Ceresoli
2025-05-10 8:55 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 14/22] drm/rcar-du: dsi: " Luca Ceresoli
2025-05-10 8:56 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 15/22] drm/bridge: stm_lvds: " Luca Ceresoli
2025-05-10 8:56 ` Maxime Ripard
2025-05-20 11:37 ` Raphael Gallais-Pou
2025-05-09 13:53 ` [PATCH v3 16/22] drm/sti: dvo: " Luca Ceresoli
2025-05-10 8:57 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 17/22] drm: zynqmp_dp: " Luca Ceresoli
2025-05-10 8:57 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 18/22] drm/bridge: imx8qxp-pixel-combiner: " Luca Ceresoli
2025-05-27 1:48 ` Liu Ying
2025-05-09 13:53 ` [PATCH v3 19/22] drm/bridge: tc358767: " Luca Ceresoli
2025-05-09 13:53 ` [PATCH v3 20/22] drm/bridge: add devm_drm_put_bridge() Luca Ceresoli
2025-05-10 9:15 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 21/22] drm/bridge: panel: convert to devm_drm_bridge_alloc() API Luca Ceresoli
2025-05-10 9:42 ` Maxime Ripard
2025-05-09 13:53 ` [PATCH v3 22/22] drm/todo: add entry to remove devm_drm_put_bridge() Luca Ceresoli
2025-05-10 9:42 ` Maxime Ripard
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).