diff options
| author | Ben Gardiner <bengardiner@nanometrics.ca> | 2011-05-24 10:18:35 -0400 | 
|---|---|---|
| committer | Scott Wood <scottwood@freescale.com> | 2011-07-01 15:56:51 -0500 | 
| commit | a6c9aa1f92dd16a0ec6faeff37069db61d3f7cf3 (patch) | |
| tree | 9328511116f7ad2e2525d8d1a5c24d92f1ebd654 | |
| parent | bee038e9fe2fe0fcd53e89aac32fb8948555c040 (diff) | |
| download | olio-uboot-2014.01-a6c9aa1f92dd16a0ec6faeff37069db61d3f7cf3.tar.xz olio-uboot-2014.01-a6c9aa1f92dd16a0ec6faeff37069db61d3f7cf3.zip | |
nand_util: convert nand_write_skip_bad() to flags
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_YAFFS_OOB |
			WITH_OTHER);
Signed-off-by: Ben Gardiner <bengardiner@nanometrics.ca>
Acked-by: Detlev Zundel <dzu@denx.de>
Signed-off-by: Scott Wood <scottwood@freescale.com>
| -rw-r--r-- | common/cmd_nand.c | 3 | ||||
| -rw-r--r-- | drivers/mtd/nand/nand_util.c | 8 | ||||
| -rw-r--r-- | include/nand.h | 5 | 
3 files changed, 10 insertions, 6 deletions
| diff --git a/common/cmd_nand.c b/common/cmd_nand.c index 44c4d1f89..27a88796e 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_YAFFS_OOB);  #endif  		} else if (!strcmp(s, ".oob")) {  			/* out-of-band data */ diff --git a/drivers/mtd/nand/nand_util.c b/drivers/mtd/nand/nand_util.c index 5a6f7aec8..762ac5328 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 modifying 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_YAFFS_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_YAFFS_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 7459bd033..b0a31b8f0 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_YAFFS_OOB	(1 << 0) /* whether write with yaffs format */ +  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 |