diff options
author | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-08-02 22:31:33 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@infradead.org> | 2007-10-09 21:14:56 -0400 |
commit | 87b9ad070cf76c0f1e8cf836f7eb86e9ac94e34a (patch) | |
tree | aeda5c7b1434350a476005c85dc39173ead11090 /include/media | |
parent | 6bb2790f8a0cf93d3dbed6b6e986441110e6174b (diff) |
V4L/DVB (6254): Add videobuf-vmalloc
Adds a newer videobuf-vmalloc module. This module uses the same
videobuf controls, but implements memory allocation based on vmalloc
methods.
With this method, an USB driver can use video-buf, without needing to
request memory from the DMA-safe area.
Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
Diffstat (limited to 'include/media')
-rw-r--r-- | include/media/videobuf-vmalloc.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/include/media/videobuf-vmalloc.h b/include/media/videobuf-vmalloc.h new file mode 100644 index 000000000000..5fff68df6689 --- /dev/null +++ b/include/media/videobuf-vmalloc.h | |||
@@ -0,0 +1,44 @@ | |||
1 | /* | ||
2 | * helper functions for vmalloc capture buffers | ||
3 | * | ||
4 | * The functions expect the hardware being able to scatter gatter | ||
5 | * (i.e. the buffers are not linear in physical memory, but fragmented | ||
6 | * into PAGE_SIZE chunks). They also assume the driver does not need | ||
7 | * to touch the video data. | ||
8 | * | ||
9 | * (c) 2007 Mauro Carvalho Chehab, <mchehab@infradead.org> | ||
10 | * | ||
11 | * This program is free software; you can redistribute it and/or modify | ||
12 | * it under the terms of the GNU General Public License as published by | ||
13 | * the Free Software Foundation; either version 2 | ||
14 | */ | ||
15 | |||
16 | #include <media/videobuf-core.h> | ||
17 | |||
18 | /* --------------------------------------------------------------------- */ | ||
19 | |||
20 | struct videbuf_vmalloc_memory | ||
21 | { | ||
22 | u32 magic; | ||
23 | |||
24 | /* for mmap'ed buffers */ | ||
25 | struct videobuf_mapping *map; | ||
26 | |||
27 | void *vmalloc; | ||
28 | |||
29 | /* remap_vmalloc_range seems to need to run after mmap() on some cases */ | ||
30 | struct vm_area_struct *vma; | ||
31 | }; | ||
32 | |||
33 | void videobuf_queue_vmalloc_init(struct videobuf_queue* q, | ||
34 | struct videobuf_queue_ops *ops, | ||
35 | void *dev, | ||
36 | spinlock_t *irqlock, | ||
37 | enum v4l2_buf_type type, | ||
38 | enum v4l2_field field, | ||
39 | unsigned int msize, | ||
40 | void *priv); | ||
41 | |||
42 | void *videobuf_to_vmalloc (struct videobuf_buffer *buf); | ||
43 | |||
44 | void videobuf_vmalloc_free (struct videobuf_buffer *buf); | ||