diff options
| author | Dave Airlie <airlied@redhat.com> | 2012-05-20 03:03:56 -0400 |
|---|---|---|
| committer | Sumit Semwal <sumit.semwal@ti.com> | 2012-05-25 03:05:24 -0400 |
| commit | 98f86c9e4ae3205e4c85c535691a5d36426360ee (patch) | |
| tree | 07a533aaf702c8b0a0f6ffb0b0ee2ae6e4fe62e3 /include | |
| parent | 4c78513e457f72d5554a0f6e2eabfad7b98e4f19 (diff) | |
dma-buf: add vmap interface
The main requirement I have for this interface is for scanning out
using the USB gpu devices. Since these devices have to read the
framebuffer on updates and linearly compress it, using kmaps
is a major overhead for every update.
v2: fix warn issues pointed out by Sylwester Nawrocki.
v3: fix compile !CONFIG_DMA_SHARED_BUFFER and add _GPL for now
Signed-off-by: Dave Airlie <airlied@redhat.com>
Reviewed-by: Rob Clark <rob.clark@linaro.org>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/dma-buf.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/dma-buf.h b/include/linux/dma-buf.h index 1f78d1594cc7..a02b1ff6488e 100644 --- a/include/linux/dma-buf.h +++ b/include/linux/dma-buf.h | |||
| @@ -98,6 +98,9 @@ struct dma_buf_ops { | |||
| 98 | void (*kunmap)(struct dma_buf *, unsigned long, void *); | 98 | void (*kunmap)(struct dma_buf *, unsigned long, void *); |
| 99 | 99 | ||
| 100 | int (*mmap)(struct dma_buf *, struct vm_area_struct *vma); | 100 | int (*mmap)(struct dma_buf *, struct vm_area_struct *vma); |
| 101 | |||
| 102 | void *(*vmap)(struct dma_buf *); | ||
| 103 | void (*vunmap)(struct dma_buf *, void *vaddr); | ||
| 101 | }; | 104 | }; |
| 102 | 105 | ||
| 103 | /** | 106 | /** |
| @@ -176,6 +179,8 @@ void dma_buf_kunmap(struct dma_buf *, unsigned long, void *); | |||
| 176 | 179 | ||
| 177 | int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *, | 180 | int dma_buf_mmap(struct dma_buf *, struct vm_area_struct *, |
| 178 | unsigned long); | 181 | unsigned long); |
| 182 | void *dma_buf_vmap(struct dma_buf *); | ||
| 183 | void dma_buf_vunmap(struct dma_buf *, void *vaddr); | ||
| 179 | #else | 184 | #else |
| 180 | 185 | ||
| 181 | static inline struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf, | 186 | static inline struct dma_buf_attachment *dma_buf_attach(struct dma_buf *dmabuf, |
| @@ -264,6 +269,15 @@ static inline int dma_buf_mmap(struct dma_buf *dmabuf, | |||
| 264 | { | 269 | { |
| 265 | return -ENODEV; | 270 | return -ENODEV; |
| 266 | } | 271 | } |
| 272 | |||
| 273 | static inline void *dma_buf_vmap(struct dma_buf *dmabuf) | ||
| 274 | { | ||
| 275 | return NULL; | ||
| 276 | } | ||
| 277 | |||
| 278 | static inline void dma_buf_vunmap(struct dma_buf *dmabuf, void *vaddr) | ||
| 279 | { | ||
| 280 | } | ||
| 267 | #endif /* CONFIG_DMA_SHARED_BUFFER */ | 281 | #endif /* CONFIG_DMA_SHARED_BUFFER */ |
| 268 | 282 | ||
| 269 | #endif /* __DMA_BUF_H__ */ | 283 | #endif /* __DMA_BUF_H__ */ |
