dma-mapping: remove arch_dma_mmap_pgprot
arch_dma_mmap_pgprot is used for two things: 1) to override the "normal" uncached page attributes for mapping memory coherent to devices that can't snoop the CPU caches 2) to provide the special DMA_ATTR_WRITE_COMBINE semantics on older arm systems and some mips platforms Replace one with the pgprot_dmacoherent macro that is already provided by arm and much simpler to use, and lift the DMA_ATTR_WRITE_COMBINE handling to common code with an explicit arch opt-in. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org> # m68k Acked-by: Paul Burton <paul.burton@mips.com> # mips
This commit is contained in:
@@ -20,6 +20,15 @@ config ARCH_HAS_DMA_COHERENCE_H
|
||||
config ARCH_HAS_DMA_SET_MASK
|
||||
bool
|
||||
|
||||
#
|
||||
# Select this option if the architecture needs special handling for
|
||||
# DMA_ATTR_WRITE_COMBINE. Normally the "uncached" mapping should be what
|
||||
# people thing of when saying write combine, so very few platforms should
|
||||
# need to enable this.
|
||||
#
|
||||
config ARCH_HAS_DMA_WRITE_COMBINE
|
||||
bool
|
||||
|
||||
config DMA_DECLARE_COHERENT
|
||||
bool
|
||||
|
||||
@@ -45,9 +54,6 @@ config ARCH_HAS_DMA_PREP_COHERENT
|
||||
config ARCH_HAS_DMA_COHERENT_TO_PFN
|
||||
bool
|
||||
|
||||
config ARCH_HAS_DMA_MMAP_PGPROT
|
||||
bool
|
||||
|
||||
config ARCH_HAS_FORCE_DMA_UNENCRYPTED
|
||||
bool
|
||||
|
||||
|
@@ -161,9 +161,11 @@ pgprot_t dma_pgprot(struct device *dev, pgprot_t prot, unsigned long attrs)
|
||||
(IS_ENABLED(CONFIG_DMA_NONCOHERENT_CACHE_SYNC) &&
|
||||
(attrs & DMA_ATTR_NON_CONSISTENT)))
|
||||
return prot;
|
||||
if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_MMAP_PGPROT))
|
||||
return arch_dma_mmap_pgprot(dev, prot, attrs);
|
||||
return pgprot_noncached(prot);
|
||||
#ifdef CONFIG_ARCH_HAS_DMA_WRITE_COMBINE
|
||||
if (attrs & DMA_ATTR_WRITE_COMBINE)
|
||||
return pgprot_writecombine(prot);
|
||||
#endif
|
||||
return pgprot_dmacoherent(prot);
|
||||
}
|
||||
#endif /* CONFIG_MMU */
|
||||
|
||||
|
Reference in New Issue
Block a user