Lines Matching refs:q
52 #define CALL(q, f, arg...) \ argument
53 ((q->int_ops->f) ? q->int_ops->f(arg) : 0)
54 #define CALLPTR(q, f, arg...) \ argument
55 ((q->int_ops->f) ? q->int_ops->f(arg) : NULL)
57 struct videobuf_buffer *videobuf_alloc_vb(struct videobuf_queue *q) in videobuf_alloc_vb() argument
61 BUG_ON(q->msize < sizeof(*vb)); in videobuf_alloc_vb()
63 if (!q->int_ops || !q->int_ops->alloc_vb) { in videobuf_alloc_vb()
68 vb = q->int_ops->alloc_vb(q->msize); in videobuf_alloc_vb()
78 static int is_state_active_or_queued(struct videobuf_queue *q, struct videobuf_buffer *vb) in is_state_active_or_queued() argument
83 spin_lock_irqsave(q->irqlock, flags); in is_state_active_or_queued()
85 spin_unlock_irqrestore(q->irqlock, flags); in is_state_active_or_queued()
89 int videobuf_waiton(struct videobuf_queue *q, struct videobuf_buffer *vb, in videobuf_waiton() argument
98 if (is_state_active_or_queued(q, vb)) in videobuf_waiton()
103 is_ext_locked = q->ext_lock && mutex_is_locked(q->ext_lock); in videobuf_waiton()
108 mutex_unlock(q->ext_lock); in videobuf_waiton()
110 ret = wait_event_interruptible(vb->done, is_state_active_or_queued(q, vb)); in videobuf_waiton()
112 wait_event(vb->done, is_state_active_or_queued(q, vb)); in videobuf_waiton()
115 mutex_lock(q->ext_lock); in videobuf_waiton()
121 int videobuf_iolock(struct videobuf_queue *q, struct videobuf_buffer *vb, in videobuf_iolock() argument
125 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_iolock()
127 return CALL(q, iolock, q, vb, fbuf); in videobuf_iolock()
131 void *videobuf_queue_to_vaddr(struct videobuf_queue *q, in videobuf_queue_to_vaddr() argument
134 if (q->int_ops->vaddr) in videobuf_queue_to_vaddr()
135 return q->int_ops->vaddr(buf); in videobuf_queue_to_vaddr()
143 void videobuf_queue_core_init(struct videobuf_queue *q, in videobuf_queue_core_init() argument
154 BUG_ON(!q); in videobuf_queue_core_init()
155 memset(q, 0, sizeof(*q)); in videobuf_queue_core_init()
156 q->irqlock = irqlock; in videobuf_queue_core_init()
157 q->ext_lock = ext_lock; in videobuf_queue_core_init()
158 q->dev = dev; in videobuf_queue_core_init()
159 q->type = type; in videobuf_queue_core_init()
160 q->field = field; in videobuf_queue_core_init()
161 q->msize = msize; in videobuf_queue_core_init()
162 q->ops = ops; in videobuf_queue_core_init()
163 q->priv_data = priv; in videobuf_queue_core_init()
164 q->int_ops = int_ops; in videobuf_queue_core_init()
167 BUG_ON(!q->ops->buf_setup); in videobuf_queue_core_init()
168 BUG_ON(!q->ops->buf_prepare); in videobuf_queue_core_init()
169 BUG_ON(!q->ops->buf_queue); in videobuf_queue_core_init()
170 BUG_ON(!q->ops->buf_release); in videobuf_queue_core_init()
176 BUG_ON(!q->int_ops); in videobuf_queue_core_init()
178 mutex_init(&q->vb_lock); in videobuf_queue_core_init()
179 init_waitqueue_head(&q->wait); in videobuf_queue_core_init()
180 INIT_LIST_HEAD(&q->stream); in videobuf_queue_core_init()
185 int videobuf_queue_is_busy(struct videobuf_queue *q) in videobuf_queue_is_busy() argument
189 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_queue_is_busy()
191 if (q->streaming) { in videobuf_queue_is_busy()
195 if (q->reading) { in videobuf_queue_is_busy()
199 if (q->read_buf) { in videobuf_queue_is_busy()
204 if (NULL == q->bufs[i]) in videobuf_queue_is_busy()
206 if (q->bufs[i]->map) { in videobuf_queue_is_busy()
210 if (q->bufs[i]->state == VIDEOBUF_QUEUED) { in videobuf_queue_is_busy()
214 if (q->bufs[i]->state == VIDEOBUF_ACTIVE) { in videobuf_queue_is_busy()
230 static int __videobuf_free(struct videobuf_queue *q) in __videobuf_free() argument
235 if (!q) in __videobuf_free()
238 if (q->streaming || q->reading) { in __videobuf_free()
243 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in __videobuf_free()
246 if (q->bufs[i] && q->bufs[i]->map) { in __videobuf_free()
252 if (NULL == q->bufs[i]) in __videobuf_free()
254 q->ops->buf_release(q, q->bufs[i]); in __videobuf_free()
255 kfree(q->bufs[i]); in __videobuf_free()
256 q->bufs[i] = NULL; in __videobuf_free()
263 void videobuf_queue_cancel(struct videobuf_queue *q) in videobuf_queue_cancel() argument
268 q->streaming = 0; in videobuf_queue_cancel()
269 q->reading = 0; in videobuf_queue_cancel()
270 wake_up_interruptible_sync(&q->wait); in videobuf_queue_cancel()
273 spin_lock_irqsave(q->irqlock, flags); in videobuf_queue_cancel()
275 if (NULL == q->bufs[i]) in videobuf_queue_cancel()
277 if (q->bufs[i]->state == VIDEOBUF_QUEUED) { in videobuf_queue_cancel()
278 list_del(&q->bufs[i]->queue); in videobuf_queue_cancel()
279 q->bufs[i]->state = VIDEOBUF_ERROR; in videobuf_queue_cancel()
280 wake_up_all(&q->bufs[i]->done); in videobuf_queue_cancel()
283 spin_unlock_irqrestore(q->irqlock, flags); in videobuf_queue_cancel()
287 if (NULL == q->bufs[i]) in videobuf_queue_cancel()
289 q->ops->buf_release(q, q->bufs[i]); in videobuf_queue_cancel()
291 INIT_LIST_HEAD(&q->stream); in videobuf_queue_cancel()
298 enum v4l2_field videobuf_next_field(struct videobuf_queue *q) in videobuf_next_field() argument
300 enum v4l2_field field = q->field; in videobuf_next_field()
305 if (V4L2_FIELD_TOP == q->last) { in videobuf_next_field()
307 q->last = V4L2_FIELD_BOTTOM; in videobuf_next_field()
310 q->last = V4L2_FIELD_TOP; in videobuf_next_field()
318 static void videobuf_status(struct videobuf_queue *q, struct v4l2_buffer *b, in videobuf_status() argument
322 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_status()
373 int videobuf_mmap_free(struct videobuf_queue *q) in videobuf_mmap_free() argument
376 videobuf_queue_lock(q); in videobuf_mmap_free()
377 ret = __videobuf_free(q); in videobuf_mmap_free()
378 videobuf_queue_unlock(q); in videobuf_mmap_free()
384 int __videobuf_mmap_setup(struct videobuf_queue *q, in __videobuf_mmap_setup() argument
391 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in __videobuf_mmap_setup()
393 err = __videobuf_free(q); in __videobuf_mmap_setup()
399 q->bufs[i] = videobuf_alloc_vb(q); in __videobuf_mmap_setup()
401 if (NULL == q->bufs[i]) in __videobuf_mmap_setup()
404 q->bufs[i]->i = i; in __videobuf_mmap_setup()
405 q->bufs[i]->memory = memory; in __videobuf_mmap_setup()
406 q->bufs[i]->bsize = bsize; in __videobuf_mmap_setup()
409 q->bufs[i]->boff = PAGE_ALIGN(bsize) * i; in __videobuf_mmap_setup()
428 int videobuf_mmap_setup(struct videobuf_queue *q, in videobuf_mmap_setup() argument
433 videobuf_queue_lock(q); in videobuf_mmap_setup()
434 ret = __videobuf_mmap_setup(q, bcount, bsize, memory); in videobuf_mmap_setup()
435 videobuf_queue_unlock(q); in videobuf_mmap_setup()
440 int videobuf_reqbufs(struct videobuf_queue *q, in videobuf_reqbufs() argument
453 videobuf_queue_lock(q); in videobuf_reqbufs()
454 if (req->type != q->type) { in videobuf_reqbufs()
460 if (q->streaming) { in videobuf_reqbufs()
465 if (!list_empty(&q->stream)) { in videobuf_reqbufs()
473 retval = __videobuf_free(q); in videobuf_reqbufs()
481 q->ops->buf_setup(q, &count, &size); in videobuf_reqbufs()
486 retval = __videobuf_mmap_setup(q, count, size, req->memory); in videobuf_reqbufs()
496 videobuf_queue_unlock(q); in videobuf_reqbufs()
501 int videobuf_querybuf(struct videobuf_queue *q, struct v4l2_buffer *b) in videobuf_querybuf() argument
505 videobuf_queue_lock(q); in videobuf_querybuf()
506 if (unlikely(b->type != q->type)) { in videobuf_querybuf()
514 if (unlikely(NULL == q->bufs[b->index])) { in videobuf_querybuf()
519 videobuf_status(q, b, q->bufs[b->index], q->type); in videobuf_querybuf()
523 videobuf_queue_unlock(q); in videobuf_querybuf()
528 int videobuf_qbuf(struct videobuf_queue *q, struct v4l2_buffer *b) in videobuf_qbuf() argument
535 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_qbuf()
540 videobuf_queue_lock(q); in videobuf_qbuf()
542 if (q->reading) { in videobuf_qbuf()
547 if (b->type != q->type) { in videobuf_qbuf()
555 buf = q->bufs[b->index]; in videobuf_qbuf()
577 if (q->type == V4L2_BUF_TYPE_VIDEO_OUTPUT in videobuf_qbuf()
578 || q->type == V4L2_BUF_TYPE_VBI_OUTPUT in videobuf_qbuf()
579 || q->type == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT in videobuf_qbuf()
580 || q->type == V4L2_BUF_TYPE_SDR_OUTPUT) { in videobuf_qbuf()
593 q->ops->buf_release(q, buf); in videobuf_qbuf()
605 field = videobuf_next_field(q); in videobuf_qbuf()
606 retval = q->ops->buf_prepare(q, buf, field); in videobuf_qbuf()
612 list_add_tail(&buf->stream, &q->stream); in videobuf_qbuf()
613 if (q->streaming) { in videobuf_qbuf()
614 spin_lock_irqsave(q->irqlock, flags); in videobuf_qbuf()
615 q->ops->buf_queue(q, buf); in videobuf_qbuf()
616 spin_unlock_irqrestore(q->irqlock, flags); in videobuf_qbuf()
620 wake_up_interruptible_sync(&q->wait); in videobuf_qbuf()
623 videobuf_queue_unlock(q); in videobuf_qbuf()
633 static int stream_next_buffer_check_queue(struct videobuf_queue *q, int noblock) in stream_next_buffer_check_queue() argument
638 if (!q->streaming) { in stream_next_buffer_check_queue()
644 if (list_empty(&q->stream)) { in stream_next_buffer_check_queue()
653 videobuf_queue_unlock(q); in stream_next_buffer_check_queue()
658 retval = wait_event_interruptible(q->wait, in stream_next_buffer_check_queue()
659 !list_empty(&q->stream) || !q->streaming); in stream_next_buffer_check_queue()
660 videobuf_queue_lock(q); in stream_next_buffer_check_queue()
676 static int stream_next_buffer(struct videobuf_queue *q, in stream_next_buffer() argument
682 retval = stream_next_buffer_check_queue(q, nonblocking); in stream_next_buffer()
686 buf = list_entry(q->stream.next, struct videobuf_buffer, stream); in stream_next_buffer()
687 retval = videobuf_waiton(q, buf, nonblocking, 1); in stream_next_buffer()
696 int videobuf_dqbuf(struct videobuf_queue *q, in videobuf_dqbuf() argument
702 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_dqbuf()
705 videobuf_queue_lock(q); in videobuf_dqbuf()
707 retval = stream_next_buffer(q, &buf, nonblocking); in videobuf_dqbuf()
725 CALL(q, sync, q, buf); in videobuf_dqbuf()
726 videobuf_status(q, b, buf, q->type); in videobuf_dqbuf()
731 videobuf_queue_unlock(q); in videobuf_dqbuf()
736 int videobuf_streamon(struct videobuf_queue *q) in videobuf_streamon() argument
742 videobuf_queue_lock(q); in videobuf_streamon()
744 if (q->reading) in videobuf_streamon()
747 if (q->streaming) in videobuf_streamon()
749 q->streaming = 1; in videobuf_streamon()
750 spin_lock_irqsave(q->irqlock, flags); in videobuf_streamon()
751 list_for_each_entry(buf, &q->stream, stream) in videobuf_streamon()
753 q->ops->buf_queue(q, buf); in videobuf_streamon()
754 spin_unlock_irqrestore(q->irqlock, flags); in videobuf_streamon()
756 wake_up_interruptible_sync(&q->wait); in videobuf_streamon()
758 videobuf_queue_unlock(q); in videobuf_streamon()
764 static int __videobuf_streamoff(struct videobuf_queue *q) in __videobuf_streamoff() argument
766 if (!q->streaming) in __videobuf_streamoff()
769 videobuf_queue_cancel(q); in __videobuf_streamoff()
774 int videobuf_streamoff(struct videobuf_queue *q) in videobuf_streamoff() argument
778 videobuf_queue_lock(q); in videobuf_streamoff()
779 retval = __videobuf_streamoff(q); in videobuf_streamoff()
780 videobuf_queue_unlock(q); in videobuf_streamoff()
787 static ssize_t videobuf_read_zerocopy(struct videobuf_queue *q, in videobuf_read_zerocopy() argument
795 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_read_zerocopy()
798 q->read_buf = videobuf_alloc_vb(q); in videobuf_read_zerocopy()
799 if (NULL == q->read_buf) in videobuf_read_zerocopy()
802 q->read_buf->memory = V4L2_MEMORY_USERPTR; in videobuf_read_zerocopy()
803 q->read_buf->baddr = (unsigned long)data; in videobuf_read_zerocopy()
804 q->read_buf->bsize = count; in videobuf_read_zerocopy()
806 field = videobuf_next_field(q); in videobuf_read_zerocopy()
807 retval = q->ops->buf_prepare(q, q->read_buf, field); in videobuf_read_zerocopy()
812 spin_lock_irqsave(q->irqlock, flags); in videobuf_read_zerocopy()
813 q->ops->buf_queue(q, q->read_buf); in videobuf_read_zerocopy()
814 spin_unlock_irqrestore(q->irqlock, flags); in videobuf_read_zerocopy()
815 retval = videobuf_waiton(q, q->read_buf, 0, 0); in videobuf_read_zerocopy()
817 CALL(q, sync, q, q->read_buf); in videobuf_read_zerocopy()
818 if (VIDEOBUF_ERROR == q->read_buf->state) in videobuf_read_zerocopy()
821 retval = q->read_buf->size; in videobuf_read_zerocopy()
826 q->ops->buf_release(q, q->read_buf); in videobuf_read_zerocopy()
827 kfree(q->read_buf); in videobuf_read_zerocopy()
828 q->read_buf = NULL; in videobuf_read_zerocopy()
832 static int __videobuf_copy_to_user(struct videobuf_queue *q, in __videobuf_copy_to_user() argument
837 void *vaddr = CALLPTR(q, vaddr, buf); in __videobuf_copy_to_user()
840 if (count > buf->size - q->read_off) in __videobuf_copy_to_user()
841 count = buf->size - q->read_off; in __videobuf_copy_to_user()
843 if (copy_to_user(data, vaddr + q->read_off, count)) in __videobuf_copy_to_user()
849 static int __videobuf_copy_stream(struct videobuf_queue *q, in __videobuf_copy_stream() argument
854 unsigned int *fc = CALLPTR(q, vaddr, buf); in __videobuf_copy_stream()
867 count = __videobuf_copy_to_user(q, buf, data, count, nonblocking); in __videobuf_copy_stream()
875 ssize_t videobuf_read_one(struct videobuf_queue *q, in videobuf_read_one() argument
884 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_read_one()
886 videobuf_queue_lock(q); in videobuf_read_one()
888 q->ops->buf_setup(q, &nbufs, &size); in videobuf_read_one()
890 if (NULL == q->read_buf && in videobuf_read_one()
893 retval = videobuf_read_zerocopy(q, data, count, ppos); in videobuf_read_one()
900 if (NULL == q->read_buf) { in videobuf_read_one()
903 q->read_buf = videobuf_alloc_vb(q); in videobuf_read_one()
905 dprintk(1, "video alloc=0x%p\n", q->read_buf); in videobuf_read_one()
906 if (NULL == q->read_buf) in videobuf_read_one()
908 q->read_buf->memory = V4L2_MEMORY_USERPTR; in videobuf_read_one()
909 q->read_buf->bsize = count; /* preferred size */ in videobuf_read_one()
910 field = videobuf_next_field(q); in videobuf_read_one()
911 retval = q->ops->buf_prepare(q, q->read_buf, field); in videobuf_read_one()
914 kfree(q->read_buf); in videobuf_read_one()
915 q->read_buf = NULL; in videobuf_read_one()
919 spin_lock_irqsave(q->irqlock, flags); in videobuf_read_one()
920 q->ops->buf_queue(q, q->read_buf); in videobuf_read_one()
921 spin_unlock_irqrestore(q->irqlock, flags); in videobuf_read_one()
923 q->read_off = 0; in videobuf_read_one()
927 retval = videobuf_waiton(q, q->read_buf, nonblocking, 1); in videobuf_read_one()
931 CALL(q, sync, q, q->read_buf); in videobuf_read_one()
933 if (VIDEOBUF_ERROR == q->read_buf->state) { in videobuf_read_one()
935 q->ops->buf_release(q, q->read_buf); in videobuf_read_one()
936 kfree(q->read_buf); in videobuf_read_one()
937 q->read_buf = NULL; in videobuf_read_one()
943 retval = __videobuf_copy_to_user(q, q->read_buf, data, count, nonblocking); in videobuf_read_one()
947 q->read_off += retval; in videobuf_read_one()
948 if (q->read_off == q->read_buf->size) { in videobuf_read_one()
950 q->ops->buf_release(q, q->read_buf); in videobuf_read_one()
951 kfree(q->read_buf); in videobuf_read_one()
952 q->read_buf = NULL; in videobuf_read_one()
956 videobuf_queue_unlock(q); in videobuf_read_one()
962 static int __videobuf_read_start(struct videobuf_queue *q) in __videobuf_read_start() argument
969 q->ops->buf_setup(q, &count, &size); in __videobuf_read_start()
976 err = __videobuf_mmap_setup(q, count, size, V4L2_MEMORY_USERPTR); in __videobuf_read_start()
983 field = videobuf_next_field(q); in __videobuf_read_start()
984 err = q->ops->buf_prepare(q, q->bufs[i], field); in __videobuf_read_start()
987 list_add_tail(&q->bufs[i]->stream, &q->stream); in __videobuf_read_start()
989 spin_lock_irqsave(q->irqlock, flags); in __videobuf_read_start()
991 q->ops->buf_queue(q, q->bufs[i]); in __videobuf_read_start()
992 spin_unlock_irqrestore(q->irqlock, flags); in __videobuf_read_start()
993 q->reading = 1; in __videobuf_read_start()
997 static void __videobuf_read_stop(struct videobuf_queue *q) in __videobuf_read_stop() argument
1001 videobuf_queue_cancel(q); in __videobuf_read_stop()
1002 __videobuf_free(q); in __videobuf_read_stop()
1003 INIT_LIST_HEAD(&q->stream); in __videobuf_read_stop()
1005 if (NULL == q->bufs[i]) in __videobuf_read_stop()
1007 kfree(q->bufs[i]); in __videobuf_read_stop()
1008 q->bufs[i] = NULL; in __videobuf_read_stop()
1010 q->read_buf = NULL; in __videobuf_read_stop()
1013 int videobuf_read_start(struct videobuf_queue *q) in videobuf_read_start() argument
1017 videobuf_queue_lock(q); in videobuf_read_start()
1018 rc = __videobuf_read_start(q); in videobuf_read_start()
1019 videobuf_queue_unlock(q); in videobuf_read_start()
1025 void videobuf_read_stop(struct videobuf_queue *q) in videobuf_read_stop() argument
1027 videobuf_queue_lock(q); in videobuf_read_stop()
1028 __videobuf_read_stop(q); in videobuf_read_stop()
1029 videobuf_queue_unlock(q); in videobuf_read_stop()
1033 void videobuf_stop(struct videobuf_queue *q) in videobuf_stop() argument
1035 videobuf_queue_lock(q); in videobuf_stop()
1037 if (q->streaming) in videobuf_stop()
1038 __videobuf_streamoff(q); in videobuf_stop()
1040 if (q->reading) in videobuf_stop()
1041 __videobuf_read_stop(q); in videobuf_stop()
1043 videobuf_queue_unlock(q); in videobuf_stop()
1047 ssize_t videobuf_read_stream(struct videobuf_queue *q, in videobuf_read_stream() argument
1054 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_read_stream()
1057 videobuf_queue_lock(q); in videobuf_read_stream()
1059 if (q->streaming) in videobuf_read_stream()
1061 if (!q->reading) { in videobuf_read_stream()
1062 retval = __videobuf_read_start(q); in videobuf_read_stream()
1070 if (NULL == q->read_buf) { in videobuf_read_stream()
1071 q->read_buf = list_entry(q->stream.next, in videobuf_read_stream()
1074 list_del(&q->read_buf->stream); in videobuf_read_stream()
1075 q->read_off = 0; in videobuf_read_stream()
1077 rc = videobuf_waiton(q, q->read_buf, nonblocking, 1); in videobuf_read_stream()
1084 if (q->read_buf->state == VIDEOBUF_DONE) { in videobuf_read_stream()
1085 rc = __videobuf_copy_stream(q, q->read_buf, data + retval, count, in videobuf_read_stream()
1093 q->read_off += rc; in videobuf_read_stream()
1096 q->read_off = q->read_buf->size; in videobuf_read_stream()
1102 if (q->read_off == q->read_buf->size) { in videobuf_read_stream()
1103 list_add_tail(&q->read_buf->stream, in videobuf_read_stream()
1104 &q->stream); in videobuf_read_stream()
1105 spin_lock_irqsave(q->irqlock, flags); in videobuf_read_stream()
1106 q->ops->buf_queue(q, q->read_buf); in videobuf_read_stream()
1107 spin_unlock_irqrestore(q->irqlock, flags); in videobuf_read_stream()
1108 q->read_buf = NULL; in videobuf_read_stream()
1115 videobuf_queue_unlock(q); in videobuf_read_stream()
1121 struct videobuf_queue *q, in videobuf_poll_stream() argument
1128 videobuf_queue_lock(q); in videobuf_poll_stream()
1129 if (q->streaming) { in videobuf_poll_stream()
1130 if (!list_empty(&q->stream)) in videobuf_poll_stream()
1131 buf = list_entry(q->stream.next, in videobuf_poll_stream()
1134 if (!q->reading) in videobuf_poll_stream()
1135 __videobuf_read_start(q); in videobuf_poll_stream()
1136 if (!q->reading) { in videobuf_poll_stream()
1138 } else if (NULL == q->read_buf) { in videobuf_poll_stream()
1139 q->read_buf = list_entry(q->stream.next, in videobuf_poll_stream()
1142 list_del(&q->read_buf->stream); in videobuf_poll_stream()
1143 q->read_off = 0; in videobuf_poll_stream()
1145 buf = q->read_buf; in videobuf_poll_stream()
1154 switch (q->type) { in videobuf_poll_stream()
1167 videobuf_queue_unlock(q); in videobuf_poll_stream()
1172 int videobuf_mmap_mapper(struct videobuf_queue *q, struct vm_area_struct *vma) in videobuf_mmap_mapper() argument
1177 MAGIC_CHECK(q->int_ops->magic, MAGIC_QTYPE_OPS); in videobuf_mmap_mapper()
1184 videobuf_queue_lock(q); in videobuf_mmap_mapper()
1186 struct videobuf_buffer *buf = q->bufs[i]; in videobuf_mmap_mapper()
1190 rc = CALL(q, mmap_mapper, q, buf, vma); in videobuf_mmap_mapper()
1194 videobuf_queue_unlock(q); in videobuf_mmap_mapper()