1*77512baaSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */ 287b9ad07SMauro Carvalho Chehab /* 387b9ad07SMauro Carvalho Chehab * helper functions for vmalloc capture buffers 487b9ad07SMauro Carvalho Chehab * 55d6aaf50SMagnus Damm * The functions expect the hardware being able to scatter gather 687b9ad07SMauro Carvalho Chehab * (i.e. the buffers are not linear in physical memory, but fragmented 787b9ad07SMauro Carvalho Chehab * into PAGE_SIZE chunks). They also assume the driver does not need 887b9ad07SMauro Carvalho Chehab * to touch the video data. 987b9ad07SMauro Carvalho Chehab * 1032590819SMauro Carvalho Chehab * (c) 2007 Mauro Carvalho Chehab, <mchehab@kernel.org> 1187b9ad07SMauro Carvalho Chehab */ 1259d34489SMauro Carvalho Chehab #ifndef _VIDEOBUF_VMALLOC_H 1359d34489SMauro Carvalho Chehab #define _VIDEOBUF_VMALLOC_H 1487b9ad07SMauro Carvalho Chehab 1587b9ad07SMauro Carvalho Chehab #include <media/videobuf-core.h> 1687b9ad07SMauro Carvalho Chehab 1787b9ad07SMauro Carvalho Chehab /* --------------------------------------------------------------------- */ 1887b9ad07SMauro Carvalho Chehab 197a02264cSPawel Osciak struct videobuf_vmalloc_memory { 2087b9ad07SMauro Carvalho Chehab u32 magic; 2187b9ad07SMauro Carvalho Chehab 22bb6dbe74SLaurent Pinchart void *vaddr; 2387b9ad07SMauro Carvalho Chehab 247a02264cSPawel Osciak /* remap_vmalloc_range seems to need to run 257a02264cSPawel Osciak * after mmap() on some cases */ 2687b9ad07SMauro Carvalho Chehab struct vm_area_struct *vma; 2787b9ad07SMauro Carvalho Chehab }; 2887b9ad07SMauro Carvalho Chehab 2987b9ad07SMauro Carvalho Chehab void videobuf_queue_vmalloc_init(struct videobuf_queue *q, 3038a54f35SJonathan Corbet const struct videobuf_queue_ops *ops, 31f8b0bca1SJonathan Corbet struct device *dev, 3287b9ad07SMauro Carvalho Chehab spinlock_t *irqlock, 3387b9ad07SMauro Carvalho Chehab enum v4l2_buf_type type, 3487b9ad07SMauro Carvalho Chehab enum v4l2_field field, 3587b9ad07SMauro Carvalho Chehab unsigned int msize, 3608bff03eSHans Verkuil void *priv, 3708bff03eSHans Verkuil struct mutex *ext_lock); 3887b9ad07SMauro Carvalho Chehab 3987b9ad07SMauro Carvalho Chehab void *videobuf_to_vmalloc(struct videobuf_buffer *buf); 4087b9ad07SMauro Carvalho Chehab 4187b9ad07SMauro Carvalho Chehab void videobuf_vmalloc_free(struct videobuf_buffer *buf); 4259d34489SMauro Carvalho Chehab 4359d34489SMauro Carvalho Chehab #endif 44