From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steven Zedeck Date: Thu, 11 Feb 2010 18:49:33 -0800 (PST) Subject: [U-Boot] [PATCH] add explicit bbt creation to commandline In-Reply-To: <20080706080456.GF4167@prithivi.gnumonks.org> References: <20080706080456.GF4167@prithivi.gnumonks.org> Message-ID: <27558231.post@talk.nabble.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi, I know this message is about 18 months old. I am using Uboot 2008.10, which seems to not include support for creating the Nand BBT (bad block table). Was this patch released and if so when? Forgive me as I don't know how to find out. How best to add BBT support to Uboot? I need to have a BBT created such that Linux can use it when it loads. I hope you can help. Thanks in advance, Steve P.S.: I snipped out portions of this code to save space in this reply. Harald Welte wrote: > > [PATCH] add explicit bbt creation to commandline ("nand createbbt" > command) > > This patch adds user-requested BBT creation. It includes the following > changes: > > - common/cmd_nand.c: move yes/no decision to separate function > - do_nand: ask for confirmation for "nand erase" > - do_nand: add command "nand createbbt" to erase NAND and create a new BBT > > Signed-off-by: Werner Almesberger > Signed-off-by: Harald Welte > > --- > > diff --git a/common/cmd_nand.c b/common/cmd_nand.c > index bb46f34..2f41157 100644 > --- a/common/cmd_nand.c > +++ b/common/cmd_nand.c > @@ -162,6 +162,17 @@ out: > return 0; > } > > +static int yes(void) > +{ > + char c; > + > + c = getc(); > + if (c != 'y' && c != 'Y') > + return 0; > + c = getc(); > + return c == '\r' || c == '\n'; > +} > + > int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]) > { > int i, dev, ret; > @@ -231,7 +242,8 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, > char *argv[]) > strncmp(cmd, "read", 4) != 0 && strncmp(cmd, "write", 5) != 0 && > strcmp(cmd, "scrub") != 0 && strcmp(cmd, "markbad") != 0 && > strcmp(cmd, "biterr") != 0 && > - strcmp(cmd, "lock") != 0 && strcmp(cmd, "unlock") != 0 ) > + strcmp(cmd, "lock") != 0 && strcmp(cmd, "unlock") != 0 && > + strcmp(cmd, "createbbt") != 0 ) > goto usage; > > /* the following commands operate on the current device */ > @@ -286,13 +298,23 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, > char *argv[]) > "are sure of what you are doing!\n" > "\nReally scrub this NAND flash? \n"); > > - if (getc() == 'y' && getc() == '\r') { > + if (yes()) { > opts.scrub = 1; > } else { > puts("scrub aborted\n"); > return -1; > } > } > + else { > + if (opts.length == nand->size) { > + puts("Really erase everything ? \n"); > + if (!yes()) { > + puts("erase aborted\n"); > + return -1; > + } > + } > + } > + > ret = nand_erase_opts(nand, &opts); > printf("%s\n", ret ? "ERROR" : "OK"); > > @@ -461,6 +483,33 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, > char *argv[]) > return 0; > } > > + if (strcmp(cmd, "createbbt") == 0) { > + struct nand_chip *nand_chip = nand->priv; > + nand_erase_options_t opts; > + > + puts("Create BBT and erase everything ? \n"); > + if (!yes()) { > + puts("createbbt aborted\n"); > + return -1; > + } > + memset(&opts, 0, sizeof(opts)); > + opts.length = nand->size; > + if (nand_erase_opts(nand, &opts)) { > + puts("Erase failed\n"); > + return 1; > +. > . > . > snip.... > . > . > . > > > -- View this message in context: http://old.nabble.com/-PATCH--add-explicit-bbt-creation-to-commandline-tp18299804p27558231.html Sent from the Uboot - Users mailing list archive at Nabble.com.