[U-Boot] [PATCH] Make nboot skip bad blocks
Ladislav Michl
ladis at linux-mips.org
Fri Mar 13 14:38:19 CET 2009
Hi,
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:
# nand bad
Device 0 bad blocks:
00780000
014a0000
02000000
02cc0000
04aa0000
# boot
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 ...
...
CHANGELOG
* nboot: skip bad block when loading image from NAND
Signed-off-by: Ladislav Michl <ladis at linux-mips.org>
diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 11f9096..f915fb6 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);
More information about the U-Boot
mailing list