From e2066c1c20bd1344aaf82f4096f07e7bba33db13 Mon Sep 17 00:00:00 2001 From: Larry Bassel Date: Fri, 17 Jan 2014 10:33:08 -0800 Subject: [PATCH] ANDROID: GKI: arm64: provide dma cache routines with same API as 32 bit Add defines for dmac_*_range for compatibility with arm32 CRs-Fixed: 1053067 Change-Id: I6456c02bad73fb54a874dc9925d3d43d9b8be2f2 Signed-off-by: Larry Bassel (cherry picked from commit 0930bab0db67cc0d91e52e385e3e061871c6be05) Signed-off-by: Prasad Sodagudi (cherry picked from commit a313e54567627a1fd96cd267e2c6c358d14e468c) [salyzyn squashed in commit 4008eb493aa2f95094511125f136eb6ffbfa33b8] Signed-off-by: Mark Salyzyn Bug: 141888626 --- arch/arm64/include/asm/cacheflush.h | 9 +++++++++ arch/arm64/mm/cache.S | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/arch/arm64/include/asm/cacheflush.h b/arch/arm64/include/asm/cacheflush.h index 93adc5f9e7e7..2ac655f36a10 100644 --- a/arch/arm64/include/asm/cacheflush.h +++ b/arch/arm64/include/asm/cacheflush.h @@ -131,6 +131,15 @@ static inline void flush_cache_range(struct vm_area_struct *vma, extern void __dma_map_area(const void *, size_t, int); extern void __dma_unmap_area(const void *, size_t, int); extern void __dma_flush_area(const void *, size_t); +extern void __dma_inv_area(const void *start, size_t size); +extern void __dma_clean_area(const void *start, size_t size); + +#define dmac_flush_range(start, end) \ + __dma_flush_area(start, (void *)(end) - (void *)(start)) +#define dmac_inv_range(start, end) \ + __dma_inv_area(start, (void *)(end) - (void *)(start)) +#define dmac_clean_range(start, end) \ + __dma_clean_area(start, (void *)(end) - (void *)(start)) /* * Copy user data from/to a page which is mapped into a different diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S index 8719253168f2..000fb4465414 100644 --- a/arch/arm64/mm/cache.S +++ b/arch/arm64/mm/cache.S @@ -230,7 +230,7 @@ ENTRY(__inval_dcache_area) * - start - virtual start address of region * - size - size in question */ -__dma_inv_area: +ENTRY(__dma_inv_area) add x1, x1, x0 dcache_line_size x2, x3 sub x3, x2, #1 @@ -269,7 +269,7 @@ ENTRY(__clean_dcache_area_poc) * - start - virtual start address of region * - size - size in question */ -__dma_clean_area: +ENTRY(__dma_clean_area) dcache_by_line_op cvac, sy, x0, x1, x2, x3 ret ENDPIPROC(__clean_dcache_area_poc)