|
@@ -122,21 +122,27 @@ static struct vb2_ops uvc_queue_qops = {
|
|
|
.buf_finish = uvc_buffer_finish,
|
|
|
};
|
|
|
|
|
|
-void uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type,
|
|
|
+int uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type,
|
|
|
int drop_corrupted)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
queue->queue.type = type;
|
|
|
queue->queue.io_modes = VB2_MMAP | VB2_USERPTR;
|
|
|
queue->queue.drv_priv = queue;
|
|
|
queue->queue.buf_struct_size = sizeof(struct uvc_buffer);
|
|
|
queue->queue.ops = &uvc_queue_qops;
|
|
|
queue->queue.mem_ops = &vb2_vmalloc_memops;
|
|
|
- vb2_queue_init(&queue->queue);
|
|
|
+ ret = vb2_queue_init(&queue->queue);
|
|
|
+ if (ret)
|
|
|
+ return ret;
|
|
|
|
|
|
mutex_init(&queue->mutex);
|
|
|
spin_lock_init(&queue->irqlock);
|
|
|
INIT_LIST_HEAD(&queue->irqqueue);
|
|
|
queue->flags = drop_corrupted ? UVC_QUEUE_DROP_CORRUPTED : 0;
|
|
|
+
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
/* -----------------------------------------------------------------------------
|