[PATCH v2 05/17] media: rockchip: rga: use devres version of pm_runtime_enable
From: Sven Püschel
Date: Wed Sep 16 2026 - 11:35:49 EST
Use the devres version of pm_runtime_enable named
devm_pm_runtime_enable to ease up the cleanup handling. Also it avoids
having a mixed cleanup order due to the following
devm_platform_ioremap_resource being cleaned up anyways after the probe
function has returned.
This also changes some dev_err calls to dev_err_probe for convenient
returning. This may not print these messages in the error case, as
dev_err_probe may handle them differently based on the error (e.g.
ENOMEM won't be printed).
Signed-off-by: Sven Püschel <s.pueschel@xxxxxxxxxxxxxx>
---
v2
- added
---
drivers/media/platform/rockchip/rga/rga.c | 34 +++++++++++--------------------
1 file changed, 12 insertions(+), 22 deletions(-)
diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/platform/rockchip/rga/rga.c
index 8c03422d669cf..d7f0712177b70 100644
--- a/drivers/media/platform/rockchip/rga/rga.c
+++ b/drivers/media/platform/rockchip/rga/rga.c
@@ -797,37 +797,31 @@ static int rga_probe(struct platform_device *pdev)
if (ret)
return dev_err_probe(&pdev->dev, ret, "Unable to parse OF data\n");
- pm_runtime_enable(rga->dev);
+ ret = devm_pm_runtime_enable(rga->dev);
+ if (ret)
+ return ret;
rga->regs = devm_platform_ioremap_resource(pdev, 0);
- if (IS_ERR(rga->regs)) {
- ret = PTR_ERR(rga->regs);
- goto err_put_clk;
- }
+ if (IS_ERR(rga->regs))
+ return PTR_ERR(rga->regs);
irq = platform_get_irq(pdev, 0);
- if (irq < 0) {
- ret = irq;
- goto err_put_clk;
- }
+ if (irq < 0)
+ return irq;
ret = devm_request_irq(rga->dev, irq, rga_isr,
rga_has_internal_iommu(rga) ? 0 : IRQF_SHARED,
dev_name(rga->dev), rga);
- if (ret < 0) {
- dev_err(rga->dev, "failed to request irq\n");
- goto err_put_clk;
- }
+ if (ret < 0)
+ return dev_err_probe(rga->dev, ret, "failed to request irq\n");
ret = dma_set_mask_and_coherent(rga->dev, DMA_BIT_MASK(32));
- if (ret) {
- dev_err(rga->dev, "32-bit DMA not supported");
- goto err_put_clk;
- }
+ if (ret)
+ dev_err_probe(rga->dev, ret, "32-bit DMA not supported");
ret = v4l2_device_register(&pdev->dev, &rga->v4l2_dev);
if (ret)
- goto err_put_clk;
+ return ret;
vfd = video_device_alloc();
if (!vfd) {
v4l2_err(&rga->v4l2_dev, "Failed to allocate video device\n");
@@ -877,8 +871,6 @@ static int rga_probe(struct platform_device *pdev)
video_device_release(vfd);
unreg_v4l2_dev:
v4l2_device_unregister(&rga->v4l2_dev);
-err_put_clk:
- pm_runtime_disable(rga->dev);
return ret;
}
@@ -892,8 +884,6 @@ static void rga_remove(struct platform_device *pdev)
v4l2_m2m_release(rga->m2m_dev);
video_unregister_device(rga->vfd);
v4l2_device_unregister(&rga->v4l2_dev);
-
- pm_runtime_disable(rga->dev);
}
static int __maybe_unused rga_runtime_suspend(struct device *dev)
--
2.55.0