Message ID | ce18a4f9ca1bdcf4c68e77eaa410ec03a6ec8fe2.1620314616.git.mchehab+huawei@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: use pm_runtime_resume_and_get() on non-i2c drivers | expand |
Am Donnerstag, 6. Mai 2021, 17:25:45 CEST schrieb Mauro Carvalho Chehab: > Commit dd8088d5a896 ("PM: runtime: Add pm_runtime_resume_and_get to deal with usage counter") > added pm_runtime_resume_and_get() in order to automatically handle > dev->power.usage_count decrement on errors. > > Use the new API, in order to cleanup the error check logic. > > Reviewed-by: Ezequiel Garcia <ezequiel@collabora.com> > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> > --- > drivers/media/platform/rockchip/rga/rga-buf.c | 3 +-- > drivers/media/platform/rockchip/rga/rga.c | 4 +++- > 2 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/drivers/media/platform/rockchip/rga/rga-buf.c b/drivers/media/platform/rockchip/rga/rga-buf.c > index bf9a75b75083..81508ed5abf3 100644 > --- a/drivers/media/platform/rockchip/rga/rga-buf.c > +++ b/drivers/media/platform/rockchip/rga/rga-buf.c > @@ -79,9 +79,8 @@ static int rga_buf_start_streaming(struct vb2_queue *q, unsigned int count) > struct rockchip_rga *rga = ctx->rga; > int ret; > > - ret = pm_runtime_get_sync(rga->dev); > + ret = pm_runtime_resume_and_get(rga->dev); > if (ret < 0) { > - pm_runtime_put_noidle(rga->dev); > rga_buf_return_buffers(q, VB2_BUF_STATE_QUEUED); > return ret; > } looks ok > diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/platform/rockchip/rga/rga.c > index 9d122429706e..bf3fd71ec3af 100644 > --- a/drivers/media/platform/rockchip/rga/rga.c > +++ b/drivers/media/platform/rockchip/rga/rga.c > @@ -866,7 +866,9 @@ static int rga_probe(struct platform_device *pdev) > goto unreg_video_dev; > } > > - pm_runtime_get_sync(rga->dev); > + ret = pm_runtime_resume_and_get(rga->dev); > + if (ret < 0) > + goto unreg_video_dev; > > rga->version.major = (rga_read(rga, RGA_VERSION_INFO) >> 24) & 0xFF; > rga->version.minor = (rga_read(rga, RGA_VERSION_INFO) >> 20) & 0x0F; hmm, the whole error handling in rga_probe looks fishy to my untrained eyes. But I guess the easiest will be to apply your patch first and then investigate and clean up the non-matching alloc - releae calls, so Reviewed-by: Heiko Stuebner <heiko@sntech.de>
diff --git a/drivers/media/platform/rockchip/rga/rga-buf.c b/drivers/media/platform/rockchip/rga/rga-buf.c index bf9a75b75083..81508ed5abf3 100644 --- a/drivers/media/platform/rockchip/rga/rga-buf.c +++ b/drivers/media/platform/rockchip/rga/rga-buf.c @@ -79,9 +79,8 @@ static int rga_buf_start_streaming(struct vb2_queue *q, unsigned int count) struct rockchip_rga *rga = ctx->rga; int ret; - ret = pm_runtime_get_sync(rga->dev); + ret = pm_runtime_resume_and_get(rga->dev); if (ret < 0) { - pm_runtime_put_noidle(rga->dev); rga_buf_return_buffers(q, VB2_BUF_STATE_QUEUED); return ret; } diff --git a/drivers/media/platform/rockchip/rga/rga.c b/drivers/media/platform/rockchip/rga/rga.c index 9d122429706e..bf3fd71ec3af 100644 --- a/drivers/media/platform/rockchip/rga/rga.c +++ b/drivers/media/platform/rockchip/rga/rga.c @@ -866,7 +866,9 @@ static int rga_probe(struct platform_device *pdev) goto unreg_video_dev; } - pm_runtime_get_sync(rga->dev); + ret = pm_runtime_resume_and_get(rga->dev); + if (ret < 0) + goto unreg_video_dev; rga->version.major = (rga_read(rga, RGA_VERSION_INFO) >> 24) & 0xFF; rga->version.minor = (rga_read(rga, RGA_VERSION_INFO) >> 20) & 0x0F;