diff options
author | Scott Wood <scottwood@freescale.com> | 2008-06-12 13:13:23 -0500 |
---|---|---|
committer | Scott Wood <scottwood@freescale.com> | 2008-08-12 11:31:27 -0500 |
commit | 984e03cdf1431bb593aeaa1b74c445d616f955d3 (patch) | |
tree | 9ca147809a8266bd016050a0789d4b19913d7e40 /common | |
parent | e1c3dbada349992875934575c97b328ab2cb33ca (diff) |
NAND: Always skip blocks on read/write/boot.
Use of the non-skipping versions was almost always (if not always)
an error, and no valid use case has been identified.
Signed-off-by: Scott Wood <scottwood@freescale.com>
Diffstat (limited to 'common')
-rw-r--r-- | common/cmd_nand.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/common/cmd_nand.c b/common/cmd_nand.c index 710ba8f9460..2c421e948ed 100644 --- a/common/cmd_nand.c +++ b/common/cmd_nand.c @@ -332,8 +332,8 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) return 1; s = strchr(cmd, '.'); - if (s != NULL && - (!strcmp(s, ".jffs2") || !strcmp(s, ".e") || !strcmp(s, ".i"))) { + if (!s || !strcmp(s, ".jffs2") || + !strcmp(s, ".e") || !strcmp(s, ".i")) { if (read) { /* read */ nand_read_options_t opts; @@ -372,10 +372,8 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) else ret = nand->write_oob(nand, off, &ops); } else { - if (read) - ret = nand_read(nand, off, &size, (u_char *)addr); - else - ret = nand_write(nand, off, &size, (u_char *)addr); + printf("Unknown nand command suffix '%s'.\n", s); + return 1; } printf(" %d bytes %s: %s\n", size, @@ -492,10 +490,10 @@ U_BOOT_CMD(nand, 5, 1, do_nand, "nand - NAND sub-system\n", "info - show available NAND devices\n" "nand device [dev] - show or set current device\n" - "nand read[.jffs2] - addr off|partition size\n" - "nand write[.jffs2] - addr off|partition size\n" + "nand read - addr off|partition size\n" + "nand write - addr off|partition size\n" " read/write 'size' bytes starting at offset 'off'\n" - " to/from memory address 'addr'\n" + " to/from memory address 'addr', skipping bad blocks.\n" "nand erase [clean] [off size] - erase 'size' bytes from\n" " offset 'off' (entire device if not specified)\n" "nand bad - show bad blocks\n" @@ -514,15 +512,17 @@ static int nand_load_image(cmd_tbl_t *cmdtp, nand_info_t *nand, char *ep, *s; size_t cnt; image_header_t *hdr; - int jffs2 = 0; #if defined(CONFIG_FIT) const void *fit_hdr = NULL; #endif s = strchr(cmd, '.'); if (s != NULL && - (!strcmp(s, ".jffs2") || !strcmp(s, ".e") || !strcmp(s, ".i"))) - jffs2 = 1; + (strcmp(s, ".jffs2") && !strcmp(s, ".e") && !strcmp(s, ".i"))) { + printf("Unknown nand load suffix '%s'\n", s); + show_boot_progress(-53); + return 1; + } printf("\nLoading from %s, offset 0x%lx\n", nand->name, offset); @@ -559,6 +559,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); if (r) { puts("** Read error\n"); @@ -680,7 +681,7 @@ usage: U_BOOT_CMD(nboot, 4, 1, do_nandboot, "nboot - boot from NAND device\n", - "[.jffs2] [partition] | [[[loadAddr] dev] offset]\n"); + "[partition] | [[[loadAddr] dev] offset]\n"); #endif |