mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
media: atomisp: Call media_pipeline_alloc_start() in stream start
Call media_pipeline_alloc_start() from atomisp_start_streaming() to mark all involved subdevs as busy so that the links cannot be changed through the media-controller APIs while streaming. Reviewed-by: Andy Shevchenko <andy@kernel.org> Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
20a7f79982
commit
1c3432df23
|
|
@ -902,6 +902,20 @@ int atomisp_start_streaming(struct vb2_queue *vq, unsigned int count)
|
|||
if (ret)
|
||||
goto out_unlock;
|
||||
|
||||
/*
|
||||
* When running a classic v4l2 app after a media-controller aware
|
||||
* app, the CSI-receiver -> ISP link for the current sensor may be
|
||||
* disabled. Fix this up before marking the pipeline as started.
|
||||
*/
|
||||
mutex_lock(&isp->media_dev.graph_mutex);
|
||||
atomisp_setup_input_links(isp);
|
||||
ret = __media_pipeline_start(&asd->video_out.vdev.entity.pads[0], &asd->video_out.pipe);
|
||||
mutex_unlock(&isp->media_dev.graph_mutex);
|
||||
if (ret) {
|
||||
dev_err(isp->dev, "Error starting mc pipline: %d\n", ret);
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
/* Input system HW workaround */
|
||||
atomisp_dma_burst_len_cfg(asd);
|
||||
|
||||
|
|
@ -1054,6 +1068,7 @@ void atomisp_stop_streaming(struct vb2_queue *vq)
|
|||
if (ret)
|
||||
dev_warn(isp->dev, "Recreating streams failed: %d\n", ret);
|
||||
|
||||
media_pipeline_stop(&asd->video_out.vdev.entity.pads[0]);
|
||||
mutex_unlock(&isp->mutex);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@ struct atomisp_video_pipe {
|
|||
struct video_device vdev;
|
||||
enum v4l2_buf_type type;
|
||||
struct media_pad pad;
|
||||
struct media_pipeline pipe;
|
||||
struct vb2_queue vb_queue;
|
||||
/* Lock for vb_queue, when also taking isp->mutex this must be taken first! */
|
||||
struct mutex vb_queue_mutex;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user