1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * helper functions for vmalloc capture buffers 4 * 5 * The functions expect the hardware being able to scatter gather 6 * (i.e. the buffers are not linear in physical memory, but fragmented 7 * into PAGE_SIZE chunks). They also assume the driver does not need 8 * to touch the video data. 9 * 10 * (c) 2007 Mauro Carvalho Chehab, <mchehab@kernel.org> 11 */ 12 #ifndef _VIDEOBUF_VMALLOC_H 13 #define _VIDEOBUF_VMALLOC_H 14 15 #include <media/videobuf-core.h> 16 17 /* --------------------------------------------------------------------- */ 18 19 struct videobuf_vmalloc_memory { 20 u32 magic; 21 22 void *vaddr; 23 24 /* remap_vmalloc_range seems to need to run 25 * after mmap() on some cases */ 26 struct vm_area_struct *vma; 27 }; 28 29 void videobuf_queue_vmalloc_init(struct videobuf_queue *q, 30 const struct videobuf_queue_ops *ops, 31 struct device *dev, 32 spinlock_t *irqlock, 33 enum v4l2_buf_type type, 34 enum v4l2_field field, 35 unsigned int msize, 36 void *priv, 37 struct mutex *ext_lock); 38 39 void *videobuf_to_vmalloc(struct videobuf_buffer *buf); 40 41 void videobuf_vmalloc_free(struct videobuf_buffer *buf); 42 43 #endif 44