[U-Boot-Users] [PATCH] 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.
Signed-off-by: William Juul william.juul@tandberg.com Signed-off-by: Stig Olsen stig.olsen@tandberg.com ----
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
diff --git a/common/cmd_nand.c b/common/cmd_nand.c index bb1accd..a3ea1db 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -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;

Hi William,
On Friday 21 December 2007, William Juul wrote:
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.
Signed-off-by: William Juul william.juul@tandberg.com Signed-off-by: Stig Olsen stig.olsen@tandberg.com
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@denx.de =====================================================================

On Jan 4, 2008 3:21 PM, Stefan Roese sr@denx.de wrote:
Hi William,
On Friday 21 December 2007, William Juul wrote:
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.
Signed-off-by: William Juul william.juul@tandberg.com Signed-off-by: Stig Olsen stig.olsen@tandberg.com
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?
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?
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
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@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@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/u-boot-users

On Friday 04 January 2008, William Juul wrote:
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.
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@denx.de =====================================================================
participants (3)
-
Stefan Roese
-
William Juul
-
William Juul