diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-01-25 05:00:01 -0300 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-02-21 13:34:55 -0200 |
commit | b50e7fe99317c05b0bb8ba6338bc6aa7da3b918e (patch) | |
tree | 32124766d993a7d65b49555f6f65a04508ecc318 /include/media/video-buf.h | |
parent | 52ebc763d8e0c9f2ab48af89a75e90e2318bac86 (diff) | |
download | linux-b50e7fe99317c05b0bb8ba6338bc6aa7da3b918e.tar.gz linux-b50e7fe99317c05b0bb8ba6338bc6aa7da3b918e.tar.bz2 linux-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/video-buf.h')
-rw-r--r-- | include/media/video-buf.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/include/media/video-buf.h b/include/media/video-buf.h index 1115a256969f..d6f079476db3 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; |