From 0cb162a76b16d58250a33e817af6a763e89a770a Mon Sep 17 00:00:00 2001 From: Solomon Peachy Date: Fri, 28 Aug 2020 21:45:58 -0400 Subject: mips: Heavily rework DMA & caching code Based on code originally written by Amaury Pouly (g#1789, g#1791, g#1527) but rebased and heavily updated. Change-Id: Ic794abb5e8d89feb4b88fc3abe854270fb28db70 --- firmware/target/mips/ingenic_jz47xx/dma_acc-jz4740.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'firmware/target/mips/ingenic_jz47xx/dma_acc-jz4740.c') diff --git a/firmware/target/mips/ingenic_jz47xx/dma_acc-jz4740.c b/firmware/target/mips/ingenic_jz47xx/dma_acc-jz4740.c index 6f317f7b3f..f4f363b25b 100644 --- a/firmware/target/mips/ingenic_jz47xx/dma_acc-jz4740.c +++ b/firmware/target/mips/ingenic_jz47xx/dma_acc-jz4740.c @@ -32,7 +32,7 @@ void memset(void *target, unsigned char c, size_t len) else { if(((unsigned int)target < 0xa0000000) && len) - dma_cache_wback_inv((unsigned long)target, len); + discard_dcache_range(target, len); dp = (unsigned char *)((unsigned int)(&d) | 0xa0000000); *(dp + 0) = c; @@ -52,7 +52,6 @@ void memset(void *target, unsigned char c, size_t len) dp = (unsigned char *)((unsigned int)target + (len & (32 - 1))); for(d = 0;d < (len % 32); d++) *dp++ = c; - } } } @@ -68,7 +67,7 @@ void memset16(void *target, unsigned short c, size_t len) else { if(((unsigned int)target < 0xa0000000) && len) - dma_cache_wback_inv((unsigned long)target, len); + discard_dcache_range(target, len); d = c; REG_DMAC_DSAR(ch) = PHYSADDR((unsigned long)&d); @@ -97,10 +96,10 @@ void memcpy(void *target, const void *source, size_t len) _memcpy(target, source, len); if(((unsigned int)source < 0xa0000000) && len) - dma_cache_wback_inv((unsigned long)source, len); + commit_dcache_range(source, len); if(((unsigned int)target < 0xa0000000) && len) - dma_cache_wback_inv((unsigned long)target, len); + discard_dcache_range(target, len); REG_DMAC_DSAR(ch) = PHYSADDR((unsigned long)source); REG_DMAC_DTAR(ch) = PHYSADDR((unsigned long)target); -- cgit v1.2.3