Commit 9d75fc99 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

media: staging: media: imx: imx7-media-csi: Import imx_media_pipeline_set_stream()

To prepare for code refactoring, copy the
imx_media_pipeline_set_stream() helper used by this driver from
imx-media-utils.c. Rename the function to avoid name clashes, no
functional change intended.
Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Acked-by: default avatarRui Miguel Silva <rmfrfs@gmail.com>
Tested-by: default avatarAlexander Stein <alexander.stein@ew.tq-group.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent 7d3bee23
......@@ -1067,6 +1067,40 @@ static int imx7_csi_video_validate_fmt(struct imx7_csi *csi)
return 0;
}
/*
* Turn current pipeline streaming on/off starting from entity.
*/
static int imx7_csi_media_pipeline_set_stream(struct imx_media_dev *imxmd,
struct media_entity *entity,
bool on)
{
struct v4l2_subdev *sd;
int ret = 0;
if (!is_media_entity_v4l2_subdev(entity))
return -EINVAL;
sd = media_entity_to_v4l2_subdev(entity);
mutex_lock(&imxmd->md.graph_mutex);
if (on) {
ret = __media_pipeline_start(entity, &imxmd->pipe);
if (ret)
goto out;
ret = v4l2_subdev_call(sd, video, s_stream, 1);
if (ret)
__media_pipeline_stop(entity);
} else {
v4l2_subdev_call(sd, video, s_stream, 0);
if (entity->pipe)
__media_pipeline_stop(entity);
}
out:
mutex_unlock(&imxmd->md.graph_mutex);
return ret;
}
static int imx7_csi_video_start_streaming(struct vb2_queue *vq,
unsigned int count)
{
......@@ -1081,7 +1115,8 @@ static int imx7_csi_video_start_streaming(struct vb2_queue *vq,
goto return_bufs;
}
ret = imx_media_pipeline_set_stream(&csi->imxmd, &csi->sd.entity, true);
ret = imx7_csi_media_pipeline_set_stream(&csi->imxmd, &csi->sd.entity,
true);
if (ret) {
dev_err(csi->dev, "pipeline start failed with %d\n", ret);
goto return_bufs;
......@@ -1107,7 +1142,8 @@ static void imx7_csi_video_stop_streaming(struct vb2_queue *vq)
unsigned long flags;
int ret;
ret = imx_media_pipeline_set_stream(&csi->imxmd, &csi->sd.entity, false);
ret = imx7_csi_media_pipeline_set_stream(&csi->imxmd, &csi->sd.entity,
false);
if (ret)
dev_warn(csi->dev, "pipeline stop failed with %d\n", ret);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment