This allows the scrub command to scrub without asking the user if he really
wants to scrub the area. Useful in scripts.

Signed-off-by: Marek Vasut <marek.va...@gmail.com>
Cc: Scott Wood <scottw...@freescale.com>
Cc: Stefano Babic <sba...@denx.de>
Cc: Wolfgang Denk <w...@denx.de>
Cc: Detlev Zundel <d...@denx.de>
---
 common/cmd_nand.c |   34 +++++++++++++++++++---------------
 1 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 5b7e83d..c2a5623 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -500,12 +500,23 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * 
const argv[])
                nand_erase_options_t opts;
                /* "clean" at index 2 means request to write cleanmarker */
                int clean = argc > 2 && !strcmp("clean", argv[2]);
-               int o = clean ? 3 : 2;
+               int scrub_yes = argc > 2 && !strcmp("-y", argv[2]);
+               int o = (clean || scrub_yes) ? 3 : 2;
                int scrub = !strncmp(cmd, "scrub", 5);
                int part = 0;
                int chip = 0;
                int spread = 0;
                int args = 2;
+               const char *scrub_warn =
+                       "Warning: "
+                       "scrub option will erase all factory set bad blocks!\n"
+                       "         "
+                       "There is no reliable way to recover them.\n"
+                       "         "
+                       "Use this command only for testing purposes if you\n"
+                       "         "
+                       "are sure of what you are doing!\n"
+                       "\nReally scrub this NAND flash? <y/N>\n";
 
                if (cmd[5] != 0) {
                        if (!strcmp(&cmd[5], ".spread")) {
@@ -544,19 +555,12 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * 
const argv[])
                opts.spread = spread;
 
                if (scrub) {
-                       puts("Warning: "
-                            "scrub option will erase all factory set "
-                            "bad blocks!\n"
-                            "         "
-                            "There is no reliable way to recover them.\n"
-                            "         "
-                            "Use this command only for testing purposes "
-                            "if you\n"
-                            "         "
-                            "are sure of what you are doing!\n"
-                            "\nReally scrub this NAND flash? <y/N>\n");
-
-                       if (getc() == 'y') {
+                       if (!scrub_yes)
+                               puts(scrub_warn);
+
+                       if (scrub_yes)
+                               opts.scrub = 1;
+                       else if (getc() == 'y') {
                                puts("y");
                                if (getc() == '\r')
                                        opts.scrub = 1;
@@ -768,7 +772,7 @@ U_BOOT_CMD(
        "nand erase.chip [clean] - erase entire chip'\n"
        "nand bad - show bad blocks\n"
        "nand dump[.oob] off - dump page\n"
-       "nand scrub off size | scrub.part partition | scrub.chip\n"
+       "nand scrub [-y] off size | scrub.part partition | scrub.chip\n"
        "    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)"
-- 
1.7.5.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to