瀏覽代碼

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 <ladis@linux-mips.org>
Signed-off-by: Scott Wood <scottwood@freescale.com>
Ladislav Michl 16 年之前
父節點
當前提交
0987505540
共有 1 個文件被更改,包括 2 次插入3 次删除
  1. 2 3
      common/cmd_nand.c

+ 2 - 3
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);
 	printf("\nLoading from %s, offset 0x%lx\n", nand->name, offset);
 
 
 	cnt = nand->writesize;
 	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) {
 	if (r) {
 		puts("** Read error\n");
 		puts("** Read error\n");
 		show_boot_progress (-56);
 		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);
 	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) {
 	if (r) {
 		puts("** Read error\n");
 		puts("** Read error\n");
 		show_boot_progress (-58);
 		show_boot_progress (-58);