From 0987505540918b2464b73069af3a5b766dbd3ceb Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Fri, 13 Mar 2009 14:38:19 +0100 Subject: [PATCH 1/2] NAND: Make nboot skip bad blocks nboot command currently does not skip bad blocks and gives read error when loading image stored over bad block. With patch applied, nboot works as expected: Device 0 bad blocks: 00780000 014a0000 02000000 02cc0000 04aa0000 Loading from NAND 128MiB 3,3V 8-bit, offset 0x2c00000 Image Name: Linux-2.6.22-omap1 Created: 2008-11-20 23:44:32 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 1052520 Bytes = 1 MB Load Address: 10008000 Entry Point: 10008000 Skipping bad block 0x02cc0000 Automatic boot of image at addr 0x10400000 ... ... Signed-off-by: Ladislav Michl Signed-off-by: Scott Wood --- common/cmd_nand.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/common/cmd_nand.c b/common/cmd_nand.c index 11f9096624..f915fb65c0 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -511,7 +511,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand, printf("\nLoading from %s, offset 0x%lx\n", nand->name, offset); cnt = nand->writesize; - r = nand_read(nand, offset, &cnt, (u_char *) addr); + r = nand_read_skip_bad(nand, offset, &cnt, (u_char *) addr); if (r) { puts("** Read error\n"); show_boot_progress (-56); @@ -543,8 +543,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand, } show_boot_progress (57); - /* FIXME: skip bad blocks */ - r = nand_read(nand, offset, &cnt, (u_char *) addr); + r = nand_read_skip_bad(nand, offset, &cnt, (u_char *) addr); if (r) { puts("** Read error\n"); show_boot_progress (-58); From 65d8bc94d8214812ccdf3372d3fef845cf4ec2e5 Mon Sep 17 00:00:00 2001 From: Scott Wood Date: Tue, 17 Mar 2009 12:06:04 -0500 Subject: [PATCH 2/2] NAND: Have nboot accept .e and .i as legacy no-ops. This was intended to happen before, but a trivial bug prevented it. Signed-off-by: Scott Wood --- common/cmd_nand.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/cmd_nand.c b/common/cmd_nand.c index f915fb65c0..e6623caf17 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -502,7 +502,7 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand, s = strchr(cmd, '.'); if (s != NULL && - (strcmp(s, ".jffs2") && !strcmp(s, ".e") && !strcmp(s, ".i"))) { + (strcmp(s, ".jffs2") && strcmp(s, ".e") && strcmp(s, ".i"))) { printf("Unknown nand load suffix '%s'\n", s); show_boot_progress(-53); return 1;