Skip to contentSkip to conversation

NAND update 2

PATCH New William Juul 3 participants 4 messages Dec 21, 2007 – Jan 4, 2008

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 NAND update 2

Make nand dump and nand dump.oob work again.

This is a small update to the patch series I sent earlier and must be applied on top of those patches.

----

Have anyone tried/looked at the patch series?

On our git server http://git.tandberg.com/tandberg/u-boot.git, I have updated the branch mtd-update to be based on v1.3.1 and I have also made a mtd-update-1.3.1 branch. These two branches now contain the patch included in this email.

I have also put an updated patch on our git http server:
http://git.tandberg.com/tandberg/patches/mtd-update.patch
This patch is a diff between my mtd-update-1.3.1 branch and v1.3.1 tag.

Best regards
William

common/cmd_nand.c +27 -19
index bb1accd..a3ea1db 100644
@@ -40,37 +40,44 @@ int find_dev_and_part(const char *id, struct mtd_device **dev,
 
 extern nand_info_t nand_info[];       /* info for NAND chips */
 
-static int nand_dump_oob(nand_info_t *nand, ulong off)
-{
-	return 0;
-}
-
-static int nand_dump(nand_info_t *nand, ulong off)
+static int nand_dump(nand_info_t *nand, ulong off, int only_oob)
 {
 	int i;
-	u_char *buf, *p;
+	u_char *datbuf, *oobbuf, *p;
 
-	buf = malloc(nand->writesize + nand->oobsize);
-	if (!buf) {
+	datbuf = malloc(nand->writesize + nand->oobsize);
+	oobbuf = malloc(nand->oobsize);
+	if (!datbuf || !oobbuf) {
 		puts("No memory for page buffer\n");
 		return 1;
 	}
 	off &= ~(nand->writesize - 1);
 	size_t dummy;
 	loff_t addr = (loff_t) off;
-	i = nand->read(nand, addr, nand->writesize, &dummy, buf);
+	struct mtd_oob_ops ops;
+	memset(&ops, 0, sizeof(ops));
+	ops.datbuf = datbuf;
+	ops.oobbuf = oobbuf; /* must exist, but oob data will be appended to ops.datbuf */
+	ops.len = nand->writesize;
+	ops.ooblen = nand->oobsize;
+	ops.mode = MTD_OOB_RAW;
+	i = nand->read_oob(nand, addr, &ops);
 	if (i < 0) {
 		printf("Error (%d) reading page %08x\n", i, off);
-		free(buf);
+		free(datbuf);
+		free(oobbuf);
 		return 1;
 	}
 	printf("Page %08x dump:\n", off);
-	i = nand->writesize >> 4; p = buf;
+	i = nand->writesize >> 4;
+	p = datbuf;
 	while (i--) {
-		printf( "\t%02x %02x %02x %02x %02x %02x %02x %02x"
-			"  %02x %02x %02x %02x %02x %02x %02x %02x\n",
-			p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
-			p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]);
+		if (!only_oob) {
+			printf( "\t%02x %02x %02x %02x %02x %02x %02x %02x"
+					"  %02x %02x %02x %02x %02x %02x %02x %02x\n",
+					p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7],
+					p[8], p[9], p[10], p[11], p[12], p[13], p[14], p[15]);
+		}
 		p += 16;
 	}
 	puts("OOB:\n");
@@ -80,7 +87,8 @@ static int nand_dump(nand_info_t *nand, ulong off)
 			p[0], p[1], p[2], p[3], p[4], p[5], p[6], p[7]);
 		p += 8;
 	}
-	free(buf);
+	free(datbuf);
+	free(oobbuf);
 
 	return 0;
 }
@@ -304,9 +312,9 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
 		off = (int)simple_strtoul(argv[2], NULL, 16);
 
 		if (s != NULL && strcmp(s, ".oob") == 0)
-			ret = nand_dump_oob(nand, off);
+			ret = nand_dump(nand, off, 1);
 		else
-			ret = nand_dump(nand, off);
+			ret = nand_dump(nand, off, 0);
 
 		return ret == 0 ? 1 : 0;
 
#1 lore raw

PATCH 1/1 NAND update 2

Hi William,

Quoted 7 lines · William Juul

Make nand dump and nand dump.oob work again.

This is a small update to the patch series I sent earlier and must be applied on top of those patches.

Quoted 8 lines

----

Have anyone tried/looked at the patch series?

On our git server http://git.tandberg.com/tandberg/u-boot.git, I have updated the branch mtd-update to be based on v1.3.1 and I have also made a mtd-update-1.3.1 branch. These two branches now contain the patch included in this email.

I'm trying to integrate your patches right now. Looks quite good so far but I'm facing some problems on a ppc4xx board with a large page NAND chip. Small page devices are fine.

Did you ever test this stuff on large page devices? Which ones?

BTW: What is the platform you "normally" test on (ARM, MIPS, PPC...)?

Thanks.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

#2 lore raw

PATCH 1/1 NAND update 2

Quoted 19 lines · Stefan Roese

Hi William,

Quoted 7 lines · William Juul

Make nand dump and nand dump.oob work again.

This is a small update to the patch series I sent earlier and must be applied on top of those patches.

Quoted 8 lines

----

Have anyone tried/looked at the patch series?

On our git server http://git.tandberg.com/tandberg/u-boot.git, I have updated the branch mtd-update to be based on v1.3.1 and I have also made a mtd-update-1.3.1 branch. These two branches now contain the patch included in this email.

Quoted 5 lines

I'm trying to integrate your patches right now. Looks quite good so far but I'm facing some problems on a ppc4xx board with a large page NAND chip. Small page devices are fine.

Did you ever test this stuff on large page devices? Which ones?

We did run this on large page devices with 4KB page size (total size of 1/2 GB). Unfortunately the devices are/were under NDA as they are/were not officially released yet.
Stig can you verify if any/both of the flashes can be named here?

Quoted 2 lines

BTW: What is the platform you "normally" test on (ARM, MIPS, PPC...)?

We had two custom boards, one ARM based (926) and one PPC83xx.

I will not have access to the build environment and boards the next couple of months, but Stig Olsen is more than capable of answering questions (if he has the time :-)

Best regards
William

Quoted 22 lines

Thanks.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
U-Boot-Users mailing list
U-Boot-Users at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/u-boot-users

#3 lore raw

PATCH 1/1 NAND update 2

Quoted 10 lines · William Juul
Quoted 5 lines

I'm trying to integrate your patches right now. Looks quite good so far but I'm facing some problems on a ppc4xx board with a large page NAND chip. Small page devices are fine.

Did you ever test this stuff on large page devices? Which ones?

We did run this on large page devices with 4KB page size (total size of 1/2 GB). Unfortunately the devices are/were under NDA as they are/were not officially released yet.
Stig can you verify if any/both of the flashes can be named here?

Not needed anymore. I found my problem. A timeout was calculated incorrectly. I need to change nand_base.c at one place to make it work on my platform with my NAND chips. I'll post a till beginning of next week, so that you (or Stig) can test it on your platform too.

Quoted 7 lines
Quoted 1 line

BTW: What is the platform you "normally" test on (ARM, MIPS, PPC...)?

We had two custom boards, one ARM based (926) and one PPC83xx.

I will not have access to the build environment and boards the next couple of months, but Stig Olsen is more than capable of answering questions (if he has the time :-)

Thanks.

Best regards,
Stefan

=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================