summaryrefslogtreecommitdiff
path: root/include/media
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@infradead.org>2007-01-25 05:00:01 -0300
committerMauro Carvalho Chehab <mchehab@infradead.org>2007-02-21 13:34:55 -0200
commitb50e7fe99317c05b0bb8ba6338bc6aa7da3b918e (patch)
tree32124766d993a7d65b49555f6f65a04508ecc318 /include/media
parent52ebc763d8e0c9f2ab48af89a75e90e2318bac86 (diff)
downloadlinux-3.10-b50e7fe99317c05b0bb8ba6338bc6aa7da3b918e.tar.gz
linux-3.10-b50e7fe99317c05b0bb8ba6338bc6aa7da3b918e.tar.bz2
linux-3.10-b50e7fe99317c05b0bb8ba6338bc6aa7da3b918e.zip
V4L/DVB (5147): Make vivi driver to use vmalloced pointers
Before this patch, vivi were simulating a scatter gather DMA transfer. While this is academic, showing how stuff really works on a real PCI device, this means a non-optimized code. There are only two memory models that vivi implements: 1) kernel alloced memory. This is also used by read() method. On this case, a vmalloc32 buffer is allocated at kernel; 2) userspace allocated memory. This is used by most userspace apps. video-buf will store this pointer. a simple copy_to_user is enough to transfer data. The third memory model scenario supported by video-buf is overlay mode. This model is not implemented on vivi and unlikely to be implemented on newer drivers, since now, most userspace apps do some post-processing (like de-interlacing). After this patch, some cleanups may be done at video-buf.c to avoid allocating pages, when the driver doesn't need a PCI buffer. This is the case of vivi and usb drivers. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'include/media')
-rw-r--r--include/media/video-buf.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/media/video-buf.h b/include/media/video-buf.h
index 1115a256969..d6f079476db 100644
--- a/include/media/video-buf.h
+++ b/include/media/video-buf.h
@@ -78,6 +78,9 @@ struct videobuf_dmabuf {
/* for kernel buffers */
void *vmalloc;
+ /* Stores the userspace pointer to vmalloc area */
+ void *varea;
+
/* for overlay buffers (pci-pci dma) */
dma_addr_t bus_addr;