
Signed-off-by: Li Wenhao liwenhao.g@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 */ + }; + + ulong page = 0; + ulong block_size = ops.len + ops.ooblen; + while (page * block_size < size) { + ops.datbuf = addr + page * block_size; + ops.oobbuf = ops.datbuf + ops.len; + + ret = nand->write_oob(nand, + off + page * ops.len, + &ops); + + if (ret) break; + + page++; + } } else { printf("Unknown nand command suffix '%s'.\n", s); return 1;