media: tegra-video: Separate CSI stream enable and disable implementations
authorSowjanya Komatineni <skomatineni@nvidia.com>
Wed, 12 Aug 2020 00:27:16 +0000 (02:27 +0200)
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>
Fri, 28 Aug 2020 13:10:31 +0000 (15:10 +0200)
This patch separates implementation of CSI stream enable and disable
into separate functions for readability.

Reviewed-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Sowjanya Komatineni <skomatineni@nvidia.com>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
drivers/staging/media/tegra-video/csi.c

index fb667df..cfe6187 100644 (file)
@@ -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;
 }