summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
m---------lib/mp30
-rw-r--r--lib/oofatfs/ff.c6
-rw-r--r--lib/oofatfs/ffconf.h6
3 files changed, 11 insertions, 1 deletions
diff --git a/lib/mp3 b/lib/mp3
new file mode 160000
+Subproject 2a3cc7873b5c642d4bb60043dc14d2555e3377a
diff --git a/lib/oofatfs/ff.c b/lib/oofatfs/ff.c
index b0984756b..71bd19702 100644
--- a/lib/oofatfs/ff.c
+++ b/lib/oofatfs/ff.c
@@ -3382,7 +3382,11 @@ FRESULT f_read (
if (!sect) ABORT(fs, FR_INT_ERR);
sect += csect;
cc = btr / SS(fs); /* When remaining bytes >= sector size, */
- if (cc) { /* Read maximum contiguous sectors directly */
+ if (cc
+#if _FS_DISK_READ_ALIGNED
+ && (((int)rbuff & 3) == 0)
+#endif
+ ) {/* Read maximum contiguous sectors directly */
if (csect + cc > fs->csize) { /* Clip at cluster boundary */
cc = fs->csize - csect;
}
diff --git a/lib/oofatfs/ffconf.h b/lib/oofatfs/ffconf.h
index 214311b4c..a3795fa3f 100644
--- a/lib/oofatfs/ffconf.h
+++ b/lib/oofatfs/ffconf.h
@@ -343,6 +343,12 @@
/ SemaphoreHandle_t and etc.. A header file for O/S definitions needs to be
/ included somewhere in the scope of ff.h. */
+// Set to nonzero if buffers passed to disk_read have a word alignment
+// restriction
+#ifndef _FS_DISK_READ_ALIGNED
+#define _FS_DISK_READ_ALIGNED 0
+#endif
+
/* #include <windows.h> // O/S definitions */