Re: [PATCH v2 6/7] media: imx319: Put usage_count correctly in s_ctrl callback

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Laurent,

On Sat, Nov 18, 2023 at 08:52:48PM +0200, Laurent Pinchart wrote:
> Hi Sakari,
> 
> Thank you for the patch.
> 
> On Fri, Nov 17, 2023 at 01:14:32PM +0200, Sakari Ailus wrote:
> > pm_runtime_get_if_in_use() returns an error if Runtime PM is disabled for
> > the device, in which case it won't increment the use count.
> > pm_runtime_put() does that unconditionally however. Only call
> > pm_runtime_put() in case pm_runtime_get_if_in_use() has returned a value >
> > 0.
> 
> Why don't you use pm_runtime_get_if_active() ?

It's only meaningful if the driver uses autosuspend. The imx319 driver does
not.

> 
> Other than that, same comment as for patch 5/7, I don't like the
> increased complexity.
> 
> These comments apply to 7/7 as well.
> 
> > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
> > ---
> >  drivers/media/i2c/imx319.c | 8 +++++---
> >  1 file changed, 5 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/media/i2c/imx319.c b/drivers/media/i2c/imx319.c
> > index 5378f607f340..e7b2d0c20d29 100644
> > --- a/drivers/media/i2c/imx319.c
> > +++ b/drivers/media/i2c/imx319.c
> > @@ -1880,8 +1880,8 @@ static int imx319_set_ctrl(struct v4l2_ctrl *ctrl)
> >  	struct imx319 *imx319 = container_of(ctrl->handler,
> >  					     struct imx319, ctrl_handler);
> >  	struct i2c_client *client = v4l2_get_subdevdata(&imx319->sd);
> > +	int ret, pm_status;
> >  	s64 max;
> > -	int ret;
> >  
> >  	/* Propagate change of current control to all related controls */
> >  	switch (ctrl->id) {
> > @@ -1898,7 +1898,8 @@ static int imx319_set_ctrl(struct v4l2_ctrl *ctrl)
> >  	 * Applying V4L2 control value only happens
> >  	 * when power is up for streaming
> >  	 */
> > -	if (!pm_runtime_get_if_in_use(&client->dev))
> > +	pm_status = pm_runtime_get_if_in_use(&client->dev);
> > +	if (!pm_status)
> >  		return 0;
> >  
> >  	switch (ctrl->id) {
> > @@ -1937,7 +1938,8 @@ static int imx319_set_ctrl(struct v4l2_ctrl *ctrl)
> >  		break;
> >  	}
> >  
> > -	pm_runtime_put(&client->dev);
> > +	if (pm_status > 0)
> > +		pm_runtime_put(&client->dev);
> >  
> >  	return ret;
> >  }
> 

-- 
Regards,

Sakari Ailus




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux