Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

c6x: Provide dummy dma_mmap_coherent() and dma_get_sgtable()

c6x/allmodconfig (assumed):

drivers/media/v4l2-core/videobuf2-dma-contig.c: In function ‘vb2_dc_mmap’:
drivers/media/v4l2-core/videobuf2-dma-contig.c:204: error: implicit declaration of function ‘dma_mmap_coherent’
drivers/media/v4l2-core/videobuf2-dma-contig.c: In function ‘vb2_dc_get_base_sgt’:
drivers/media/v4l2-core/videobuf2-dma-contig.c:387: error: implicit declaration of function ‘dma_get_sgtable’

For architectures using dma_map_ops, dma_mmap_coherent() and
dma_get_sgtable() are provided in <asm-generic/dma-mapping-common.h>.

C6x does not use dma_map_ops, hence it should implement them itself.
For now, use dummy implementations that just return -EINVAL, until the API
has been finalized.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: linux-c6x-dev@linux-c6x.org
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>

authored by

Geert Uytterhoeven and committed by
Marek Szyprowski
18180651 afbe21d8

+15
+15
arch/c6x/include/asm/dma-mapping.h
··· 89 89 #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent((d), (s), (h), (f)) 90 90 #define dma_free_noncoherent(d, s, v, h) dma_free_coherent((d), (s), (v), (h)) 91 91 92 + /* Not supported for now */ 93 + static inline int dma_mmap_coherent(struct device *dev, 94 + struct vm_area_struct *vma, void *cpu_addr, 95 + dma_addr_t dma_addr, size_t size) 96 + { 97 + return -EINVAL; 98 + } 99 + 100 + static inline int dma_get_sgtable(struct device *dev, struct sg_table *sgt, 101 + void *cpu_addr, dma_addr_t dma_addr, 102 + size_t size) 103 + { 104 + return -EINVAL; 105 + } 106 + 92 107 #endif /* _ASM_C6X_DMA_MAPPING_H */