Browse Source

To get the best performance, use the new sifive_ccache_flush_entire function when data size is larger than 512KB.

Signed-off-by: Windsome Zeng <windsome.zeng@starfivetech.com>
Windsome Zeng 3 months ago
parent
commit
ee4bb83b67

+ 5 - 1
codaj12/jdi/linux/driver/jpu.c

@@ -42,6 +42,7 @@
 #include "jpu.h"
 
 extern void sifive_ccache_flush_range(phys_addr_t start, size_t len);
+extern void sifive_ccache_flush_entire(void);
 
 //#define ENABLE_DEBUG_MSG
 #ifdef ENABLE_DEBUG_MSG
@@ -205,7 +206,10 @@ static void starfive_flush_dcache(phys_addr_t start, size_t len)
 #ifdef ARCH_HAS_SYNC_DMA_FOR_DEVICE
 	dma_sync_single_for_device(jpu_dev, start, len, DMA_FROM_DEVICE);
 #else
-	sifive_ccache_flush_range(start, len);
+	if (len >= 0x80000)
+                sifive_ccache_flush_entire();
+        else
+		sifive_ccache_flush_range(start, len);
 #endif
 }
 

+ 5 - 1
wave420l/code/vdi/linux/driver/venc.c

@@ -40,6 +40,7 @@
 #include "vpu.h"
 
 extern void sifive_ccache_flush_range(phys_addr_t start, size_t len);
+extern void sifive_ccache_flush_entire(void);
 
 #ifndef  CONFIG_PM
 #define CONFIG_PM
@@ -356,7 +357,10 @@ static void starfive_flush_dcache(phys_addr_t start, size_t len)
 #ifdef ARCH_HAS_SYNC_DMA_FOR_DEVICE
 	dma_sync_single_for_device(vpu_dev, start, len, DMA_FROM_DEVICE);
 #else
-	sifive_ccache_flush_range(start, len);
+	if (len >= 0x80000)
+		sifive_ccache_flush_entire();
+	else
+		sifive_ccache_flush_range(start, len);
 #endif
 }
 

+ 5 - 1
wave511/code/vdi/linux/driver/vdec.c

@@ -55,6 +55,7 @@
 #include "vpu.h"
 
 extern void sifive_ccache_flush_range(phys_addr_t start, size_t len);
+extern void sifive_ccache_flush_entire(void);
 
 //#define ENABLE_DEBUG_MSG
 #ifdef ENABLE_DEBUG_MSG
@@ -477,7 +478,10 @@ static void starfive_flush_dcache(phys_addr_t start, size_t len)
 #ifdef ARCH_HAS_SYNC_DMA_FOR_DEVICE
 	dma_sync_single_for_device(vpu_dev, start, len, DMA_FROM_DEVICE);
 #else
-	sifive_ccache_flush_range(start, len);
+	if (len >= 0x80000)
+		sifive_ccache_flush_entire();
+	else
+		sifive_ccache_flush_range(start, len);
 #endif
 }