]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - common/cmd_nand.c
stdio/device: rework function naming convention
[karo-tx-uboot.git] / common / cmd_nand.c
index e142d7666151718e98162b4c19179b5f6704a8bc..2f705212262aa9e5cd981f9b0c8f093acbd32f35 100644 (file)
@@ -29,7 +29,7 @@
 #include <jffs2/jffs2.h>
 #include <nand.h>
 
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
 
 /* parition handling routines */
 int mtdparts_init(void);
@@ -105,7 +105,7 @@ static int
 arg_off_size(int argc, char *argv[], nand_info_t *nand, ulong *off, size_t *size)
 {
        int idx = nand_curr_device;
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
        struct mtd_device *dev;
        struct part_info *part;
        u8 pnum;
@@ -153,7 +153,7 @@ arg_off_size(int argc, char *argv[], nand_info_t *nand, ulong *off, size_t *size
                *size = nand->size - *off;
        }
 
-#if  defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
 out:
 #endif
        printf("device %d ", idx);
@@ -390,7 +390,7 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
                        else
                                ret = nand_write_skip_bad(nand, off, &size,
                                                          (u_char *)addr);
-               } else if (s != NULL && !strcmp(s, ".oob")) {
+               } else if (!strcmp(s, ".oob")) {
                        /* out-of-band data */
                        mtd_oob_ops_t ops = {
                                .oobbuf = (u8 *)addr,
@@ -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
 );
 
@@ -598,7 +610,7 @@ int do_nandboot(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
        char *boot_device = NULL;
        int idx;
        ulong addr, offset = 0;
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
        struct mtd_device *dev;
        struct part_info *part;
        u8 pnum;
@@ -643,7 +655,7 @@ int do_nandboot(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
                offset = simple_strtoul(argv[3], NULL, 16);
                break;
        default:
-#if defined(CONFIG_CMD_JFFS2) && defined(CONFIG_CMD_MTDPARTS)
+#if defined(CONFIG_CMD_MTDPARTS)
 usage:
 #endif
                cmd_usage(cmdtp);
@@ -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