[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: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
1b7f9c989e
commit
0da4ab984b
|
@ -2038,7 +2038,8 @@ static int __uvc_resume(struct usb_interface *intf, int reset)
|
||||||
if (stream->intf == intf) {
|
if (stream->intf == intf) {
|
||||||
ret = uvc_video_resume(stream, reset);
|
ret = uvc_video_resume(stream, reset);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
uvc_queue_enable(&stream->queue, 0);
|
uvc_queue_streamoff(&stream->queue,
|
||||||
|
stream->queue.queue.type);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -263,6 +263,28 @@ int uvc_dequeue_buffer(struct uvc_video_queue *queue, struct v4l2_buffer *buf,
|
||||||
return ret;
|
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 uvc_queue_mmap(struct uvc_video_queue *queue, struct vm_area_struct *vma)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
@ -317,37 +339,6 @@ int uvc_queue_allocated(struct uvc_video_queue *queue)
|
||||||
return allocated;
|
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.
|
* Cancel the video buffers queue.
|
||||||
*
|
*
|
||||||
|
|
|
@ -757,14 +757,11 @@ static int uvc_ioctl_streamon(struct file *file, void *fh,
|
||||||
struct uvc_streaming *stream = handle->stream;
|
struct uvc_streaming *stream = handle->stream;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
if (type != stream->type)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
if (!uvc_has_privileges(handle))
|
if (!uvc_has_privileges(handle))
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
mutex_lock(&stream->mutex);
|
mutex_lock(&stream->mutex);
|
||||||
ret = uvc_queue_enable(&stream->queue, 1);
|
ret = uvc_queue_streamon(&stream->queue, type);
|
||||||
mutex_unlock(&stream->mutex);
|
mutex_unlock(&stream->mutex);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -776,14 +773,11 @@ static int uvc_ioctl_streamoff(struct file *file, void *fh,
|
||||||
struct uvc_fh *handle = fh;
|
struct uvc_fh *handle = fh;
|
||||||
struct uvc_streaming *stream = handle->stream;
|
struct uvc_streaming *stream = handle->stream;
|
||||||
|
|
||||||
if (type != stream->type)
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
if (!uvc_has_privileges(handle))
|
if (!uvc_has_privileges(handle))
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
||||||
mutex_lock(&stream->mutex);
|
mutex_lock(&stream->mutex);
|
||||||
uvc_queue_enable(&stream->queue, 0);
|
uvc_queue_streamoff(&stream->queue, type);
|
||||||
mutex_unlock(&stream->mutex);
|
mutex_unlock(&stream->mutex);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -634,7 +634,10 @@ extern int uvc_queue_buffer(struct uvc_video_queue *queue,
|
||||||
struct v4l2_buffer *v4l2_buf);
|
struct v4l2_buffer *v4l2_buf);
|
||||||
extern int uvc_dequeue_buffer(struct uvc_video_queue *queue,
|
extern int uvc_dequeue_buffer(struct uvc_video_queue *queue,
|
||||||
struct v4l2_buffer *v4l2_buf, int nonblocking);
|
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 void uvc_queue_cancel(struct uvc_video_queue *queue, int disconnect);
|
||||||
extern struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue,
|
extern struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue,
|
||||||
struct uvc_buffer *buf);
|
struct uvc_buffer *buf);
|
||||||
|
|
Loading…
Reference in New Issue