[U-Boot] [PATCH] Add Yaffs2 image writing support.

Scott Wood scottwood at freescale.com
Fri Mar 12 00:14:14 CET 2010


Wolfgang Denk wrote:
> Dear Scott,
> 
> In message <1263145126-23165-1-git-send-email-liwenhao.g at gmail.com> Li Wenha wrote:
>> Signed-off-by: Li Wenhao <liwenhao.g at gmail.com>
>> ---
>>  common/cmd_nand.c |   21 +++++++++++++++++++++
>>  1 files changed, 21 insertions(+), 0 deletions(-)
>>
>> diff --git a/common/cmd_nand.c b/common/cmd_nand.c
>> index 075a8af..38c6480 100644
>> --- a/common/cmd_nand.c
>> +++ b/common/cmd_nand.c
>> @@ -390,6 +390,27 @@ int do_nand(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
>>  				ret = nand->read_oob(nand, off, &ops);
>>  			else
>>  				ret = nand->write_oob(nand, off, &ops);
>> +		} else if (!strcmp(s, ".yaffs2") && !read) {
>> +			mtd_oob_ops_t ops = {
>> +				.mode = MTD_OOB_AUTO,
>> +				.len = 2048,	/* page size */
>> +				.ooblen = 64,	/* spare size */
>> +			};

What about 512 or 4096 byte pages?

>> +
>> +			ulong page = 0;
>> +			ulong block_size = ops.len + ops.ooblen;
>> +			while (page * block_size < size) {

What if "size" is not a multiple of "block_size"?  Should not read past 
the end of the input array, and should warn the user.

>> +				ret = nand->write_oob(nand, 
>> +						      off + page * ops.len,
>> +						      &ops);
>> +
>> +				if (ret) break;

The break should go on its own line, and you should tell the user about 
the failure.

>> +
>> +				page++;
>> +			}
>>  		} else {
>>  			printf("Unknown nand command suffix '%s'.\n", s);
>>  			return 1;
>> -- 
>> 1.6.3.3
> 
> What is the status of this patch? Is it in your queue?

No, I didn't notice it -- the subject doesn't mention NAND, and it 
presumably wasn't CCed to me.

Li Wenhao, could you send a new patch addressing the above issues, plus 
updated documentation?

-Scott



More information about the U-Boot mailing list