summaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorTomasz Figa <tfiga@chromium.org>2016-02-01 22:34:42 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2016-02-11 16:33:38 +0100
commitccc66e738252cede5c13e8d529b93b5a35b307c2 (patch)
tree9edac37e6cd7c014632076427dc2da92eee787b4 /include/media
parentARM: 8507/1: dma-mapping: Use DMA_ATTR_ALLOC_SINGLE_PAGES hint to optimize alloc (diff)
downloadlinux-ccc66e738252cede5c13e8d529b93b5a35b307c2.tar.xz
linux-ccc66e738252cede5c13e8d529b93b5a35b307c2.zip
ARM: 8508/2: videobuf2-dc: Let drivers specify DMA attrs
DMA allocations might be subject to certain requirements specific to the hardware using the buffers, such as availability of kernel mapping (for contents fix-ups in the driver). The only entity that knows them is the driver, so it must share this knowledge with vb2-dc. This patch extends the alloc_ctx initialization interface to let the driver specify DMA attrs, which are then stored inside the allocation context and will be used for all allocations with that context. As a side effect, all dma_*_coherent() calls are turned into dma_*_attrs() calls, because the attributes need to be carried over through all DMA operations. Signed-off-by: Tomasz Figa <tfiga@chromium.org> Signed-off-by: Douglas Anderson <dianders@chromium.org> Tested-by: Javier Martinez Canillas <javier@osg.samsung.com> Acked-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com> Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'include/media')
-rw-r--r--include/media/videobuf2-dma-contig.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/include/media/videobuf2-dma-contig.h b/include/media/videobuf2-dma-contig.h
index c33dfa69d7ab..2087c9a68be3 100644
--- a/include/media/videobuf2-dma-contig.h
+++ b/include/media/videobuf2-dma-contig.h
@@ -16,6 +16,8 @@
#include <media/videobuf2-v4l2.h>
#include <linux/dma-mapping.h>
+struct dma_attrs;
+
static inline dma_addr_t
vb2_dma_contig_plane_dma_addr(struct vb2_buffer *vb, unsigned int plane_no)
{
@@ -24,7 +26,14 @@ vb2_dma_contig_plane_dma_addr(struct vb2_buffer *vb, unsigned int plane_no)
return *addr;
}
-void *vb2_dma_contig_init_ctx(struct device *dev);
+void *vb2_dma_contig_init_ctx_attrs(struct device *dev,
+ struct dma_attrs *attrs);
+
+static inline void *vb2_dma_contig_init_ctx(struct device *dev)
+{
+ return vb2_dma_contig_init_ctx_attrs(dev, NULL);
+}
+
void vb2_dma_contig_cleanup_ctx(void *alloc_ctx);
extern const struct vb2_mem_ops vb2_dma_contig_memops;