mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 05:39:42 -04:00
media: omap3isp: add missing wait_prepare/finish ops
Without these ops the v4l2-compliance blocking wait test will fail. These ops are required to ensure that when VIDIOC_DQBUF has to wait for buffers to arrive, the queue lock is correctly released and retaken. Otherwise the wait for a buffer would block all other queue ioctls. Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
committed by
Mauro Carvalho Chehab
parent
23788ceb87
commit
6ce4c5dc5d
@@ -480,11 +480,29 @@ static int isp_video_start_streaming(struct vb2_queue *queue,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void omap3isp_wait_prepare(struct vb2_queue *vq)
|
||||
{
|
||||
struct isp_video_fh *vfh = vb2_get_drv_priv(vq);
|
||||
struct isp_video *video = vfh->video;
|
||||
|
||||
mutex_unlock(&video->queue_lock);
|
||||
}
|
||||
|
||||
static void omap3isp_wait_finish(struct vb2_queue *vq)
|
||||
{
|
||||
struct isp_video_fh *vfh = vb2_get_drv_priv(vq);
|
||||
struct isp_video *video = vfh->video;
|
||||
|
||||
mutex_lock(&video->queue_lock);
|
||||
}
|
||||
|
||||
static const struct vb2_ops isp_video_queue_ops = {
|
||||
.queue_setup = isp_video_queue_setup,
|
||||
.buf_prepare = isp_video_buffer_prepare,
|
||||
.buf_queue = isp_video_buffer_queue,
|
||||
.start_streaming = isp_video_start_streaming,
|
||||
.wait_prepare = omap3isp_wait_prepare,
|
||||
.wait_finish = omap3isp_wait_finish,
|
||||
};
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user