Lines Matching refs:queue

45 static void __uvc_queue_return_buffers(struct uvc_video_queue *queue,  in __uvc_queue_return_buffers()  argument
52 lockdep_assert_held(&queue->irqlock); in __uvc_queue_return_buffers()
54 while (!list_empty(&queue->irqqueue)) { in __uvc_queue_return_buffers()
55 struct uvc_buffer *buf = list_first_entry(&queue->irqqueue, in __uvc_queue_return_buffers()
57 queue); in __uvc_queue_return_buffers()
58 list_del(&buf->queue); in __uvc_queue_return_buffers()
64 static void uvc_queue_return_buffers(struct uvc_video_queue *queue, in uvc_queue_return_buffers() argument
67 spin_lock_irq(&queue->irqlock); in uvc_queue_return_buffers()
68 __uvc_queue_return_buffers(queue, state); in uvc_queue_return_buffers()
69 spin_unlock_irq(&queue->irqlock); in uvc_queue_return_buffers()
80 struct uvc_video_queue *queue = vb2_get_drv_priv(vq); in uvc_queue_setup() local
90 stream = uvc_queue_to_stream(queue); in uvc_queue_setup()
111 struct uvc_video_queue *queue = vb2_get_drv_priv(vb->vb2_queue); in uvc_buffer_prepare() local
116 uvc_dbg(uvc_queue_to_stream(queue)->dev, CAPTURE, in uvc_buffer_prepare()
121 if (unlikely(queue->flags & UVC_QUEUE_DISCONNECTED)) in uvc_buffer_prepare()
139 struct uvc_video_queue *queue = vb2_get_drv_priv(vb->vb2_queue); in uvc_buffer_queue() local
143 spin_lock_irqsave(&queue->irqlock, flags); in uvc_buffer_queue()
144 if (likely(!(queue->flags & UVC_QUEUE_DISCONNECTED))) { in uvc_buffer_queue()
146 list_add_tail(&buf->queue, &queue->irqqueue); in uvc_buffer_queue()
156 spin_unlock_irqrestore(&queue->irqlock, flags); in uvc_buffer_queue()
162 struct uvc_video_queue *queue = vb2_get_drv_priv(vb->vb2_queue); in uvc_buffer_finish() local
163 struct uvc_streaming *stream = uvc_queue_to_stream(queue); in uvc_buffer_finish()
172 struct uvc_video_queue *queue = vb2_get_drv_priv(vq); in uvc_start_streaming_video() local
173 struct uvc_streaming *stream = uvc_queue_to_stream(queue); in uvc_start_streaming_video()
182 queue->buf_used = 0; in uvc_start_streaming_video()
190 uvc_queue_return_buffers(queue, UVC_BUF_STATE_QUEUED); in uvc_start_streaming_video()
197 struct uvc_video_queue *queue = vb2_get_drv_priv(vq); in uvc_stop_streaming_video() local
198 struct uvc_streaming *stream = uvc_queue_to_stream(queue); in uvc_stop_streaming_video()
202 uvc_video_stop_streaming(uvc_queue_to_stream(queue)); in uvc_stop_streaming_video()
206 uvc_queue_return_buffers(queue, UVC_BUF_STATE_ERROR); in uvc_stop_streaming_video()
211 struct uvc_video_queue *queue = vb2_get_drv_priv(vq); in uvc_stop_streaming_meta() local
215 uvc_queue_return_buffers(queue, UVC_BUF_STATE_ERROR); in uvc_stop_streaming_meta()
239 int uvc_queue_init(struct uvc_video_queue *queue, enum v4l2_buf_type type) in uvc_queue_init() argument
243 queue->queue.type = type; in uvc_queue_init()
244 queue->queue.io_modes = VB2_MMAP | VB2_USERPTR; in uvc_queue_init()
245 queue->queue.drv_priv = queue; in uvc_queue_init()
246 queue->queue.buf_struct_size = sizeof(struct uvc_buffer); in uvc_queue_init()
247 queue->queue.mem_ops = &vb2_vmalloc_memops; in uvc_queue_init()
248 queue->queue.timestamp_flags = V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC in uvc_queue_init()
250 queue->queue.lock = &queue->mutex; in uvc_queue_init()
254 queue->queue.ops = &uvc_meta_queue_qops; in uvc_queue_init()
257 queue->queue.io_modes |= VB2_DMABUF; in uvc_queue_init()
258 queue->queue.ops = &uvc_queue_qops; in uvc_queue_init()
262 ret = vb2_queue_init(&queue->queue); in uvc_queue_init()
266 mutex_init(&queue->mutex); in uvc_queue_init()
267 spin_lock_init(&queue->irqlock); in uvc_queue_init()
268 INIT_LIST_HEAD(&queue->irqqueue); in uvc_queue_init()
289 void uvc_queue_cancel(struct uvc_video_queue *queue, int disconnect) in uvc_queue_cancel() argument
293 spin_lock_irqsave(&queue->irqlock, flags); in uvc_queue_cancel()
294 __uvc_queue_return_buffers(queue, UVC_BUF_STATE_ERROR); in uvc_queue_cancel()
303 queue->flags |= UVC_QUEUE_DISCONNECTED; in uvc_queue_cancel()
304 spin_unlock_irqrestore(&queue->irqlock, flags); in uvc_queue_cancel()
314 __uvc_queue_get_current_buffer(struct uvc_video_queue *queue) in __uvc_queue_get_current_buffer() argument
316 if (list_empty(&queue->irqqueue)) in __uvc_queue_get_current_buffer()
319 return list_first_entry(&queue->irqqueue, struct uvc_buffer, queue); in __uvc_queue_get_current_buffer()
322 struct uvc_buffer *uvc_queue_get_current_buffer(struct uvc_video_queue *queue) in uvc_queue_get_current_buffer() argument
327 spin_lock_irqsave(&queue->irqlock, flags); in uvc_queue_get_current_buffer()
328 nextbuf = __uvc_queue_get_current_buffer(queue); in uvc_queue_get_current_buffer()
329 spin_unlock_irqrestore(&queue->irqlock, flags); in uvc_queue_get_current_buffer()
341 static void uvc_queue_buffer_requeue(struct uvc_video_queue *queue, in uvc_queue_buffer_requeue() argument
356 struct uvc_video_queue *queue = vb2_get_drv_priv(vb->vb2_queue); in uvc_queue_buffer_complete() local
359 uvc_queue_buffer_requeue(queue, buf); in uvc_queue_buffer_complete()
383 struct uvc_buffer *uvc_queue_next_buffer(struct uvc_video_queue *queue, in uvc_queue_next_buffer() argument
389 spin_lock_irqsave(&queue->irqlock, flags); in uvc_queue_next_buffer()
390 list_del(&buf->queue); in uvc_queue_next_buffer()
391 nextbuf = __uvc_queue_get_current_buffer(queue); in uvc_queue_next_buffer()
392 spin_unlock_irqrestore(&queue->irqlock, flags); in uvc_queue_next_buffer()