From fdaf636b5f0c7ff5280438f524a07c29a2f7eea6 Mon Sep 17 00:00:00 2001
From: inmarket <andrewh@inmarket.com.au>
Date: Mon, 2 Oct 2017 13:33:38 +1000
Subject: Fix: ChibiOS V2 doesn't support dma cache handling at all

---
 src/gfile/gfile_fatfs_diskio_chibios.c   | 11 ++++++++---
 src/gfile/gfile_petitfs_diskio_chibios.c | 11 ++++++++---
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/src/gfile/gfile_fatfs_diskio_chibios.c b/src/gfile/gfile_fatfs_diskio_chibios.c
index 1f4638d5..13c7403d 100644
--- a/src/gfile/gfile_fatfs_diskio_chibios.c
+++ b/src/gfile/gfile_fatfs_diskio_chibios.c
@@ -40,9 +40,14 @@
 //			specified data structure is aligned on a cache line boundary - not a good assumption.
 //			Solution: We increase the size provided to ChibiOS so that it does it properly.
 //						This assumes of course that we know the size of the cpu cache line.
-#define CPU_CACHE_LINE_SIZE			32
-#define CACHE_FLUSH(buf, sz)		dmaBufferFlush((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
-#define CACHE_INVALIDATE(buf, sz)	dmaBufferInvalidate((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
+#if CH_KERNEL_MAJOR > 2
+	#define CPU_CACHE_LINE_SIZE			32
+	#define CACHE_FLUSH(buf, sz)		dmaBufferFlush((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
+	#define CACHE_INVALIDATE(buf, sz)	dmaBufferInvalidate((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
+#else
+	#define CACHE_FLUSH(buf, sz)
+	#define CACHE_INVALIDATE(buf, sz)
+#endif
 
 /* Initialize a Drive                                                    */
 DSTATUS disk_initialize (
diff --git a/src/gfile/gfile_petitfs_diskio_chibios.c b/src/gfile/gfile_petitfs_diskio_chibios.c
index 61917ee5..bbaf0e4b 100644
--- a/src/gfile/gfile_petitfs_diskio_chibios.c
+++ b/src/gfile/gfile_petitfs_diskio_chibios.c
@@ -35,9 +35,14 @@
 //			specified data structure is aligned on a cache line boundary - not a good assumption.
 //			Solution: We increase the size provided to ChibiOS so that it does it properly.
 //						This assumes of course that we know the size of the cpu cache line.
-#define CPU_CACHE_LINE_SIZE			32
-#define CACHE_FLUSH(buf, sz)		dmaBufferFlush((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
-#define CACHE_INVALIDATE(buf, sz)	dmaBufferInvalidate((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
+#if CH_KERNEL_MAJOR > 2
+	#define CPU_CACHE_LINE_SIZE			32
+	#define CACHE_FLUSH(buf, sz)		dmaBufferFlush((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
+	#define CACHE_INVALIDATE(buf, sz)	dmaBufferInvalidate((buf), (sz)+(CPU_CACHE_LINE_SIZE-1))
+#else
+	#define CACHE_FLUSH(buf, sz)
+	#define CACHE_INVALIDATE(buf, sz)
+#endif
 
 /*-----------------------------------------------------------------------*/
 /* Initialize a Drive                                                    */
-- 
cgit v1.2.3