* [U-Boot] [PATCH 1/2] NAND: Make page, erase, oob size available via cmd_nand
@ 2011-08-27 3:09 Marek Vasut
2011-08-27 3:09 ` [U-Boot] [PATCH 2/2] NAND: Add scrub.quiet command option Marek Vasut
0 siblings, 1 reply; 2+ messages in thread
From: Marek Vasut @ 2011-08-27 3:09 UTC (permalink / raw)
To: u-boot
The "nand info" and "nand device" now set shell/environment variables:
nand_writesize ... nand page size
nand_oobsize ..... nand oob area size
nand_erasesize ... nand erase block size
The shell variables are only set if HUSH is enabled.
Also, the "nand info" command now displays this info.
Signed-off-by: Marek Vasut <marek.vasut@gmail.com>
---
common/cmd_nand.c | 42 +++++++++++++++++++++++++++++++++++++++---
1 files changed, 39 insertions(+), 3 deletions(-)
diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index a1c8dfd..5b7e83d 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -27,6 +27,9 @@
#include <asm/byteorder.h>
#include <jffs2/jffs2.h>
#include <nand.h>
+#ifdef CONFIG_SYS_HUSH_PARSER
+#include <hush.h>
+#endif
#if defined(CONFIG_CMD_MTDPARTS)
@@ -362,15 +365,48 @@ usage:
#endif
-static void nand_print_info(int idx)
+static void nand_print_and_set_info(int idx)
{
nand_info_t *nand = &nand_info[idx];
struct nand_chip *chip = nand->priv;
+ const int bufsz = 32;
+ char buf[bufsz];
+
printf("Device %d: ", idx);
if (chip->numchips > 1)
printf("%dx ", chip->numchips);
printf("%s, sector size %u KiB\n",
nand->name, nand->erasesize >> 10);
+ printf(" Page size %8d b\n", nand->writesize);
+ printf(" OOB size %8d b\n", nand->oobsize);
+ printf(" Erase size %8d b\n", nand->erasesize);
+
+ /* Set geometry info */
+#ifdef CONFIG_SYS_HUSH_PARSER
+ memset(buf, 0, bufsz);
+ sprintf(buf, "nand_writesize=%x", nand->writesize);
+ set_local_var(buf, 0);
+
+ memset(buf, 0, bufsz);
+ sprintf(buf, "nand_oobsize=%x", nand->oobsize);
+ set_local_var(buf, 0);
+
+ memset(buf, 0, bufsz);
+ sprintf(buf, "nand_erasesize=%x", nand->erasesize);
+ set_local_var(buf, 0);
+#else
+ memset(buf, 0, bufsz);
+ sprintf(buf, "%x", nand->writesize);
+ setenv("nand_writesize", buf);
+
+ memset(buf, 0, bufsz);
+ sprintf(buf, "%x", nand->oobsize);
+ setenv("nand_oobsize", buf);
+
+ memset(buf, 0, bufsz);
+ sprintf(buf, "%x", nand->erasesize);
+ setenv("nand_erasesize", buf);
+#endif
}
int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
@@ -407,7 +443,7 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
putc('\n');
for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) {
if (nand_info[i].name)
- nand_print_info(i);
+ nand_print_and_set_info(i);
}
return 0;
}
@@ -418,7 +454,7 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE)
puts("no devices available\n");
else
- nand_print_info(dev);
+ nand_print_and_set_info(dev);
return 0;
}
--
1.7.5.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [U-Boot] [PATCH 2/2] NAND: Add scrub.quiet command option
2011-08-27 3:09 [U-Boot] [PATCH 1/2] NAND: Make page, erase, oob size available via cmd_nand Marek Vasut
@ 2011-08-27 3:09 ` Marek Vasut
0 siblings, 0 replies; 2+ messages in thread
From: Marek Vasut @ 2011-08-27 3:09 UTC (permalink / raw)
To: u-boot
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.vasut@gmail.com>
---
common/cmd_nand.c | 14 +++++++++++++-
1 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/common/cmd_nand.c b/common/cmd_nand.c
index 5b7e83d..45179e9 100644
--- a/common/cmd_nand.c
+++ b/common/cmd_nand.c
@@ -502,11 +502,19 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
int clean = argc > 2 && !strcmp("clean", argv[2]);
int o = clean ? 3 : 2;
int scrub = !strncmp(cmd, "scrub", 5);
+ int scrub_quiet = !strncmp(cmd, "scrub.quiet", 11);
int part = 0;
int chip = 0;
int spread = 0;
int args = 2;
+ /*
+ * Quiet scrub is a special option only for the scrub command,
+ * ignore it in the following construction.
+ */
+ if (scrub_quiet)
+ cmd[5] = 0;
+
if (cmd[5] != 0) {
if (!strcmp(&cmd[5], ".spread")) {
spread = 1;
@@ -543,7 +551,7 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
opts.quiet = quiet;
opts.spread = spread;
- if (scrub) {
+ if (scrub && !scrub_quiet) {
puts("Warning: "
"scrub option will erase all factory set "
"bad blocks!\n"
@@ -569,6 +577,10 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
return -1;
}
}
+
+ if (scrub_quiet)
+ opts.scrub = 1;
+
ret = nand_erase_opts(nand, &opts);
printf("%s\n", ret ? "ERROR" : "OK");
--
1.7.5.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-08-27 3:09 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-27 3:09 [U-Boot] [PATCH 1/2] NAND: Make page, erase, oob size available via cmd_nand Marek Vasut
2011-08-27 3:09 ` [U-Boot] [PATCH 2/2] NAND: Add scrub.quiet command option Marek Vasut
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.