forked from luck/tmp_suning_uos_patched
dma-direct: remove the cached_kernel_address hook
dma-direct now finds the kernel address for coherent allocations based on the dma address, so the cached_kernel_address hooks is unused and can be removed entirely. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Robin Murphy <robin.murphy@arm.com>
This commit is contained in:
parent
286c21de32
commit
4f8232bbf8
|
@ -249,7 +249,7 @@ config ARCH_HAS_SET_DIRECT_MAP
|
||||||
|
|
||||||
#
|
#
|
||||||
# Select if arch has an uncached kernel segment and provides the
|
# Select if arch has an uncached kernel segment and provides the
|
||||||
# uncached_kernel_address / cached_kernel_address symbols to use it
|
# uncached_kernel_address symbol to use it
|
||||||
#
|
#
|
||||||
config ARCH_HAS_UNCACHED_SEGMENT
|
config ARCH_HAS_UNCACHED_SEGMENT
|
||||||
select ARCH_HAS_DMA_PREP_COHERENT
|
select ARCH_HAS_DMA_PREP_COHERENT
|
||||||
|
|
|
@ -49,11 +49,4 @@ void *uncached_kernel_address(void *ptr)
|
||||||
pr_warn("ERROR: Your cache coherent area is CACHED!!!\n");
|
pr_warn("ERROR: Your cache coherent area is CACHED!!!\n");
|
||||||
return (void *)addr;
|
return (void *)addr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *cached_kernel_address(void *ptr)
|
|
||||||
{
|
|
||||||
unsigned long addr = (unsigned long)ptr;
|
|
||||||
|
|
||||||
return (void *)(addr & ~UNCACHED_SHADOW_MASK);
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_MMU */
|
#endif /* CONFIG_MMU */
|
||||||
|
|
|
@ -54,11 +54,6 @@ void *uncached_kernel_address(void *addr)
|
||||||
return (void *)(__pa(addr) + UNCAC_BASE);
|
return (void *)(__pa(addr) + UNCAC_BASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *cached_kernel_address(void *addr)
|
|
||||||
{
|
|
||||||
return __va(addr) - UNCAC_BASE;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void dma_sync_virt(void *addr, size_t size,
|
static inline void dma_sync_virt(void *addr, size_t size,
|
||||||
enum dma_data_direction dir)
|
enum dma_data_direction dir)
|
||||||
{
|
{
|
||||||
|
|
|
@ -75,13 +75,3 @@ void *uncached_kernel_address(void *ptr)
|
||||||
|
|
||||||
return (void *)ptr;
|
return (void *)ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *cached_kernel_address(void *ptr)
|
|
||||||
{
|
|
||||||
unsigned long addr = (unsigned long)ptr;
|
|
||||||
|
|
||||||
addr &= ~CONFIG_NIOS2_IO_REGION_BASE;
|
|
||||||
addr |= CONFIG_NIOS2_KERNEL_REGION_BASE;
|
|
||||||
|
|
||||||
return (void *)ptr;
|
|
||||||
}
|
|
||||||
|
|
|
@ -88,18 +88,12 @@ void arch_dma_prep_coherent(struct page *page, size_t size)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Memory caching is platform-dependent in noMMU xtensa configurations.
|
* Memory caching is platform-dependent in noMMU xtensa configurations.
|
||||||
* The following two functions should be implemented in platform code
|
* This function should be implemented in platform code in order to enable
|
||||||
* in order to enable coherent DMA memory operations when CONFIG_MMU is not
|
* coherent DMA memory operations when CONFIG_MMU is not enabled.
|
||||||
* enabled.
|
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_MMU
|
#ifdef CONFIG_MMU
|
||||||
void *uncached_kernel_address(void *p)
|
void *uncached_kernel_address(void *p)
|
||||||
{
|
{
|
||||||
return p + XCHAL_KSEG_BYPASS_VADDR - XCHAL_KSEG_CACHED_VADDR;
|
return p + XCHAL_KSEG_BYPASS_VADDR - XCHAL_KSEG_CACHED_VADDR;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *cached_kernel_address(void *p)
|
|
||||||
{
|
|
||||||
return p + XCHAL_KSEG_CACHED_VADDR - XCHAL_KSEG_BYPASS_VADDR;
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_MMU */
|
#endif /* CONFIG_MMU */
|
||||||
|
|
|
@ -109,6 +109,5 @@ static inline void arch_dma_prep_coherent(struct page *page, size_t size)
|
||||||
#endif /* CONFIG_ARCH_HAS_DMA_PREP_COHERENT */
|
#endif /* CONFIG_ARCH_HAS_DMA_PREP_COHERENT */
|
||||||
|
|
||||||
void *uncached_kernel_address(void *addr);
|
void *uncached_kernel_address(void *addr);
|
||||||
void *cached_kernel_address(void *addr);
|
|
||||||
|
|
||||||
#endif /* _LINUX_DMA_NONCOHERENT_H */
|
#endif /* _LINUX_DMA_NONCOHERENT_H */
|
||||||
|
|
Loading…
Reference in New Issue
Block a user