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

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;

Dear Scott,
In message 1263145126-23165-1-git-send-email-liwenhao.g@gmail.com Li Wenha wrote:
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;}
-- 1.6.3.3
What is the status of this patch? Is it in your queue?
Best regards,
Wolfgang Denk

Wolfgang Denk wrote:
Dear Scott,
In message 1263145126-23165-1-git-send-email-liwenhao.g@gmail.com Li Wenha wrote:
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 */
};
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

Dear Li Wenhao,
In message 1263145126-23165-1-git-send-email-liwenhao.g@gmail.com you wrote:
Signed-off-by: Li Wenhao liwenhao.g@gmail.com
common/cmd_nand.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)
Scott sent a number of comments / change requests for this patch. Do you intend to submit an updated patch any time soon, or shall I drop this from my list?
Best regards,
Wolfgang Denk

It's my mistake. I should send my mails to the mail-list instead of only replied to Scott.
After discussing the requests with Scott, I realized that my patch may not work on a lot of chips. So please drop it.
Best regards,
Li Wenhao
2010/4/10 Wolfgang Denk wd@denx.de:
Dear Li Wenhao,
In message 1263145126-23165-1-git-send-email-liwenhao.g@gmail.com you wrote:
Signed-off-by: Li Wenhao liwenhao.g@gmail.com
common/cmd_nand.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)
Scott sent a number of comments / change requests for this patch. Do you intend to submit an updated patch any time soon, or shall I drop this from my list?
Best regards,
Wolfgang Denk
-- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de An expert is a person who avoids the small errors while sweeping on to the grand fallacy.
participants (4)
-
Li Wenhao
-
Scott Wood
-
Wenhao Li
-
Wolfgang Denk