media: v4l2-ioctl.c: Simplify locking for m2m devices
Now that the mutexes for output and capture vb2 queues match, it is possible to refer to the context q_lock as the m2m lock for a given m2m context. Remove the output/capture lock selection. Signed-off-by: Ezequiel Garcia <ezequiel@collabora.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
This commit is contained in:
parent
913f3ec280
commit
542a522d32
|
@ -2693,45 +2693,6 @@ static bool v4l2_is_known_ioctl(unsigned int cmd)
|
|||
return v4l2_ioctls[_IOC_NR(cmd)].ioctl == cmd;
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_V4L2_MEM2MEM_DEV)
|
||||
static bool v4l2_ioctl_m2m_queue_is_output(unsigned int cmd, void *arg)
|
||||
{
|
||||
switch (cmd) {
|
||||
case VIDIOC_CREATE_BUFS: {
|
||||
struct v4l2_create_buffers *cbufs = arg;
|
||||
|
||||
return V4L2_TYPE_IS_OUTPUT(cbufs->format.type);
|
||||
}
|
||||
case VIDIOC_REQBUFS: {
|
||||
struct v4l2_requestbuffers *rbufs = arg;
|
||||
|
||||
return V4L2_TYPE_IS_OUTPUT(rbufs->type);
|
||||
}
|
||||
case VIDIOC_QBUF:
|
||||
case VIDIOC_DQBUF:
|
||||
case VIDIOC_QUERYBUF:
|
||||
case VIDIOC_PREPARE_BUF: {
|
||||
struct v4l2_buffer *buf = arg;
|
||||
|
||||
return V4L2_TYPE_IS_OUTPUT(buf->type);
|
||||
}
|
||||
case VIDIOC_EXPBUF: {
|
||||
struct v4l2_exportbuffer *expbuf = arg;
|
||||
|
||||
return V4L2_TYPE_IS_OUTPUT(expbuf->type);
|
||||
}
|
||||
case VIDIOC_STREAMON:
|
||||
case VIDIOC_STREAMOFF: {
|
||||
int *type = arg;
|
||||
|
||||
return V4L2_TYPE_IS_OUTPUT(*type);
|
||||
}
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
static struct mutex *v4l2_ioctl_get_lock(struct video_device *vdev,
|
||||
struct v4l2_fh *vfh, unsigned int cmd,
|
||||
void *arg)
|
||||
|
@ -2741,12 +2702,8 @@ static struct mutex *v4l2_ioctl_get_lock(struct video_device *vdev,
|
|||
#if IS_ENABLED(CONFIG_V4L2_MEM2MEM_DEV)
|
||||
if (vfh && vfh->m2m_ctx &&
|
||||
(v4l2_ioctls[_IOC_NR(cmd)].flags & INFO_FL_QUEUE)) {
|
||||
bool is_output = v4l2_ioctl_m2m_queue_is_output(cmd, arg);
|
||||
struct v4l2_m2m_queue_ctx *ctx = is_output ?
|
||||
&vfh->m2m_ctx->out_q_ctx : &vfh->m2m_ctx->cap_q_ctx;
|
||||
|
||||
if (ctx->q.lock)
|
||||
return ctx->q.lock;
|
||||
if (vfh->m2m_ctx->q_lock)
|
||||
return vfh->m2m_ctx->q_lock;
|
||||
}
|
||||
#endif
|
||||
if (vdev->queue && vdev->queue->lock &&
|
||||
|
|
Loading…
Reference in New Issue