[U-Boot] [PATCH 6/7 V2] IXP: Fix NAND build warning on PDNB3 and SCPU

Marek Vasut marex at denx.de
Tue Mar 6 12:05:27 CET 2012


nand.c: In function ‘pdnb3_nand_read_buf’:
nand.c:107:4: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
nand.c: In function ‘pdnb3_nand_dev_ready’:
nand.c:124:18: warning: variable ‘val’ set but not used [-Wunused-but-set-variable]

Remove the 4-byte-at-time read mode altogether, the most is bogus and will
likely cause unaligned accesses.

Signed-off-by: Marek Vasut <marex at denx.de>
Cc: Bryan Hundven <bryanhundven at gmail.com>
Cc: Michael Schwingen <rincewind at discworld.dascon.de>
---
 board/prodrive/pdnb3/nand.c |   16 +++-------------
 1 files changed, 3 insertions(+), 13 deletions(-)

V2: Drop the 4 byte access altogether, fix readb() call

diff --git a/board/prodrive/pdnb3/nand.c b/board/prodrive/pdnb3/nand.c
index 2efe027..6d1f203 100644
--- a/board/prodrive/pdnb3/nand.c
+++ b/board/prodrive/pdnb3/nand.c
@@ -96,16 +96,8 @@ static void pdnb3_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
 {
 	int i;
 
-	if (len % 4) {
-		for (i = 0; i < len; i++)
-			buf[i] = readb(&(pdnb3_ndfc->data));
-	} else {
-		ulong *ptr = (ulong *)buf;
-		int count = len >> 2;
-
-		for (i = 0; i < count; i++)
-			*ptr++ = readl(&(pdnb3_ndfc->data));
-	}
+	for (i = 0; i < len; i++)
+		buf[i] = readb(&(pdnb3_ndfc->data));
 }
 
 static int pdnb3_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
@@ -121,12 +113,10 @@ static int pdnb3_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int le
 
 static int pdnb3_nand_dev_ready(struct mtd_info *mtd)
 {
-	volatile u_char val;
-
 	/*
 	 * Blocking read to wait for NAND to be ready
 	 */
-	val = readb(&(pdnb3_ndfc->wait));
+	readb(&(pdnb3_ndfc->wait));
 
 	/*
 	 * Return always true
-- 
1.7.9



More information about the U-Boot mailing list