Hi Ben, > In a future commit the behaviour of nand_write_skip_bad() > will be further extended. > > Convert the only flag currently passed to the nand_write_ > skip_bad() function to a bitfield of only one allocated > member. This should avoid an explosion of int's at the > end of the parameter list or the ambiguous calls like > > nand_write_skip_bad(info, offset, len, buf, 0, 1, 1); > nand_write_skip_bad(info, offset, len, buf, 0, 1, 0); > > Instead there will be: > > nand_write_skip_bad(info, offset, len, buf, WITH_OOB | > WITH_OTHER); > > Signed-off-by: Ben Gardiner <bengardi...@nanometrics.ca> > --- > common/cmd_nand.c | 3 ++- > drivers/mtd/nand/nand_util.c | 8 ++++---- > include/nand.h | 5 ++++- > 3 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/common/cmd_nand.c b/common/cmd_nand.c > index 7bd37de..69b2acc 100644 > --- a/common/cmd_nand.c > +++ b/common/cmd_nand.c > @@ -581,7 +581,8 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char * > const argv[]) > printf("Unknown nand command suffix '%s'.\n", > s); > return 1; > } > - ret = nand_write_skip_bad(nand, off, &rwsize, (u_char > *)addr, 1); > + ret = nand_write_skip_bad(nand, off, &rwsize, > + (u_char *)addr, WITH_OOB); > #endif > } else if (!strcmp(s, ".oob")) { > /* out-of-band data */
I see an occurrence of nand_write_skip_bad just above this if block. Please replace this also. > diff --git a/drivers/mtd/nand/nand_util.c b/drivers/mtd/nand/nand_util.c > index 5a6f7ae..2bd8758 100644 > --- a/drivers/mtd/nand/nand_util.c > +++ b/drivers/mtd/nand/nand_util.c > @@ -448,11 +448,11 @@ static int check_skip_len(nand_info_t *nand, loff_t > offset, size_t length) > * @param offset offset in flash > * @param length buffer length > * @param buffer buffer to read from > - * @param withoob whether write with yaffs format > + * @param flags flags mmofying the behaviour of the write to > NAND > * @return 0 in case of success > */ > int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, > - u_char *buffer, int withoob) > + u_char *buffer, int flags) > { > int rval = 0, blocksize; > size_t left_to_write = *length; > @@ -460,7 +460,7 @@ int nand_write_skip_bad(nand_info_t *nand, loff_t offset, > size_t *length, > int need_skip; > > #ifdef CONFIG_CMD_NAND_YAFFS > - if (withoob) { > + if (flags & WITH_OOB) { > int pages; > pages = nand->erasesize / nand->writesize; > blocksize = (pages * nand->oobsize) + nand->erasesize; > @@ -529,7 +529,7 @@ int nand_write_skip_bad(nand_info_t *nand, loff_t offset, > size_t *length, > write_size = blocksize - block_offset; > > #ifdef CONFIG_CMD_NAND_YAFFS > - if (withoob) { > + if (flags & WITH_OOB) { > int page, pages; > size_t pagesize = nand->writesize; > size_t pagesize_oob = pagesize + nand->oobsize; > diff --git a/include/nand.h b/include/nand.h > index 7459bd0..628317a 100644 > --- a/include/nand.h > +++ b/include/nand.h > @@ -114,8 +114,11 @@ typedef struct nand_erase_options nand_erase_options_t; > > int nand_read_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, > u_char *buffer); > + > +#define WITH_OOB (1 << 0) /* whether write with yaffs format */ > + If this flag is really only relevant for YAFFS, then please include this in its name, i.e. rename it to "WITH_YAFFS_OOB". > int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, > - u_char *buffer, int withoob); > + u_char *buffer, int flags); > int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts); > > #define NAND_LOCK_STATUS_TIGHT 0x01 Cheers Detlev -- Those who do not understand Unix are condemned to reinvent it, poorly. - Henry Spencer, University of Toronto Unix hack -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-40 Fax: (+49)-8142-66989-80 Email: d...@denx.de _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot