31.07.2020 12:02, Sowjanya Komatineni пишет: > This patch separates implementation of CSI stream enable and disable > into separate functions for readability. > > Signed-off-by: Sowjanya Komatineni <skomatineni@xxxxxxxxxx> > --- > drivers/staging/media/tegra-video/csi.c | 51 ++++++++++++++++++++++----------- > 1 file changed, 35 insertions(+), 16 deletions(-) > > diff --git a/drivers/staging/media/tegra-video/csi.c b/drivers/staging/media/tegra-video/csi.c > index fb667df..cfe6187 100644 > --- a/drivers/staging/media/tegra-video/csi.c > +++ b/drivers/staging/media/tegra-video/csi.c > @@ -232,34 +232,53 @@ static int tegra_csi_g_frame_interval(struct v4l2_subdev *subdev, > return 0; > } > > -static int tegra_csi_s_stream(struct v4l2_subdev *subdev, int enable) > +static int tegra_csi_enable_stream(struct v4l2_subdev *subdev) > { > struct tegra_vi_channel *chan = v4l2_get_subdev_hostdata(subdev); > struct tegra_csi_channel *csi_chan = to_csi_chan(subdev); > struct tegra_csi *csi = csi_chan->csi; > - int ret = 0; > + int ret; > + > + ret = pm_runtime_get_sync(csi->dev); > + if (ret < 0) { > + dev_err(csi->dev, "failed to get runtime PM: %d\n", ret); > + pm_runtime_put_noidle(csi->dev); > + return ret; > + } > > csi_chan->pg_mode = chan->pg_mode; > - if (enable) { > - ret = pm_runtime_get_sync(csi->dev); > - if (ret < 0) { > - dev_err(csi->dev, > - "failed to get runtime PM: %d\n", ret); > - pm_runtime_put_noidle(csi->dev); > - return ret; > - } > + ret = csi->ops->csi_start_streaming(csi_chan); > + if (ret < 0) > + goto rpm_put; > > - ret = csi->ops->csi_start_streaming(csi_chan); > - if (ret < 0) > - goto rpm_put; > + return 0; > > - return 0; > - } > +rpm_put: > + pm_runtime_put(csi->dev); > + return ret; > +} > + > +static int tegra_csi_disable_stream(struct v4l2_subdev *subdev) > +{ > + struct tegra_csi_channel *csi_chan = to_csi_chan(subdev); > + struct tegra_csi *csi = csi_chan->csi; > > csi->ops->csi_stop_streaming(csi_chan); > > -rpm_put: > pm_runtime_put(csi->dev); > + > + return 0; > +} > + > +static int tegra_csi_s_stream(struct v4l2_subdev *subdev, int enable) > +{ > + int ret; > + > + if (enable) > + ret = tegra_csi_enable_stream(subdev); > + else > + ret = tegra_csi_disable_stream(subdev); > + > return ret; > } > > Thanks! Reviewed-by: Dmitry Osipenko <digetx@xxxxxxxxx>