Message ID | eb819ab09ce3ac98ed13493b88495fbd0ca05dec.1619621413.git.mchehab+huawei@kernel.org |
---|---|
State | Superseded |
Headers | show |
Series | Address some issues with PM runtime at media subsystem | expand |
On Wed, 28 Apr 2021 16:51:30 +0200 Mauro Carvalho Chehab <mchehab+huawei@kernel.org> wrote: > Calling pm_runtime_get_sync() is bad, since even when it > returns an error, pm_runtime_put*() should be called. > So, use instead pm_runtime_resume_and_get(). > > While here, ensure that the error condition will be checked > during clock enable an media open() calls. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> > --- > drivers/media/platform/marvell-ccic/mcam-core.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c > index 141bf5d97a04..ea87110d9073 100644 > --- a/drivers/media/platform/marvell-ccic/mcam-core.c > +++ b/drivers/media/platform/marvell-ccic/mcam-core.c > @@ -918,6 +918,7 @@ static int mclk_enable(struct clk_hw *hw) > struct mcam_camera *cam = container_of(hw, struct mcam_camera, mclk_hw); > int mclk_src; > int mclk_div; > + int ret; > > /* > * Clock the sensor appropriately. Controller clock should > @@ -931,7 +932,9 @@ static int mclk_enable(struct clk_hw *hw) > mclk_div = 2; > } > > - pm_runtime_get_sync(cam->dev); > + ret = pm_runtime_resume_and_get(cam->dev); > + if (ret < 0) > + return ret; > clk_enable(cam->clk[0]); > mcam_reg_write(cam, REG_CLKCTRL, (mclk_src << 29) | mclk_div); > mcam_ctlr_power_up(cam); > @@ -1611,7 +1614,9 @@ static int mcam_v4l_open(struct file *filp) > ret = sensor_call(cam, core, s_power, 1); > if (ret) > goto out; > - pm_runtime_get_sync(cam->dev); > + ret = pm_runtime_resume_and_get(cam->dev); > + if (ret < 0) > + goto out; > __mcam_cam_reset(cam); > mcam_set_config_needed(cam, 1); > }
diff --git a/drivers/media/platform/marvell-ccic/mcam-core.c b/drivers/media/platform/marvell-ccic/mcam-core.c index 141bf5d97a04..ea87110d9073 100644 --- a/drivers/media/platform/marvell-ccic/mcam-core.c +++ b/drivers/media/platform/marvell-ccic/mcam-core.c @@ -918,6 +918,7 @@ static int mclk_enable(struct clk_hw *hw) struct mcam_camera *cam = container_of(hw, struct mcam_camera, mclk_hw); int mclk_src; int mclk_div; + int ret; /* * Clock the sensor appropriately. Controller clock should @@ -931,7 +932,9 @@ static int mclk_enable(struct clk_hw *hw) mclk_div = 2; } - pm_runtime_get_sync(cam->dev); + ret = pm_runtime_resume_and_get(cam->dev); + if (ret < 0) + return ret; clk_enable(cam->clk[0]); mcam_reg_write(cam, REG_CLKCTRL, (mclk_src << 29) | mclk_div); mcam_ctlr_power_up(cam); @@ -1611,7 +1614,9 @@ static int mcam_v4l_open(struct file *filp) ret = sensor_call(cam, core, s_power, 1); if (ret) goto out; - pm_runtime_get_sync(cam->dev); + ret = pm_runtime_resume_and_get(cam->dev); + if (ret < 0) + goto out; __mcam_cam_reset(cam); mcam_set_config_needed(cam, 1); }
Calling pm_runtime_get_sync() is bad, since even when it returns an error, pm_runtime_put*() should be called. So, use instead pm_runtime_resume_and_get(). While here, ensure that the error condition will be checked during clock enable an media open() calls. Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> --- drivers/media/platform/marvell-ccic/mcam-core.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)