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.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 | 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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot