diff options
author | Marek Szyprowski <m.szyprowski@samsung.com> | 2016-05-24 09:16:06 +0200 |
---|---|---|
committer | Sylwester Nawrocki <s.nawrocki@samsung.com> | 2016-06-03 11:12:50 +0200 |
commit | 3f03396918962b2f8b888d02b23cd1e0c88bf5e5 (patch) | |
tree | de42cca354178aca1f9588536eee6e35dfd1c417 /include | |
parent | c974c436eaf406225b7f4c5d27ae033a12667a38 (diff) | |
download | linux-stable-3f03396918962b2f8b888d02b23cd1e0c88bf5e5.tar.gz linux-stable-3f03396918962b2f8b888d02b23cd1e0c88bf5e5.tar.bz2 linux-stable-3f03396918962b2f8b888d02b23cd1e0c88bf5e5.zip |
media: vb2-dma-contig: add helper for setting dma max seg size
Add a helper function for device drivers to set DMA's max_seg_size.
Setting it to largest possible value lets DMA-mapping API always create
contiguous mappings in DMA address space. This is essential for all
devices, which use dma-contig videobuf2 memory allocator and shared
buffers.
Till now, the only case when vb2-dma-contig really 'worked' was a case
where userspace provided USERPTR buffer, which was in fact mmaped
contiguous buffer from the other v4l2/drm device. Also DMABUF made of
contiguous buffer worked only when its exporter did not split it into
several chunks in the scatter-list. Any other buffer failed, regardless
of the arch/platform used and the presence of the IOMMU of the device bus.
This patch provides interface to fix this issue.
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/media/videobuf2-dma-contig.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/media/videobuf2-dma-contig.h b/include/media/videobuf2-dma-contig.h index 2087c9a68be3..f7dc8401817e 100644 --- a/include/media/videobuf2-dma-contig.h +++ b/include/media/videobuf2-dma-contig.h @@ -35,6 +35,8 @@ static inline void *vb2_dma_contig_init_ctx(struct device *dev) } void vb2_dma_contig_cleanup_ctx(void *alloc_ctx); +int vb2_dma_contig_set_max_seg_size(struct device *dev, unsigned int size); +void vb2_dma_contig_clear_max_seg_size(struct device *dev); extern const struct vb2_mem_ops vb2_dma_contig_memops; |