diff options
author | Christoph Hellwig <hch@lst.de> | 2016-01-20 18:01:22 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-01-20 20:09:18 -0500 |
commit | 0d4a619b64bad7117947a84a10c17a2b8f14d252 (patch) | |
tree | 07ce1a6bfc43b0e0fb54f3231923c1f893938ff8 /drivers/base/dma-mapping.c | |
parent | f9ed89e17ee7d1f5f25615bb0080b9a3ff1bb5f0 (diff) |
dma-mapping: make the generic coherent dma mmap implementation optional
This series converts all remaining architectures to use dma_map_ops and
the generic implementation of the DMA API. This not only simplifies the
code a lot, but also prepares for possible future changes like more
generic non-iommu dma_ops implementations or generic per-device
dma_map_ops.
This patch (of 16):
We have a couple architectures that do not want to support this code, so
add another Kconfig symbol that disables the code similar to what we do
for the nommu case.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no>
Cc: Steven Miao <realmz6@gmail.com>
Cc: Ley Foon Tan <lftan@altera.com>
Cc: David Howells <dhowells@redhat.com>
Cc: Koichi Yasutake <yasutake.koichi@jp.panasonic.com>
Cc: Chris Metcalf <cmetcalf@ezchip.com>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>
Cc: Helge Deller <deller@gmx.de>
Cc: James Hogan <james.hogan@imgtec.com>
Cc: Jesper Nilsson <jesper.nilsson@axis.com>
Cc: Mark Salter <msalter@redhat.com>
Cc: Mikael Starvik <starvik@axis.com>
Cc: Vineet Gupta <vgupta@synopsys.com>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>
Cc: Joerg Roedel <jroedel@suse.de>
Cc: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/base/dma-mapping.c')
-rw-r--r-- | drivers/base/dma-mapping.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c index d95c5971c225..381e39d5204e 100644 --- a/drivers/base/dma-mapping.c +++ b/drivers/base/dma-mapping.c | |||
@@ -247,7 +247,7 @@ int dma_common_mmap(struct device *dev, struct vm_area_struct *vma, | |||
247 | void *cpu_addr, dma_addr_t dma_addr, size_t size) | 247 | void *cpu_addr, dma_addr_t dma_addr, size_t size) |
248 | { | 248 | { |
249 | int ret = -ENXIO; | 249 | int ret = -ENXIO; |
250 | #ifdef CONFIG_MMU | 250 | #if defined(CONFIG_MMU) && !defined(CONFIG_ARCH_NO_COHERENT_DMA_MMAP) |
251 | unsigned long user_count = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; | 251 | unsigned long user_count = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT; |
252 | unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT; | 252 | unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT; |
253 | unsigned long pfn = page_to_pfn(virt_to_page(cpu_addr)); | 253 | unsigned long pfn = page_to_pfn(virt_to_page(cpu_addr)); |
@@ -264,7 +264,7 @@ int dma_common_mmap(struct device *dev, struct vm_area_struct *vma, | |||
264 | user_count << PAGE_SHIFT, | 264 | user_count << PAGE_SHIFT, |
265 | vma->vm_page_prot); | 265 | vma->vm_page_prot); |
266 | } | 266 | } |
267 | #endif /* CONFIG_MMU */ | 267 | #endif /* CONFIG_MMU && !CONFIG_ARCH_NO_COHERENT_DMA_MMAP */ |
268 | 268 | ||
269 | return ret; | 269 | return ret; |
270 | } | 270 | } |