* [PATCH 21/42] media: arm: mali-c55: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/media/platform/arm/mali-c55/mali-c55-core.c | 12 +++---------
1 file changed, 3 insertions(+), 9 deletions(-)
diff --git a/drivers/media/platform/arm/mali-c55/mali-c55-core.c b/drivers/media/platform/arm/mali-c55/mali-c55-core.c
index 94a389b3f833..afbec11f69f8 100644
--- a/drivers/media/platform/arm/mali-c55/mali-c55-core.c
+++ b/drivers/media/platform/arm/mali-c55/mali-c55-core.c
@@ -801,14 +801,12 @@ static int mali_c55_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(dev, ret, "failed to acquire resets\n");
- of_reserved_mem_device_init(dev);
+ devm_of_reserved_mem_device_init(dev);
vb2_dma_contig_set_max_seg_size(dev, UINT_MAX);
ret = __mali_c55_power_on(mali_c55);
- if (ret) {
- dev_err_probe(dev, ret, "failed to power on\n");
- goto err_release_mem;
- }
+ if (ret)
+ return dev_err_probe(dev, ret, "failed to power on\n");
ret = mali_c55_check_hwcfg(mali_c55);
if (ret)
@@ -847,9 +845,6 @@ static int mali_c55_probe(struct platform_device *pdev)
kfree(mali_c55->context.registers);
err_power_off:
__mali_c55_power_off(mali_c55);
-err_release_mem:
- of_reserved_mem_device_release(dev);
-
return ret;
}
@@ -864,7 +859,6 @@ static void mali_c55_remove(struct platform_device *pdev)
}
pm_runtime_disable(&pdev->dev);
kfree(mali_c55->context.registers);
- of_reserved_mem_device_release(&pdev->dev);
}
static const struct of_device_id mali_c55_of_match[] = {
--
2.53.0
^ permalink raw reply related
* [PATCH 20/42] drm: xlnx: zynqmp_dpsub: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
index 53ab1a2a5aaf..e93a7a299b52 100644
--- a/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
+++ b/drivers/gpu/drm/xlnx/zynqmp_dpsub.c
@@ -203,7 +203,7 @@ static int zynqmp_dpsub_probe(struct platform_device *pdev)
dma_set_max_seg_size(&pdev->dev, DMA_BIT_MASK(32));
/* Try the reserved memory. Proceed if there's none. */
- of_reserved_mem_device_init(&pdev->dev);
+ devm_of_reserved_mem_device_init(&pdev->dev);
ret = zynqmp_dpsub_init_clocks(dpsub);
if (ret < 0)
@@ -255,7 +255,6 @@ static int zynqmp_dpsub_probe(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev);
clk_disable_unprepare(dpsub->apb_clk);
err_mem:
- of_reserved_mem_device_release(&pdev->dev);
if (!dpsub->drm)
zynqmp_dpsub_release(dpsub);
return ret;
@@ -276,7 +275,6 @@ static void zynqmp_dpsub_remove(struct platform_device *pdev)
pm_runtime_disable(&pdev->dev);
clk_disable_unprepare(dpsub->apb_clk);
- of_reserved_mem_device_release(&pdev->dev);
if (!dpsub->drm)
zynqmp_dpsub_release(dpsub);
--
2.53.0
^ permalink raw reply related
* [PATCH 19/42] drm: sun4i: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/sun4i/sun4i_drv.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c
index 8a409eee1dca..5ca7b6f4764b 100644
--- a/drivers/gpu/drm/sun4i/sun4i_drv.c
+++ b/drivers/gpu/drm/sun4i/sun4i_drv.c
@@ -80,7 +80,7 @@ static int sun4i_drv_bind(struct device *dev)
INIT_LIST_HEAD(&drv->engine_list);
INIT_LIST_HEAD(&drv->tcon_list);
- ret = of_reserved_mem_device_init(dev);
+ ret = devm_of_reserved_mem_device_init(dev);
if (ret && ret != -ENODEV) {
dev_err(drm->dev, "Couldn't claim our memory region\n");
goto free_drm;
@@ -125,7 +125,6 @@ static int sun4i_drv_bind(struct device *dev)
component_unbind_all(dev, NULL);
cleanup_mode_config:
drm_mode_config_cleanup(drm);
- of_reserved_mem_device_release(dev);
free_drm:
drm_dev_put(drm);
return ret;
@@ -142,7 +141,6 @@ static void sun4i_drv_unbind(struct device *dev)
drm_mode_config_cleanup(drm);
component_unbind_all(dev, NULL);
- of_reserved_mem_device_release(dev);
drm_dev_put(drm);
}
--
2.53.0
^ permalink raw reply related
* [PATCH 18/42] drm: kmb: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Also simplify the IRQ error path since the release before init was a no-op.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/kmb/kmb_drv.c | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/kmb/kmb_drv.c b/drivers/gpu/drm/kmb/kmb_drv.c
index 7c2eb1152fc2..88fe377940f3 100644
--- a/drivers/gpu/drm/kmb/kmb_drv.c
+++ b/drivers/gpu/drm/kmb/kmb_drv.c
@@ -140,13 +140,12 @@ static int kmb_hw_init(struct drm_device *drm, unsigned long flags)
/* Allocate LCD interrupt resources */
irq_lcd = platform_get_irq(pdev, 0);
if (irq_lcd < 0) {
- ret = irq_lcd;
drm_err(&kmb->drm, "irq_lcd not found");
- goto setup_fail;
+ return irq_lcd;
}
/* Get the optional framebuffer memory resource */
- ret = of_reserved_mem_device_init(drm->dev);
+ ret = devm_of_reserved_mem_device_init(drm->dev);
if (ret && ret != -ENODEV)
return ret;
@@ -155,11 +154,6 @@ static int kmb_hw_init(struct drm_device *drm, unsigned long flags)
kmb->irq_lcd = irq_lcd;
return 0;
-
- setup_fail:
- of_reserved_mem_device_release(drm->dev);
-
- return ret;
}
static const struct drm_mode_config_funcs kmb_mode_config_funcs = {
@@ -465,8 +459,6 @@ static void kmb_remove(struct platform_device *pdev)
pm_runtime_put_sync(drm->dev);
pm_runtime_disable(drm->dev);
- of_reserved_mem_device_release(drm->dev);
-
/* Release clks */
kmb_display_clk_disable(kmb);
--
2.53.0
^ permalink raw reply related
* [PATCH 17/42] drm: ingenic: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Replace the hand-rolled devm wrapper (ingenic_drm_release_rmem +
devm_add_action_or_reset) with the standard
devm_of_reserved_mem_device_init(), letting the device resource
manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
index 7e569af22391..990c3b4625fa 100644
--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
+++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c
@@ -1060,11 +1060,6 @@ static void ingenic_drm_unbind_all(void *d)
component_unbind_all(priv->dev, &priv->drm);
}
-static void __maybe_unused ingenic_drm_release_rmem(void *d)
-{
- of_reserved_mem_device_release(d);
-}
-
static void ingenic_drm_configure_hwdesc(struct ingenic_drm *priv,
unsigned int hwdesc,
unsigned int next_hwdesc, u32 id)
@@ -1127,16 +1122,10 @@ static int ingenic_drm_bind(struct device *dev, bool has_components)
}
if (IS_ENABLED(CONFIG_OF_RESERVED_MEM)) {
- ret = of_reserved_mem_device_init(dev);
+ ret = devm_of_reserved_mem_device_init(dev);
if (ret && ret != -ENODEV)
dev_warn(dev, "Failed to get reserved memory: %d\n", ret);
-
- if (!ret) {
- ret = devm_add_action_or_reset(dev, ingenic_drm_release_rmem, dev);
- if (ret)
- return ret;
- }
}
priv = devm_drm_dev_alloc(dev, &ingenic_drm_driver_data,
--
2.53.0
^ permalink raw reply related
* [PATCH 16/42] drm: malidp: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/arm/malidp_drv.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/arm/malidp_drv.c b/drivers/gpu/drm/arm/malidp_drv.c
index 23fa942ae4bb..3e17513c3114 100644
--- a/drivers/gpu/drm/arm/malidp_drv.c
+++ b/drivers/gpu/drm/arm/malidp_drv.c
@@ -758,7 +758,7 @@ static int malidp_bind(struct device *dev)
return PTR_ERR(hwdev->pxlclk);
/* Get the optional framebuffer memory resource */
- ret = of_reserved_mem_device_init(dev);
+ ret = devm_of_reserved_mem_device_init(dev);
if (ret && ret != -ENODEV)
return ret;
@@ -887,7 +887,6 @@ static int malidp_bind(struct device *dev)
else
malidp_runtime_pm_suspend(dev);
dev_set_drvdata(dev, NULL);
- of_reserved_mem_device_release(dev);
return ret;
}
@@ -913,7 +912,6 @@ static void malidp_unbind(struct device *dev)
else
malidp_runtime_pm_suspend(dev);
dev_set_drvdata(dev, NULL);
- of_reserved_mem_device_release(dev);
}
static const struct component_master_ops malidp_master_ops = {
--
2.53.0
^ permalink raw reply related
* [PATCH 15/42] drm: komeda: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/arm/display/komeda/komeda_dev.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/arm/display/komeda/komeda_dev.c b/drivers/gpu/drm/arm/display/komeda/komeda_dev.c
index 9aad1d1d28ec..8016f5a68cba 100644
--- a/drivers/gpu/drm/arm/display/komeda/komeda_dev.c
+++ b/drivers/gpu/drm/arm/display/komeda/komeda_dev.c
@@ -145,7 +145,7 @@ static int komeda_parse_dt(struct device *dev, struct komeda_dev *mdev)
}
/* Get the optional framebuffer memory resource */
- ret = of_reserved_mem_device_init(dev);
+ ret = devm_of_reserved_mem_device_init(dev);
if (ret && ret != -ENODEV)
return ret;
@@ -292,8 +292,6 @@ void komeda_dev_destroy(struct komeda_dev *mdev)
mdev->n_pipelines = 0;
- of_reserved_mem_device_release(dev);
-
if (funcs && funcs->cleanup)
funcs->cleanup(mdev);
--
2.53.0
^ permalink raw reply related
* [PATCH 14/42] memory: tegra210-emc: Use devm_of_reserved_mem_device_init_by_name()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Switch to the new devm_of_reserved_mem_device_init_by_name() for both
the nominal and derated reserved memory regions so they are released
automatically on probe failure or device removal.
All six goto release paths in the probe function precede clock attach
and debugfs initialization, so they become plain return statements.
The release: label and its explicit of_reserved_mem_device_release()
calls in both the probe error path and tegra210_emc_remove() are
removed.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/memory/tegra/tegra210-emc-core.c | 21 +++++++++------------
1 file changed, 9 insertions(+), 12 deletions(-)
diff --git a/drivers/memory/tegra/tegra210-emc-core.c b/drivers/memory/tegra/tegra210-emc-core.c
index e8d4cd8fdec2..07c7654dac63 100644
--- a/drivers/memory/tegra/tegra210-emc-core.c
+++ b/drivers/memory/tegra/tegra210-emc-core.c
@@ -1847,16 +1847,16 @@ static int tegra210_emc_probe(struct platform_device *pdev)
np = pdev->dev.of_node;
/* attach to the nominal and (optional) derated tables */
- err = of_reserved_mem_device_init_by_name(emc->dev, np, "nominal");
+ err = devm_of_reserved_mem_device_init_by_name(emc->dev, np, "nominal");
if (err < 0) {
dev_err(emc->dev, "failed to get nominal EMC table: %d\n", err);
return err;
}
- err = of_reserved_mem_device_init_by_name(emc->dev, np, "derated");
+ err = devm_of_reserved_mem_device_init_by_name(emc->dev, np, "derated");
if (err < 0 && err != -ENODEV) {
dev_err(emc->dev, "failed to get derated EMC table: %d\n", err);
- goto release;
+ return err;
}
/* validate the tables */
@@ -1864,14 +1864,14 @@ static int tegra210_emc_probe(struct platform_device *pdev)
err = tegra210_emc_validate_timings(emc, emc->nominal,
emc->num_timings);
if (err < 0)
- goto release;
+ return err;
}
if (emc->derated) {
err = tegra210_emc_validate_timings(emc, emc->derated,
emc->num_timings);
if (err < 0)
- goto release;
+ return err;
}
/* default to the nominal table */
@@ -1891,7 +1891,7 @@ static int tegra210_emc_probe(struct platform_device *pdev)
dev_err(emc->dev, "no EMC table entry found for %lu kHz\n",
current_rate);
err = -ENOENT;
- goto release;
+ return err;
}
/* pick a compatible clock change sequence for the EMC table */
@@ -1909,7 +1909,7 @@ static int tegra210_emc_probe(struct platform_device *pdev)
dev_err(&pdev->dev, "sequence %u not supported\n",
emc->timings[0].revision);
err = -ENOTSUPP;
- goto release;
+ return err;
}
emc->offsets = &tegra210_emc_table_register_offsets;
@@ -1924,7 +1924,7 @@ static int tegra210_emc_probe(struct platform_device *pdev)
GFP_KERNEL);
if (!emc->provider.configs) {
err = -ENOMEM;
- goto release;
+ return err;
}
emc->provider.num_configs = emc->num_timings;
@@ -1949,7 +1949,7 @@ static int tegra210_emc_probe(struct platform_device *pdev)
err = tegra210_clk_emc_attach(emc->clk, &emc->provider);
if (err < 0) {
dev_err(&pdev->dev, "failed to attach to EMC clock: %d\n", err);
- goto release;
+ return err;
}
emc->clkchange_delay = 100;
@@ -1979,8 +1979,6 @@ static int tegra210_emc_probe(struct platform_device *pdev)
detach:
debugfs_remove_recursive(emc->debugfs.root);
tegra210_clk_emc_detach(emc->clk);
-release:
- of_reserved_mem_device_release(emc->dev);
return err;
}
@@ -1991,7 +1989,6 @@ static void tegra210_emc_remove(struct platform_device *pdev)
debugfs_remove_recursive(emc->debugfs.root);
tegra210_clk_emc_detach(emc->clk);
- of_reserved_mem_device_release(emc->dev);
}
static int __maybe_unused tegra210_emc_suspend(struct device *dev)
--
2.53.0
^ permalink raw reply related
* [PATCH 13/42] media: nuvoton: npcm-video: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Switch to devm_of_reserved_mem_device_init() so the reserved memory
region is released automatically on probe failure or device removal.
Remove the four explicit of_reserved_mem_device_release() calls and
collapse the now-empty err_release_mem label into err_free.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/media/platform/nuvoton/npcm-video.c | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/drivers/media/platform/nuvoton/npcm-video.c b/drivers/media/platform/nuvoton/npcm-video.c
index 52505af35c08..6786736c8f07 100644
--- a/drivers/media/platform/nuvoton/npcm-video.c
+++ b/drivers/media/platform/nuvoton/npcm-video.c
@@ -1715,17 +1715,15 @@ static int npcm_video_init(struct npcm_video *video)
return rc;
}
- of_reserved_mem_device_init(dev);
+ devm_of_reserved_mem_device_init(dev);
rc = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
if (rc) {
dev_err(dev, "Failed to set DMA mask\n");
- of_reserved_mem_device_release(dev);
return rc;
}
rc = npcm_video_ece_init(video);
if (rc) {
- of_reserved_mem_device_release(dev);
dev_err(dev, "Failed to initialize ECE\n");
return rc;
}
@@ -1789,13 +1787,11 @@ static int npcm_video_probe(struct platform_device *pdev)
rc = npcm_video_setup_video(video);
if (rc)
- goto err_release_mem;
+ goto err_free;
dev_info(video->dev, "NPCM video driver probed\n");
return 0;
-err_release_mem:
- of_reserved_mem_device_release(&pdev->dev);
err_free:
kfree(video);
return rc;
@@ -1814,7 +1810,6 @@ static void npcm_video_remove(struct platform_device *pdev)
if (video->ece.enable)
npcm_video_ece_stop(video);
kfree(video);
- of_reserved_mem_device_release(dev);
}
static const struct of_device_id npcm_video_match[] = {
--
2.53.0
^ permalink raw reply related
* [PATCH 02/42] of: reserved_mem: Add devm_of_reserved_mem_device_init_by_name()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Add a resource managed inline wrapper for
of_reserved_mem_device_init_by_name() to complement the existing
devm_of_reserved_mem_device_init_by_idx() and
devm_of_reserved_mem_device_init() helpers.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
include/linux/of_reserved_mem.h | 21 +++++++++++++++++++++
1 file changed, 21 insertions(+)
diff --git a/include/linux/of_reserved_mem.h b/include/linux/of_reserved_mem.h
index b9fd78123d77..52aacdbf432c 100644
--- a/include/linux/of_reserved_mem.h
+++ b/include/linux/of_reserved_mem.h
@@ -133,4 +133,25 @@ static inline int devm_of_reserved_mem_device_init(struct device *dev)
return devm_of_reserved_mem_device_init_by_idx(dev, dev->of_node, 0);
}
+/**
+ * devm_of_reserved_mem_device_init_by_name() - Resource managed of_reserved_mem_device_init_by_name
+ * @dev: Pointer to the device to configure
+ * @np: Pointer to the device node with 'memory-region' property
+ * @name: Name of the selected memory region
+ *
+ * This is a resource managed version of of_reserved_mem_device_init_by_name().
+ * The reserved memory region will be released automatically when the device
+ * is unbound.
+ *
+ * Returns error code or zero on success.
+ */
+static inline int devm_of_reserved_mem_device_init_by_name(struct device *dev,
+ struct device_node *np,
+ const char *name)
+{
+ int idx = of_property_match_string(np, "memory-region-names", name);
+
+ return devm_of_reserved_mem_device_init_by_idx(dev, np, idx);
+}
+
#endif /* __OF_RESERVED_MEM_H */
--
2.53.0
^ permalink raw reply related
* [PATCH 01/42] of: reserved_mem: Introduce devres-managed initialization functions
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Konrad Dybcio, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Introduce devres-based helpers for of_reserved_mem_device_init(_by_idx)
to help fight dangling references and ever so slightly reduce the
number of boilerplate deinitialization calls.
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/of/of_reserved_mem.c | 41 +++++++++++++++++++++++++++++++++
include/linux/of_reserved_mem.h | 25 ++++++++++++++++++++
2 files changed, 66 insertions(+)
diff --git a/drivers/of/of_reserved_mem.c b/drivers/of/of_reserved_mem.c
index 82222bd45ac6..b35541e9fbe8 100644
--- a/drivers/of/of_reserved_mem.c
+++ b/drivers/of/of_reserved_mem.c
@@ -787,6 +787,47 @@ void of_reserved_mem_device_release(struct device *dev)
}
EXPORT_SYMBOL_GPL(of_reserved_mem_device_release);
+static void devm_of_reserved_mem_device_release(struct device *dev, void *res)
+{
+ of_reserved_mem_device_release(*(struct device **)res);
+}
+
+/**
+ * devm_of_reserved_mem_device_init_by_idx() - Resource managed of_reserved_mem_device_init_by_idx()
+ * @dev: Pointer to the device to configure
+ * @np: Pointer to the device node with 'memory-region' property
+ * @idx: Index of selected region
+ *
+ * This is a resource managed version of of_reserved_mem_device_init_by_idx().
+ * The reserved memory region will be released automatically when the device
+ * is unbound.
+ *
+ * Returns: Negative errno on failure or zero on success.
+ */
+int devm_of_reserved_mem_device_init_by_idx(struct device *dev,
+ struct device_node *np, int idx)
+{
+ struct device **ptr;
+ int ret;
+
+ ptr = devres_alloc(devm_of_reserved_mem_device_release, sizeof(*ptr),
+ GFP_KERNEL);
+ if (!ptr)
+ return -ENOMEM;
+
+ ret = of_reserved_mem_device_init_by_idx(dev, np, idx);
+ if (ret) {
+ devres_free(ptr);
+ return ret;
+ }
+
+ *ptr = dev;
+ devres_add(dev, ptr);
+
+ return 0;
+}
+EXPORT_SYMBOL_GPL(devm_of_reserved_mem_device_init_by_idx);
+
/**
* of_reserved_mem_lookup() - acquire reserved_mem from a device node
* @np: node pointer of the desired reserved-memory region
diff --git a/include/linux/of_reserved_mem.h b/include/linux/of_reserved_mem.h
index e8b20b29fa68..b9fd78123d77 100644
--- a/include/linux/of_reserved_mem.h
+++ b/include/linux/of_reserved_mem.h
@@ -40,6 +40,9 @@ int of_reserved_mem_device_init_by_name(struct device *dev,
const char *name);
void of_reserved_mem_device_release(struct device *dev);
+int devm_of_reserved_mem_device_init_by_idx(struct device *dev,
+ struct device_node *np, int idx);
+
struct reserved_mem *of_reserved_mem_lookup(struct device_node *np);
int of_reserved_mem_region_to_resource(const struct device_node *np,
unsigned int idx, struct resource *res);
@@ -68,6 +71,13 @@ static inline int of_reserved_mem_device_init_by_name(struct device *dev,
static inline void of_reserved_mem_device_release(struct device *pdev) { }
+static inline int devm_of_reserved_mem_device_init_by_idx(struct device *dev,
+ struct device_node *np,
+ int idx)
+{
+ return -EOPNOTSUPP;
+}
+
static inline struct reserved_mem *of_reserved_mem_lookup(struct device_node *np)
{
return NULL;
@@ -108,4 +118,19 @@ static inline int of_reserved_mem_device_init(struct device *dev)
return of_reserved_mem_device_init_by_idx(dev, dev->of_node, 0);
}
+/**
+ * devm_of_reserved_mem_device_init() - Resource managed version of of_reserved_mem_device_init()
+ * @dev: Pointer to the device to configure
+ *
+ * This is a resource managed version of of_reserved_mem_device_init().
+ * The reserved memory region will be released automatically when the device
+ * is unbound.
+ *
+ * Returns error code or zero on success.
+ */
+static inline int devm_of_reserved_mem_device_init(struct device *dev)
+{
+ return devm_of_reserved_mem_device_init_by_idx(dev, dev->of_node, 0);
+}
+
#endif /* __OF_RESERVED_MEM_H */
--
2.53.0
^ permalink raw reply related
* [PATCH 32/42] drm: aspeed: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() to ensure
the reserved memory region is released on device removal, fixing a
missing cleanup in the original code.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
index d4577663a1f0..2c7e54fc35d9 100644
--- a/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
+++ b/drivers/gpu/drm/aspeed/aspeed_gfx_drv.c
@@ -168,7 +168,7 @@ static int aspeed_gfx_load(struct drm_device *drm)
}
}
- ret = of_reserved_mem_device_init(drm->dev);
+ ret = devm_of_reserved_mem_device_init(drm->dev);
if (ret) {
dev_err(&pdev->dev,
"failed to initialize reserved mem: %d\n", ret);
--
2.53.0
^ permalink raw reply related
* [PATCH 31/42] ASoC: cix-ipbloq: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() to ensure
the reserved memory region is released on device removal, fixing a
missing cleanup in the original code.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
sound/hda/controllers/cix-ipbloq.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/hda/controllers/cix-ipbloq.c b/sound/hda/controllers/cix-ipbloq.c
index c1084a915c13..815932e5c58b 100644
--- a/sound/hda/controllers/cix-ipbloq.c
+++ b/sound/hda/controllers/cix-ipbloq.c
@@ -257,7 +257,7 @@ static int cix_ipbloq_hda_probe(struct platform_device *pdev)
dma_set_mask_and_coherent(hda->dev, DMA_BIT_MASK(32));
- err = of_reserved_mem_device_init(hda->dev);
+ err = devm_of_reserved_mem_device_init(hda->dev);
if (err < 0 && err != -ENODEV) {
dev_err(hda->dev,
"failed to init reserved mem for DMA, err = %d\n", err);
--
2.53.0
^ permalink raw reply related
* [PATCH 30/42] staging: media: cedrus: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init() instead of
the manual of_reserved_mem_device_init()/of_reserved_mem_device_release()
pair, letting the device resource manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/staging/media/sunxi/cedrus/cedrus_hw.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
index 444fb53878d1..7b5aa94064a1 100644
--- a/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
+++ b/drivers/staging/media/sunxi/cedrus/cedrus_hw.c
@@ -266,7 +266,7 @@ int cedrus_hw_probe(struct cedrus_dev *dev)
return ret;
}
- ret = of_reserved_mem_device_init(dev->dev);
+ ret = devm_of_reserved_mem_device_init(dev->dev);
if (ret && ret != -ENODEV) {
dev_err(dev->dev, "Failed to reserve memory\n");
@@ -341,8 +341,6 @@ int cedrus_hw_probe(struct cedrus_dev *dev)
err_sram:
sunxi_sram_release(dev->dev);
err_mem:
- of_reserved_mem_device_release(dev->dev);
-
return ret;
}
@@ -353,6 +351,4 @@ void cedrus_hw_remove(struct cedrus_dev *dev)
cedrus_hw_suspend(dev->dev);
sunxi_sram_release(dev->dev);
-
- of_reserved_mem_device_release(dev->dev);
}
--
2.53.0
^ permalink raw reply related
* [PATCH 29/42] ASoC: SOF: imx: Use devm_of_reserved_mem_device_init_by_name()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Use the devres-managed devm_of_reserved_mem_device_init_by_name()
instead of the manual of_reserved_mem_device_init_by_name()/
of_reserved_mem_device_release() pair, letting the device resource
manager handle cleanup automatically.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
sound/soc/sof/imx/imx-common.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/sound/soc/sof/imx/imx-common.c b/sound/soc/sof/imx/imx-common.c
index 7a03c8cc5dd4..29314022c11f 100644
--- a/sound/soc/sof/imx/imx-common.c
+++ b/sound/soc/sof/imx/imx-common.c
@@ -330,9 +330,6 @@ static void imx_unregister_action(void *data)
sdev = data;
common = sdev->pdata->hw_pdata;
- if (get_chip_info(sdev)->has_dma_reserved)
- of_reserved_mem_device_release(sdev->dev);
-
platform_device_unregister(common->ipc_dev);
}
@@ -362,9 +359,9 @@ static int imx_probe(struct snd_sof_dev *sdev)
"failed to create IPC device\n");
if (get_chip_info(sdev)->has_dma_reserved) {
- ret = of_reserved_mem_device_init_by_name(sdev->dev,
- pdev->dev.of_node,
- "dma");
+ ret = devm_of_reserved_mem_device_init_by_name(sdev->dev,
+ pdev->dev.of_node,
+ "dma");
if (ret) {
platform_device_unregister(common->ipc_dev);
--
2.53.0
^ permalink raw reply related
* [PATCH 12/42] media: aspeed: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Switch to devm_of_reserved_mem_device_init() so the reserved memory
region is released automatically on probe failure or device removal.
Remove the three explicit of_reserved_mem_device_release() calls and
rename the error label from err_release_reserved_mem to
err_unprepare_vclk to reflect that it now only unwinds clock state.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/media/platform/aspeed/aspeed-video.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)
diff --git a/drivers/media/platform/aspeed/aspeed-video.c b/drivers/media/platform/aspeed/aspeed-video.c
index a292275f6b7b..7ba9314fdbd2 100644
--- a/drivers/media/platform/aspeed/aspeed-video.c
+++ b/drivers/media/platform/aspeed/aspeed-video.c
@@ -2267,19 +2267,19 @@ static int aspeed_video_init(struct aspeed_video *video)
if (rc)
goto err_unprepare_eclk;
- of_reserved_mem_device_init(dev);
+ devm_of_reserved_mem_device_init(dev);
rc = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(32));
if (rc) {
dev_err(dev, "Failed to set DMA mask\n");
- goto err_release_reserved_mem;
+ goto err_unprepare_vclk;
}
if (!aspeed_video_alloc_buf(video, &video->jpeg,
VE_JPEG_HEADER_SIZE)) {
dev_err(dev, "Failed to allocate DMA for JPEG header\n");
rc = -ENOMEM;
- goto err_release_reserved_mem;
+ goto err_unprepare_vclk;
}
dev_info(video->dev, "alloc mem size(%d) at %pad for jpeg header\n",
VE_JPEG_HEADER_SIZE, &video->jpeg.dma);
@@ -2288,8 +2288,7 @@ static int aspeed_video_init(struct aspeed_video *video)
return 0;
-err_release_reserved_mem:
- of_reserved_mem_device_release(dev);
+err_unprepare_vclk:
clk_unprepare(video->vclk);
err_unprepare_eclk:
clk_unprepare(video->eclk);
@@ -2343,7 +2342,6 @@ static int aspeed_video_probe(struct platform_device *pdev)
rc = aspeed_video_setup_video(video);
if (rc) {
aspeed_video_free_buf(video, &video->jpeg);
- of_reserved_mem_device_release(&pdev->dev);
clk_unprepare(video->vclk);
clk_unprepare(video->eclk);
return rc;
@@ -2374,8 +2372,6 @@ static void aspeed_video_remove(struct platform_device *pdev)
v4l2_device_unregister(v4l2_dev);
aspeed_video_free_buf(video, &video->jpeg);
-
- of_reserved_mem_device_release(dev);
}
static struct platform_driver aspeed_video_driver = {
--
2.53.0
^ permalink raw reply related
* [PATCH 11/42] remoteproc: mtk_scp: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Switch to devm_of_reserved_mem_device_init() so the reserved memory
region is released automatically when the device is unbound. Remove
the explicit of_reserved_mem_device_release() call from
scp_unmap_memory_region(). The DMA coherent buffer is still freed
explicitly there before devres releases the reserved memory region,
preserving the correct teardown order.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/remoteproc/mtk_scp.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/remoteproc/mtk_scp.c b/drivers/remoteproc/mtk_scp.c
index 85a74c9ec521..a4387649ad7f 100644
--- a/drivers/remoteproc/mtk_scp.c
+++ b/drivers/remoteproc/mtk_scp.c
@@ -1027,7 +1027,7 @@ static int scp_map_memory_region(struct mtk_scp *scp)
int ret;
const struct mtk_scp_sizes_data *scp_sizes;
- ret = of_reserved_mem_device_init(scp->dev);
+ ret = devm_of_reserved_mem_device_init(scp->dev);
/* reserved memory is optional. */
if (ret == -ENODEV) {
@@ -1060,7 +1060,6 @@ static void scp_unmap_memory_region(struct mtk_scp *scp)
dma_free_coherent(scp->dev, scp_sizes->max_dram_size, scp->cpu_addr,
scp->dma_addr);
- of_reserved_mem_device_release(scp->dev);
}
static int scp_register_ipi(struct platform_device *pdev, u32 id,
--
2.53.0
^ permalink raw reply related
* [PATCH 10/42] drm: pl111: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Switch to devm_of_reserved_mem_device_init() so the reserved memory
region is released automatically on probe failure or device removal.
Remove the explicit of_reserved_mem_device_release() calls in the
dev_put error path and pl111_amba_remove().
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/pl111/pl111_drv.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/pl111/pl111_drv.c b/drivers/gpu/drm/pl111/pl111_drv.c
index ac7b1d12a0f5..25ce37a4e8bf 100644
--- a/drivers/gpu/drm/pl111/pl111_drv.c
+++ b/drivers/gpu/drm/pl111/pl111_drv.c
@@ -254,7 +254,7 @@ static int pl111_amba_probe(struct amba_device *amba_dev,
drm->dev_private = priv;
priv->variant = variant;
- ret = of_reserved_mem_device_init(dev);
+ ret = devm_of_reserved_mem_device_init(dev);
if (!ret) {
drm_info(drm, "using device-specific reserved memory\n");
priv->use_device_memory = true;
@@ -313,7 +313,6 @@ static int pl111_amba_probe(struct amba_device *amba_dev,
dev_put:
drm_dev_put(drm);
- of_reserved_mem_device_release(dev);
return ret;
}
@@ -329,7 +328,6 @@ static void pl111_amba_remove(struct amba_device *amba_dev)
if (priv->panel)
drm_panel_bridge_remove(priv->bridge);
drm_dev_put(drm);
- of_reserved_mem_device_release(dev);
}
static void pl111_amba_shutdown(struct amba_device *amba_dev)
--
2.53.0
^ permalink raw reply related
* [PATCH 09/42] drm: hdlcd: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Switch to devm_of_reserved_mem_device_init() so the reserved memory
region is released automatically on probe failure or device unbind.
Remove the three explicit of_reserved_mem_device_release() calls in
the setup_fail error path, the bind error path, and hdlcd_drm_unbind().
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/arm/hdlcd_drv.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/arm/hdlcd_drv.c b/drivers/gpu/drm/arm/hdlcd_drv.c
index 81d45f2dd6a7..67466fd441d5 100644
--- a/drivers/gpu/drm/arm/hdlcd_drv.c
+++ b/drivers/gpu/drm/arm/hdlcd_drv.c
@@ -134,7 +134,7 @@ static int hdlcd_load(struct drm_device *drm, unsigned long flags)
version & HDLCD_VERSION_MINOR_MASK);
/* Get the optional framebuffer memory resource */
- ret = of_reserved_mem_device_init(drm->dev);
+ ret = devm_of_reserved_mem_device_init(drm->dev);
if (ret && ret != -ENODEV)
return ret;
@@ -164,8 +164,6 @@ static int hdlcd_load(struct drm_device *drm, unsigned long flags)
irq_fail:
drm_crtc_cleanup(&hdlcd->crtc);
setup_fail:
- of_reserved_mem_device_release(drm->dev);
-
return ret;
}
@@ -316,7 +314,6 @@ static int hdlcd_drm_bind(struct device *dev)
of_node_put(hdlcd->crtc.port);
hdlcd->crtc.port = NULL;
hdlcd_irq_uninstall(hdlcd);
- of_reserved_mem_device_release(drm->dev);
err_free:
dev_set_drvdata(dev, NULL);
return ret;
@@ -338,7 +335,6 @@ static void hdlcd_drm_unbind(struct device *dev)
pm_runtime_put(dev);
if (pm_runtime_enabled(dev))
pm_runtime_disable(dev);
- of_reserved_mem_device_release(dev);
dev_set_drvdata(dev, NULL);
}
--
2.53.0
^ permalink raw reply related
* [PATCH 08/42] drm: logicvc: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Switch to devm_of_reserved_mem_device_init() so the reserved memory
region is released automatically on probe failure or device unbind.
Replace all error paths that jumped to error_reserved_mem: with
error_early: since the manual cleanup label is no longer needed, and
remove the explicit of_reserved_mem_device_release() call in the remove
function.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/gpu/drm/logicvc/logicvc_drm.c | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/drivers/gpu/drm/logicvc/logicvc_drm.c b/drivers/gpu/drm/logicvc/logicvc_drm.c
index bbebf4fc7f51..d6dbe52ff0a9 100644
--- a/drivers/gpu/drm/logicvc/logicvc_drm.c
+++ b/drivers/gpu/drm/logicvc/logicvc_drm.c
@@ -306,7 +306,7 @@ static int logicvc_drm_probe(struct platform_device *pdev)
int irq;
int ret;
- ret = of_reserved_mem_device_init(dev);
+ ret = devm_of_reserved_mem_device_init(dev);
if (ret && ret != -ENODEV) {
dev_err(dev, "Failed to init memory region\n");
goto error_early;
@@ -327,14 +327,14 @@ static int logicvc_drm_probe(struct platform_device *pdev)
ret = of_address_to_resource(of_node, 0, &res);
if (ret) {
dev_err(dev, "Failed to get resource from address\n");
- goto error_reserved_mem;
+ goto error_early;
}
base = devm_ioremap_resource(dev, &res);
if (IS_ERR(base)) {
dev_err(dev, "Failed to map I/O base\n");
ret = PTR_ERR(base);
- goto error_reserved_mem;
+ goto error_early;
}
logicvc_drm_regmap_config.max_register = resource_size(&res) -
@@ -345,21 +345,21 @@ static int logicvc_drm_probe(struct platform_device *pdev)
if (IS_ERR(regmap)) {
dev_err(dev, "Failed to create regmap for I/O\n");
ret = PTR_ERR(regmap);
- goto error_reserved_mem;
+ goto error_early;
}
}
irq = platform_get_irq(pdev, 0);
if (irq < 0) {
ret = -ENODEV;
- goto error_reserved_mem;
+ goto error_early;
}
logicvc = devm_drm_dev_alloc(dev, &logicvc_drm_driver,
struct logicvc_drm, drm_dev);
if (IS_ERR(logicvc)) {
ret = PTR_ERR(logicvc);
- goto error_reserved_mem;
+ goto error_early;
}
platform_set_drvdata(pdev, logicvc);
@@ -371,7 +371,7 @@ static int logicvc_drm_probe(struct platform_device *pdev)
caps = logicvc_drm_caps_match(logicvc);
if (!caps) {
ret = -EINVAL;
- goto error_reserved_mem;
+ goto error_early;
}
logicvc->caps = caps;
@@ -382,7 +382,7 @@ static int logicvc_drm_probe(struct platform_device *pdev)
ret = logicvc_clocks_prepare(logicvc);
if (ret) {
drm_err(drm_dev, "Failed to prepare clocks\n");
- goto error_reserved_mem;
+ goto error_early;
}
ret = devm_request_irq(dev, irq, logicvc_drm_irq_handler, 0,
@@ -450,9 +450,6 @@ static int logicvc_drm_probe(struct platform_device *pdev)
error_clocks:
logicvc_clocks_unprepare(logicvc);
-error_reserved_mem:
- of_reserved_mem_device_release(dev);
-
error_early:
return ret;
}
@@ -469,8 +466,6 @@ static void logicvc_drm_remove(struct platform_device *pdev)
logicvc_mode_fini(logicvc);
logicvc_clocks_unprepare(logicvc);
-
- of_reserved_mem_device_release(dev);
}
static void logicvc_drm_shutdown(struct platform_device *pdev)
--
2.53.0
^ permalink raw reply related
* [PATCH 07/42] remoteproc: omap: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Replace the hand-rolled omap_rproc_mem_release() devres action with
devm_of_reserved_mem_device_init(), which handles the cleanup
automatically. This removes both the wrapper function and the
devm_add_action_or_reset() call.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/remoteproc/omap_remoteproc.c | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/drivers/remoteproc/omap_remoteproc.c b/drivers/remoteproc/omap_remoteproc.c
index 6ed0f28edac9..74262f873d40 100644
--- a/drivers/remoteproc/omap_remoteproc.c
+++ b/drivers/remoteproc/omap_remoteproc.c
@@ -1276,13 +1276,6 @@ static int omap_rproc_of_get_timers(struct platform_device *pdev,
return 0;
}
-static void omap_rproc_mem_release(void *data)
-{
- struct device *dev = data;
-
- of_reserved_mem_device_release(dev);
-}
-
static int omap_rproc_probe(struct platform_device *pdev)
{
struct device_node *np = pdev->dev.of_node;
@@ -1359,15 +1352,11 @@ static int omap_rproc_probe(struct platform_device *pdev)
if (IS_ERR(oproc->fck))
return PTR_ERR(oproc->fck);
- ret = of_reserved_mem_device_init(&pdev->dev);
- if (ret) {
+ if (devm_of_reserved_mem_device_init(&pdev->dev)) {
dev_warn(&pdev->dev, "device does not have specific CMA pool.\n");
dev_warn(&pdev->dev, "Typically this should be provided,\n");
dev_warn(&pdev->dev, "only omit if you know what you are doing.\n");
}
- ret = devm_add_action_or_reset(&pdev->dev, omap_rproc_mem_release, &pdev->dev);
- if (ret)
- return ret;
platform_set_drvdata(pdev, rproc);
--
2.53.0
^ permalink raw reply related
* [PATCH 06/42] media: synopsys: hdmirx: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Replace the hand-rolled devm_hdmirx_of_reserved_mem_device_release()
devres action with devm_of_reserved_mem_device_init(), which handles the
cleanup automatically. This removes both the wrapper function and the
devm_add_action_or_reset() call.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
.../media/platform/synopsys/hdmirx/snps_hdmirx.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c b/drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c
index 25f8ca0d6d94..7c6acc6d7e88 100644
--- a/drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c
+++ b/drivers/media/platform/synopsys/hdmirx/snps_hdmirx.c
@@ -2265,11 +2265,6 @@ static const struct hdmirx_cec_ops hdmirx_cec_ops = {
.read = hdmirx_readl,
};
-static void devm_hdmirx_of_reserved_mem_device_release(void *dev)
-{
- of_reserved_mem_device_release(dev);
-}
-
static int hdmirx_parse_dt(struct snps_hdmirx_dev *hdmirx_dev)
{
struct device *dev = hdmirx_dev->dev;
@@ -2316,16 +2311,9 @@ static int hdmirx_parse_dt(struct snps_hdmirx_dev *hdmirx_dev)
if (!device_property_read_bool(dev, "hpd-is-active-low"))
hdmirx_dev->hpd_trigger_level_high = true;
- ret = of_reserved_mem_device_init(dev);
- if (ret) {
+ ret = devm_of_reserved_mem_device_init(dev);
+ if (ret)
dev_warn(dev, "no reserved memory for HDMIRX, use default CMA\n");
- } else {
- ret = devm_add_action_or_reset(dev,
- devm_hdmirx_of_reserved_mem_device_release,
- dev);
- if (ret)
- return ret;
- }
return 0;
}
--
2.53.0
^ permalink raw reply related
* [PATCH 05/42] remoteproc: keystone: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Replace the hand-rolled keystone_rproc_mem_release() devres action with
devm_of_reserved_mem_device_init(), which handles the cleanup
automatically. This removes both the wrapper function and the
devm_add_action_or_reset() call.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/remoteproc/keystone_remoteproc.c | 16 ++--------------
1 file changed, 2 insertions(+), 14 deletions(-)
diff --git a/drivers/remoteproc/keystone_remoteproc.c b/drivers/remoteproc/keystone_remoteproc.c
index 83763d640c4e..7834a50da209 100644
--- a/drivers/remoteproc/keystone_remoteproc.c
+++ b/drivers/remoteproc/keystone_remoteproc.c
@@ -330,13 +330,6 @@ static int keystone_rproc_of_get_dev_syscon(struct platform_device *pdev,
return 0;
}
-static void keystone_rproc_mem_release(void *data)
-{
- struct device *dev = data;
-
- of_reserved_mem_device_release(dev);
-}
-
static void keystone_rproc_pm_runtime_put(void *data)
{
struct device *dev = data;
@@ -426,14 +419,9 @@ static int keystone_rproc_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(dev, ret, "failed to get gpio for virtio kicks\n");
- ret = of_reserved_mem_device_init(dev);
- if (ret) {
+ ret = devm_of_reserved_mem_device_init(dev);
+ if (ret)
dev_warn(dev, "device does not have specific CMA pool\n");
- } else {
- ret = devm_add_action_or_reset(dev, keystone_rproc_mem_release, dev);
- if (ret)
- return ret;
- }
/* ensure the DSP is in reset before loading firmware */
ret = reset_control_status(ksproc->reset);
--
2.53.0
^ permalink raw reply related
* [PATCH 04/42] remoteproc: da8xx: Use devm_of_reserved_mem_device_init()
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
In-Reply-To: <20260703193855.110619-1-mukesh.ojha@oss.qualcomm.com>
Replace the hand-rolled da8xx_rproc_mem_release() devres action with
devm_of_reserved_mem_device_init(), which handles the cleanup
automatically. This removes both the wrapper function and the
devm_add_action_or_reset() call.
Signed-off-by: Mukesh Ojha <mukesh.ojha@oss.qualcomm.com>
---
drivers/remoteproc/da8xx_remoteproc.c | 10 +---------
1 file changed, 1 insertion(+), 9 deletions(-)
diff --git a/drivers/remoteproc/da8xx_remoteproc.c b/drivers/remoteproc/da8xx_remoteproc.c
index 23fca7176539..cd9a8f2b3163 100644
--- a/drivers/remoteproc/da8xx_remoteproc.c
+++ b/drivers/remoteproc/da8xx_remoteproc.c
@@ -230,13 +230,6 @@ static int da8xx_rproc_get_internal_memories(struct platform_device *pdev,
return 0;
}
-static void da8xx_rproc_mem_release(void *data)
-{
- struct device *dev = data;
-
- of_reserved_mem_device_release(dev);
-}
-
static int da8xx_rproc_probe(struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
@@ -267,10 +260,9 @@ static int da8xx_rproc_probe(struct platform_device *pdev)
"unable to get reset control\n");
if (dev->of_node) {
- ret = of_reserved_mem_device_init(dev);
+ ret = devm_of_reserved_mem_device_init(dev);
if (ret)
return dev_err_probe(dev, ret, "device does not have specific CMA pool\n");
- devm_add_action_or_reset(&pdev->dev, da8xx_rproc_mem_release, &pdev->dev);
}
ret = da8xx_rproc_get_internal_memories(pdev, drproc);
--
2.53.0
^ permalink raw reply related
* [PATCH 00/42] of: reserved_mem: Introduce devres helpers and convert drivers
From: Mukesh Ojha @ 2026-07-03 19:38 UTC (permalink / raw)
To: Bjorn Andersson, Konrad Dybcio, Liviu Dudau, Maarten Lankhorst,
Maxime Ripard, Thomas Zimmermann, David Airlie, Simona Vetter,
Joel Stanley, Andrew Jeffery, Paul Cercueil, Anitha Chrisanthus,
Paul Kocialkowski, Linus Walleij, Chen-Yu Tsai, Jernej Skrabec,
Samuel Holland, Alexey Brodkin, Laurent Pinchart, Tomi Valkeinen,
Michal Simek, Daniel Scally, Jacopo Mondi, Mauro Carvalho Chehab,
Eddie James, Tiffany Lin, Andrew-CT Chen, Yunfei Dong,
Minghsiu Tsai, Houlong Wei, Matthias Brugger,
AngeloGioacchino Del Regno, Joseph Liu, Marvin Lin,
Dmitry Osipenko, Krzysztof Kozlowski, Thierry Reding,
Jonathan Hunter, Srinivas Kandagatla, Arnd Bergmann,
Greg Kroah-Hartman, Ge Gordon, Adrian Hunter, Ulf Hansson,
Rob Herring, Saravana Kannan, Mathieu Poirier, Jaroslav Kysela,
Takashi Iwai, Shengjiu Wang, Xiubo Li, Liam Girdwood, Mark Brown,
Frank Li, Sascha Hauer, Peter Ujfalusi, Bard Liao, Daniel Baluta,
Orson Zhai, Baolin Wang, Peter Chen, Fugang Duan
Cc: Ekansh Gupta, BST Linux Kernel Upstream Group, Fabio Estevam,
Nicolin Chen, Pengutronix Kernel Team, Kai Vehmanen,
Pierre-Louis Bossart, Vijendar Mukunda, Chunyan Zhang,
CIX Linux Kernel Upstream Group, linux-arm-msm, linux-kernel,
dri-devel, linux-aspeed, linux-arm-kernel, linux-mips,
linux-sunxi, linux-media, openbmc, linux-mediatek, kernel,
linux-tegra, linux-mmc, devicetree, linux-remoteproc,
linux-staging, linux-sound, linuxppc-dev, imx,
sound-open-firmware, Mukesh Ojha
Drivers using of_reserved_mem_device_init() and its variants must
manually call of_reserved_mem_device_release() in their remove and
error-unwind paths. This is repetitive boilerplate that is easy to
get wrong, and several drivers have open-coded the teardown
inconsistently or skipped it entirely, leading to dangling reserved
memory references.
This series introduces devres-managed wrappers —
devm_of_reserved_mem_device_init(), devm_of_reserved_mem_device_init_by_idx(),
and devm_of_reserved_mem_device_init_by_name() — that tie the reserved
memory region lifetime to the device, releasing it automatically on
unbind. The remaining 40 patches convert drivers across the drm, media,
ASoC, remoteproc, firmware, mmc, memory and misc subsystems to use these
helpers, yielding a net reduction of ~90 lines of boilerplate.
This series depends on https://lore.kernel.org/lkml/20260703164457.4040457-1-mukesh.ojha@oss.qualcomm.com/
Konrad Dybcio (1):
of: reserved_mem: Introduce devres-managed initialization functions
Mukesh Ojha (41):
of: reserved_mem: Add devm_of_reserved_mem_device_init_by_name()
firmware: qcom: scm: Use devm_of_reserved_mem_device_init()
remoteproc: da8xx: Use devm_of_reserved_mem_device_init()
remoteproc: keystone: Use devm_of_reserved_mem_device_init()
media: synopsys: hdmirx: Use devm_of_reserved_mem_device_init()
remoteproc: omap: Use devm_of_reserved_mem_device_init()
drm: logicvc: Use devm_of_reserved_mem_device_init()
drm: hdlcd: Use devm_of_reserved_mem_device_init()
drm: pl111: Use devm_of_reserved_mem_device_init()
remoteproc: mtk_scp: Use devm_of_reserved_mem_device_init()
media: aspeed: Use devm_of_reserved_mem_device_init()
media: nuvoton: npcm-video: Use devm_of_reserved_mem_device_init()
memory: tegra210-emc: Use devm_of_reserved_mem_device_init_by_name()
drm: komeda: Use devm_of_reserved_mem_device_init()
drm: malidp: Use devm_of_reserved_mem_device_init()
drm: ingenic: Use devm_of_reserved_mem_device_init()
drm: kmb: Use devm_of_reserved_mem_device_init()
drm: sun4i: Use devm_of_reserved_mem_device_init()
drm: xlnx: zynqmp_dpsub: Use devm_of_reserved_mem_device_init()
media: arm: mali-c55: Use devm_of_reserved_mem_device_init()
media: mediatek: vpu: Use devm_of_reserved_mem_device_init()
mmc: sdhci-of-bst: Use devm_of_reserved_mem_device_init_by_idx()
remoteproc: ti_k3: Use devm_of_reserved_mem_device_init()
ASoC: mediatek: mt8192: Use devm_of_reserved_mem_device_init()
ASoC: mediatek: mt8196: Use devm_of_reserved_mem_device_init()
ASoC: mediatek: mt8183: Use devm_of_reserved_mem_device_init()
ASoC: mediatek: mt8189: Use devm_of_reserved_mem_device_init()
ASoC: SOF: imx: Use devm_of_reserved_mem_device_init_by_name()
staging: media: cedrus: Use devm_of_reserved_mem_device_init()
ASoC: cix-ipbloq: Use devm_of_reserved_mem_device_init()
drm: aspeed: Use devm_of_reserved_mem_device_init()
drm: arcpgu: Use devm_of_reserved_mem_device_init()
ASoC: mediatek: mt8173: Use devm_of_reserved_mem_device_init()
ASoC: mediatek: mt8186: Use devm_of_reserved_mem_device_init()
ASoC: mediatek: mt8188: Use devm_of_reserved_mem_device_init()
ASoC: mediatek: mt8195: Use devm_of_reserved_mem_device_init()
ASoC: SOF: mediatek: mt8186: Use devm_of_reserved_mem_device_init()
ASoC: SOF: mediatek: mt8195: Use devm_of_reserved_mem_device_init()
misc: fastrpc: Use devm_of_reserved_mem_device_init()
ASoC: fsl: imx-rpmsg: Use devm_of_reserved_mem_device_init_by_idx()
ASoC: sprd: Use devm_of_reserved_mem_device_init()
drivers/firmware/qcom/qcom_scm.c | 22 +++------
.../gpu/drm/arm/display/komeda/komeda_dev.c | 4 +-
drivers/gpu/drm/arm/hdlcd_drv.c | 6 +--
drivers/gpu/drm/arm/malidp_drv.c | 4 +-
drivers/gpu/drm/aspeed/aspeed_gfx_drv.c | 2 +-
drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 13 +-----
drivers/gpu/drm/kmb/kmb_drv.c | 12 +----
drivers/gpu/drm/logicvc/logicvc_drm.c | 21 ++++-----
drivers/gpu/drm/pl111/pl111_drv.c | 4 +-
drivers/gpu/drm/sun4i/sun4i_drv.c | 4 +-
drivers/gpu/drm/tiny/arcpgu.c | 2 +-
drivers/gpu/drm/xlnx/zynqmp_dpsub.c | 4 +-
.../platform/arm/mali-c55/mali-c55-core.c | 12 ++---
drivers/media/platform/aspeed/aspeed-video.c | 12 ++---
drivers/media/platform/mediatek/vpu/mtk_vpu.c | 3 +-
drivers/media/platform/nuvoton/npcm-video.c | 9 +---
.../platform/synopsys/hdmirx/snps_hdmirx.c | 16 +------
drivers/memory/tegra/tegra210-emc-core.c | 21 ++++-----
drivers/misc/fastrpc.c | 2 +-
drivers/mmc/host/sdhci-of-bst.c | 7 +--
drivers/of/of_reserved_mem.c | 41 +++++++++++++++++
drivers/remoteproc/da8xx_remoteproc.c | 10 +---
drivers/remoteproc/keystone_remoteproc.c | 16 +------
drivers/remoteproc/mtk_scp.c | 3 +-
drivers/remoteproc/omap_remoteproc.c | 13 +-----
drivers/remoteproc/ti_k3_common.c | 13 +-----
drivers/remoteproc/ti_k3_common.h | 1 -
.../staging/media/sunxi/cedrus/cedrus_hw.c | 6 +--
include/linux/of_reserved_mem.h | 46 +++++++++++++++++++
sound/hda/controllers/cix-ipbloq.c | 2 +-
sound/soc/fsl/imx-rpmsg.c | 2 +-
sound/soc/mediatek/mt8173/mt8173-afe-pcm.c | 2 +-
sound/soc/mediatek/mt8183/mt8183-afe-pcm.c | 13 +-----
sound/soc/mediatek/mt8186/mt8186-afe-pcm.c | 2 +-
sound/soc/mediatek/mt8188/mt8188-afe-pcm.c | 2 +-
sound/soc/mediatek/mt8189/mt8189-afe-pcm.c | 16 +------
sound/soc/mediatek/mt8192/mt8192-afe-pcm.c | 11 +----
sound/soc/mediatek/mt8195/mt8195-afe-pcm.c | 2 +-
sound/soc/mediatek/mt8196/mt8196-afe-pcm.c | 14 +-----
sound/soc/sof/imx/imx-common.c | 9 ++--
sound/soc/sof/mediatek/mt8186/mt8186.c | 2 +-
sound/soc/sof/mediatek/mt8195/mt8195.c | 2 +-
sound/soc/sprd/sprd-pcm-dma.c | 3 +-
43 files changed, 162 insertions(+), 249 deletions(-)
--
2.53.0
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox