From 80f0c0f58f6a39f893101d14a79169504e3c93fd Mon Sep 17 00:00:00 2001
From: Wolfgang Denk <wd@fifi.denx.de>
Date: Mon, 14 Aug 2006 22:05:26 +0200
Subject: [PATCH] Fix fatload command on FAT32 formatted partitions. Patch by
 Joachim Jaeger, 18 Nov 2005

---
 CHANGELOG     | 3 +++
 include/fat.h | 8 ++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 2247a24af4..6c8043ff7c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes since U-Boot 1.1.4:
 ======================================================================
 
+* Fix fatload command on FAT32 formatted partitions.
+  Patch by Joachim Jaeger, 18 Nov 2005
+
 * Fix drivers/dm9000.c when configured in 32 bit mode.
   Patch by Eric Benard, 17 Nov 2005
 
diff --git a/include/fat.h b/include/fat.h
index 0645458f17..92638d535e 100644
--- a/include/fat.h
+++ b/include/fat.h
@@ -175,15 +175,19 @@ typedef struct dir_slot {
 	__u8    name11_12[4];	/* Last 2 characters in name */
 } dir_slot;
 
-/* Private filesystem parameters */
+/* Private filesystem parameters
+ *
+ * Note: FAT buffer has to be 32 bit aligned
+ * (see FAT32 accesses)
+ */
 typedef struct {
+	__u8	fatbuf[FATBUFSIZE]; /* Current FAT buffer */
 	int	fatsize;	/* Size of FAT in bits */
 	__u16	fatlength;	/* Length of FAT in sectors */
 	__u16	fat_sect;	/* Starting sector of the FAT */
 	__u16	rootdir_sect;	/* Start sector of root directory */
 	__u16	clust_size;	/* Size of clusters in sectors */
 	short	data_begin;	/* The sector of the first cluster, can be negative */
-	__u8	fatbuf[FATBUFSIZE]; /* Current FAT buffer */
 	int	fatbufnum;	/* Used by get_fatent, init to -1 */
 } fsdata;
 
-- 
2.39.5