Hi Sakari, Thank you for the patch. On Wed, Mar 13, 2024 at 09:25:12AM +0200, Sakari Ailus wrote: > With enable_streams and disable_streams, the driver for a device where > streams are not independently started and stopped needs to maintain state > information on streams that have been requested to be started. Do that > now. > > In the future, a helper function in the framework is a desirable way to do > this instead. > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart+renesas@xxxxxxxxxxxxxxxx> > --- > drivers/media/i2c/ov2740.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/media/i2c/ov2740.c b/drivers/media/i2c/ov2740.c > index 44c6724a102c..df57f0096e98 100644 > --- a/drivers/media/i2c/ov2740.c > +++ b/drivers/media/i2c/ov2740.c > @@ -539,6 +539,9 @@ struct ov2740 { > > /* True if the device has been identified */ > bool identified; > + > + /* Track streaming state */ > + u8 streaming; > }; > > static inline struct ov2740 *to_ov2740(struct v4l2_subdev *subdev) > @@ -929,6 +932,11 @@ static int ov2740_enable_streams(struct v4l2_subdev *sd, > int link_freq_index; > int ret; > > + if (ov2740->streaming) { > + ov2740->streaming |= streams_mask; > + return 0; > + } > + > ret = pm_runtime_resume_and_get(&client->dev); > if (ret < 0) > return ret; > @@ -975,6 +983,8 @@ static int ov2740_enable_streams(struct v4l2_subdev *sd, > goto out_pm_put; > } > > + ov2740->streaming |= streams_mask; > + > return 0; > > out_pm_put: > @@ -991,6 +1001,10 @@ static int ov2740_disable_streams(struct v4l2_subdev *sd, > struct ov2740 *ov2740 = to_ov2740(sd); > int ret; > > + ov2740->streaming &= ~streams_mask; > + if (ov2740->streaming) > + return 0; > + > ret = ov2740_write_reg(ov2740, OV2740_REG_MODE_SELECT, 1, > OV2740_MODE_STANDBY); > -- Regards, Laurent Pinchart