Blame view
include/media/videobuf-dma-sg.h
2.94 KB
7a7d9a89d V4L/DVB (6251): R... |
1 |
/* |
0705135e5 V4L/DVB (7237): C... |
2 |
* helper functions for SG DMA video4linux capture buffers |
7a7d9a89d V4L/DVB (6251): R... |
3 |
* |
5d6aaf50e V4L/DVB (8340): v... |
4 |
* The functions expect the hardware being able to scatter gather |
7a7d9a89d V4L/DVB (6251): R... |
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
* (i.e. the buffers are not linear in physical memory, but fragmented * into PAGE_SIZE chunks). They also assume the driver does not need * to touch the video data. * * (c) 2007 Mauro Carvalho Chehab, <mchehab@infradead.org> * * Highly based on video-buf written originally by: * (c) 2001,02 Gerd Knorr <kraxel@bytesex.org> * (c) 2006 Mauro Carvalho Chehab, <mchehab@infradead.org> * (c) 2006 Ted Walther and John Sokol * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 */ |
7a02264ca V4L/DVB: v4l: vid... |
20 21 |
#ifndef _VIDEOBUF_DMA_SG_H #define _VIDEOBUF_DMA_SG_H |
7a7d9a89d V4L/DVB (6251): R... |
22 23 24 25 26 27 |
#include <media/videobuf-core.h> /* --------------------------------------------------------------------- */ /* |
7a7d9a89d V4L/DVB (6251): R... |
28 29 30 31 32 33 34 35 36 |
* A small set of helper functions to manage buffers (both userland * and kernel) for DMA. * * videobuf_dma_init_*() * creates a buffer. The userland version takes a userspace * pointer + length. The kernel version just wants the size and * does memory allocation too using vmalloc_32(). * * videobuf_dma_*() |
395cf9691 doc: fix broken r... |
37 |
* see Documentation/DMA-API-HOWTO.txt, these functions to |
7a7d9a89d V4L/DVB (6251): R... |
38 39 40 41 42 43 44 45 46 47 48 49 50 |
* basically the same. The map function does also build a * scatterlist for the buffer (and unmap frees it ...) * * videobuf_dma_free() * no comment ... * */ struct videobuf_dmabuf { u32 magic; /* for userland buffer */ int offset; |
2fc11536c V4L/DVB: videobuf... |
51 |
size_t size; |
7a7d9a89d V4L/DVB (6251): R... |
52 53 54 |
struct page **pages; /* for kernel buffers */ |
bb6dbe748 V4L/DVB: videobuf... |
55 |
void *vaddr; |
7b4eeed17 [media] vmalloc_s... |
56 57 58 |
struct page **vaddr_pages; dma_addr_t *dma_addr; struct device *dev; |
7a7d9a89d V4L/DVB (6251): R... |
59 |
|
7a7d9a89d V4L/DVB (6251): R... |
60 61 62 63 64 65 66 67 68 |
/* for overlay buffers (pci-pci dma) */ dma_addr_t bus_addr; /* common */ struct scatterlist *sglist; int sglen; int nr_pages; int direction; }; |
7a02264ca V4L/DVB: v4l: vid... |
69 |
struct videobuf_dma_sg_memory { |
7a7d9a89d V4L/DVB (6251): R... |
70 71 72 |
u32 magic; /* for mmap'ed buffers */ |
7a7d9a89d V4L/DVB (6251): R... |
73 74 |
struct videobuf_dmabuf dma; }; |
952684035 V4L/DVB: videobuf... |
75 76 77 78 79 80 81 82 83 84 |
/* * Scatter-gather DMA buffer API. * * These functions provide a simple way to create a page list and a * scatter-gather list from a kernel, userspace of physical address and map the * memory for DMA operation. * * Despite the name, this is totally unrelated to videobuf, except that * videobuf-dma-sg uses the same API internally. */ |
7a7d9a89d V4L/DVB (6251): R... |
85 |
int videobuf_dma_free(struct videobuf_dmabuf *dma); |
952684035 V4L/DVB: videobuf... |
86 |
int videobuf_dma_unmap(struct device *dev, struct videobuf_dmabuf *dma); |
7a02264ca V4L/DVB: v4l: vid... |
87 |
struct videobuf_dmabuf *videobuf_to_dma(struct videobuf_buffer *buf); |
7a7d9a89d V4L/DVB (6251): R... |
88 |
|
0705135e5 V4L/DVB (7237): C... |
89 |
void *videobuf_sg_alloc(size_t size); |
7a7d9a89d V4L/DVB (6251): R... |
90 |
|
7a02264ca V4L/DVB: v4l: vid... |
91 |
void videobuf_queue_sg_init(struct videobuf_queue *q, |
38a54f35a V4L/DVB (13377): ... |
92 |
const struct videobuf_queue_ops *ops, |
0705135e5 V4L/DVB (7237): C... |
93 |
struct device *dev, |
7a7d9a89d V4L/DVB (6251): R... |
94 95 96 97 |
spinlock_t *irqlock, enum v4l2_buf_type type, enum v4l2_field field, unsigned int msize, |
08bff03ed V4L/DVB: videobuf... |
98 99 |
void *priv, struct mutex *ext_lock); |
7a7d9a89d V4L/DVB (6251): R... |
100 |
|
7a02264ca V4L/DVB: v4l: vid... |
101 |
#endif /* _VIDEOBUF_DMA_SG_H */ |