mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-24 15:49:42 +07:00
media: tegra-video: Separate CSI stream enable and disable implementations
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>
This commit is contained in:
parent
b73be49942
commit
654c433beb
@ -232,37 +232,56 @@ 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;
|
||||
|
||||
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;
|
||||
|
||||
return 0;
|
||||
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->ops->csi_stop_streaming(csi_chan);
|
||||
csi_chan->pg_mode = chan->pg_mode;
|
||||
ret = csi->ops->csi_start_streaming(csi_chan);
|
||||
if (ret < 0)
|
||||
goto rpm_put;
|
||||
|
||||
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);
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
/*
|
||||
* V4L2 Subdevice Operations
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user