Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0da4ab98 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab
Browse files

[media] uvcvideo: Rename and split uvc_queue_enable to uvc_queue_stream(on|off)



This brings the function name in line with the V4L2 API terminology and
allows removing the duplicate queue type check.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 1b7f9c98
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -2038,7 +2038,8 @@ static int __uvc_resume(struct usb_interface *intf, int reset)
		if (stream->intf == intf) {
			ret = uvc_video_resume(stream, reset);
			if (ret < 0)
				uvc_queue_enable(&stream->queue, 0);
				uvc_queue_streamoff(&stream->queue,
						    stream->queue.queue.type);
			return ret;
		}
	}
+22 −31
Original line number Diff line number Diff line
@@ -263,6 +263,28 @@ int uvc_dequeue_buffer(struct uvc_video_queue *queue, struct v4l2_buffer *buf,
	return ret;
}

int uvc_queue_streamon(struct uvc_video_queue *queue, enum v4l2_buf_type type)
{
	int ret;

	mutex_lock(&queue->mutex);
	ret = vb2_streamon(&queue->queue, type);
	mutex_unlock(&queue->mutex);

	return ret;
}

int uvc_queue_streamoff(struct uvc_video_queue *queue, enum v4l2_buf_type type)
{
	int ret;

	mutex_lock(&queue->mutex);
	ret = vb2_streamoff(&queue->queue, type);
	mutex_unlock(&queue->mutex);

	return ret;
}

int uvc_queue_mmap(struct uvc_video_queue *queue, struct vm_area_struct *vma)
{
	int ret;
@@ -317,37 +339,6 @@ int uvc_queue_allocated(struct uvc_video_queue *queue)
	return allocated;
}

/*
 * Enable or disable the video buffers queue.
 *
 * The queue must be enabled before starting video acquisition and must be
 * disabled after stopping it. This ensures that the video buffers queue
 * state can be properly initialized before buffers are accessed from the
 * interrupt handler.
 *
 * Enabling the video queue returns -EBUSY if the queue is already enabled.
 *
 * Disabling the video queue cancels the queue and removes all buffers from
 * the main queue.
 *
 * This function can't be called from interrupt context. Use
 * uvc_queue_cancel() instead.
 */
int uvc_queue_enable(struct uvc_video_queue *queue, int enable)
{
	int ret;

	mutex_lock(&queue->mutex);

	if (enable)
		ret = vb2_streamon(&queue->queue, queue->queue.type);
	else
		ret = vb2_streamoff(&queue->queue, queue->queue.type);

	mutex_unlock(&queue->mutex);
	return ret;
}

/*
 * Cancel the video buffers queue.
 *
+2 −8
Original line number Diff line number Diff line
@@ -757,14 +757,11 @@ static int uvc_ioctl_streamon(struct file *file, void *fh,
	struct uvc_streaming *stream = handle->stream;
	int ret;

	if (type != stream->type)
		return -EINVAL;

	if (!uvc_has_privileges(handle))
		return -EBUSY;

	mutex_lock(&stream->mutex);
	ret = uvc_queue_enable(&stream->queue, 1);
	ret = uvc_queue_streamon(&stream->queue, type);
	mutex_unlock(&stream->mutex);

	return ret;
@@ -776,14 +773,11 @@ static int uvc_ioctl_streamoff(struct file *file, void *fh,
	struct uvc_fh *handle = fh;
	struct uvc_streaming *stream = handle->stream;

	if (type != stream->type)
		return -EINVAL;

	if (!uvc_has_privileges(handle))
		return -EBUSY;

	mutex_lock(&stream->mutex);
	uvc_queue_enable(&stream->queue, 0);
	uvc_queue_streamoff(&stream->queue, type);
	mutex_unlock(&stream->mutex);

	return 0;
+4 −1
Original line number Diff line number Diff line
@@ -634,7 +634,10 @@ extern int uvc_queue_buffer(struct uvc_video_queue *queue,
		struct v4l2_buffer *v4l2_buf);
extern int uvc_dequeue_buffer(struct uvc_video_queue *queue,
		struct v4l2_buffer *v4l2_buf, int nonblocking);
extern int uvc_queue_enable(struct uvc_video_queue *queue, int enable);
extern int uvc_queue_streamon(struct uvc_video_queue *queue,
			      enum v4l2_buf_type type);
extern int uvc_queue_streamoff(struct uvc_video_queue *queue,
			       enum v4l2_buf_type type);
extern void uvc_queue_cancel(struct uvc_video_queue *queue, int disconnect);
extern struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue,
		struct uvc_buffer *buf);