]> git.sur5r.net Git - u-boot/blobdiff - common/cmd_nand.c
arm, kirkwood: added KW_TWSI_BASE in kirkwood.h
[u-boot] / common / cmd_nand.c
index 1992531f44bd1a07e25639d5200ebdfbe7b34236..2f705212262aa9e5cd981f9b0c8f093acbd32f35 100644 (file)
@@ -414,18 +414,29 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
        }
 
        if (strcmp(cmd, "markbad") == 0) {
-               addr = (ulong)simple_strtoul(argv[2], NULL, 16);
+               argc -= 2;
+               argv += 2;
 
-               int ret = nand->block_markbad(nand, addr);
-               if (ret == 0) {
-                       printf("block 0x%08lx successfully marked as bad\n",
-                              (ulong) addr);
-                       return 0;
-               } else {
-                       printf("block 0x%08lx NOT marked as bad! ERROR %d\n",
-                              (ulong) addr, ret);
+               if (argc <= 0)
+                       goto usage;
+
+               while (argc > 0) {
+                       addr = simple_strtoul(*argv, NULL, 16);
+
+                       if (nand->block_markbad(nand, addr)) {
+                               printf("block 0x%08lx NOT marked "
+                                       "as bad! ERROR %d\n",
+                                       addr, ret);
+                               ret = 1;
+                       } else {
+                               printf("block 0x%08lx successfully "
+                                       "marked as bad\n",
+                                       addr);
+                       }
+                       --argc;
+                       ++argv;
                }
-               return 1;
+               return ret;
        }
 
        if (strcmp(cmd, "biterr") == 0) {
@@ -476,25 +487,26 @@ usage:
        return 1;
 }
 
-U_BOOT_CMD(nand, 5, 1, do_nand,
-          "NAND sub-system",
-          "info - show available NAND devices\n"
-          "nand device [dev] - show or set current device\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', 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"
-          "nand dump[.oob] off - dump page\n"
-          "nand scrub - really clean NAND erasing bad blocks (UNSAFE)\n"
-          "nand markbad off - mark bad block at offset (UNSAFE)\n"
-          "nand biterr off - make a bit error at offset (UNSAFE)\n"
+U_BOOT_CMD(nand, CONFIG_SYS_MAXARGS, 1, do_nand,
+       "NAND sub-system",
+       "info - show available NAND devices\n"
+       "nand device [dev] - show or set current device\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', 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"
+       "nand dump[.oob] off - dump page\n"
+       "nand scrub - really clean NAND erasing bad blocks (UNSAFE)\n"
+       "nand markbad off [...] - mark bad block(s) at offset (UNSAFE)\n"
+       "nand biterr off - make a bit error at offset (UNSAFE)"
 #ifdef CONFIG_CMD_NAND_LOCK_UNLOCK
-          "nand lock [tight] [status]\n"
-          "    bring nand to lock state or display locked pages\n"
-          "nand unlock [offset] [size] - unlock section\n"
+       "\n"
+       "nand lock [tight] [status]\n"
+       "    bring nand to lock state or display locked pages\n"
+       "nand unlock [offset] [size] - unlock section"
 #endif
 );
 
@@ -673,8 +685,8 @@ usage:
 
 U_BOOT_CMD(nboot, 4, 1, do_nandboot,
        "boot from NAND device",
-       "[partition] | [[[loadAddr] dev] offset]\n");
-
+       "[partition] | [[[loadAddr] dev] offset]"
+);
 #endif
 
 #else /* CONFIG_NAND_LEGACY */
@@ -941,7 +953,7 @@ U_BOOT_CMD(
        "    offset `off' (entire device if not specified)\n"
        "nand bad - show bad blocks\n"
        "nand read.oob addr off size - read out-of-band data\n"
-       "nand write.oob addr off size - read out-of-band data\n"
+       "nand write.oob addr off size - read out-of-band data"
 );
 
 int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
@@ -1081,7 +1093,7 @@ int do_nandboot (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 U_BOOT_CMD(
        nboot,  4,      1,      do_nandboot,
        "boot from NAND device",
-       "loadAddr dev\n"
+       "loadAddr dev"
 );
 
 #endif