From: Rohit Hagargundgi <h.rohit@samsung.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH] Fix OneNAND ipl to read 256KB
Date: Sun, 08 Mar 2009 12:20:02 +0530 [thread overview]
Message-ID: <49B36A9A.2050502@samsung.com> (raw)
In-Reply-To: <9c9fda240903041555i36b8048ck4e3349a81b51e0a3@mail.gmail.com>
Hi,
Kyungmin Park wrote:
>>
>> + /* Check for invalid block mark*/
>> + if (page < 2 && (onenand_readw(THIS_ONENAND(ONENAND_SPARERAM)) != 0xffff))
>> + return 1;
>> +
>
> No need to check invalid block. Note that block 0 is always good
> block. no exception.
Correct. block 0 is guaranteed to be good.
> Now you assume block 1 can be invalid block. If true just skip it.
> when update bootloader at u-boot or kernel.
> there's bad block at block 1. it will skip write. it means bootloader
> are located at block 0 and block 2.
yes, block 1 is invalid so block 0 and block 2 store bootloader.
so in ipl, we need to check invalid mark. block 1 is detected bad.
block 1 is skipped and block 2 is read for bootloader.
>> + int nblocks = CONFIG_SYS_MONITOR_LEN / (ONENAND_PAGES_PER_BLOCK * ONENAND_PAGE_SIZE);
>>
>> /* MLC OneNAND has 4KiB page size */
>> - if (onenand_readw(THIS_ONENAND(ONENAND_REG_TECHNOLOGY)))
>> + if (onenand_readw(THIS_ONENAND(ONENAND_REG_TECHNOLOGY))) {
>> pagesize <<= 1;
>> + nblocks = (nblocks + 1) >> 1;
>> + }
assuming page size of 2KB, nblocks is initialised to 2.
for 4KB paged devices (like Flex-OneNAND), nblocks gets halved ie 1.
>>
>> /* NOTE: you must read page from page 1 of block 0 */
>> /* read the block page by page*/
>> - for (page = ONENAND_START_PAGE;
>> - page < ONENAND_PAGES_PER_BLOCK; page++) {
>> -
>> - onenand_read_page(0, page, buf + offset, pagesize);
>> - offset += pagesize;
>> + page = ONENAND_START_PAGE;
>> + for (; block < nblocks; block++) {
>> + for (; page < ONENAND_PAGES_PER_BLOCK; page++) {
>> + if (onenand_read_page(block, page, buf + offset, pagesize)) {
>> + /* This block is bad. Skip it and read next block */
>> + nblocks++;
>> + break;
>> + }
>> + offset += pagesize;
>> + }
>> + page = 0;
>> }
>>
>> return 0;
>
> NAK, please use previous one as I sent.
> In Flex-OneNAND block 0 has 256KiB. need to handle at here how many
> blocks are needed.
this is taken care above.
> I also want to use CONFIG_ONENAND_END_BLOCK since we don't know which
> OneNAND or Flex-OneNAND are attached to apollon board.
okay. but why not use a variable instead.
Thanks,
Rohit
next prev parent reply other threads:[~2009-03-08 6:50 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-26 7:33 [U-Boot] [PATCH] Fix OneNAND ipl to read 256KB Rohit Hagargundgi
2009-02-26 8:13 ` Jean-Christophe PLAGNIOL-VILLARD
2009-02-26 12:31 ` Rohit Hagargundgi
2009-02-26 12:47 ` Jean-Christophe PLAGNIOL-VILLARD
2009-02-26 13:56 ` Wolfgang Denk
2009-02-26 8:23 ` Wolfgang Denk
2009-02-26 10:34 ` Kyungmin Park
2009-02-26 20:01 ` Rohit Hagargundgi
2009-03-04 15:09 ` Rohit Hagargundgi
2009-03-04 23:55 ` Kyungmin Park
2009-03-08 6:50 ` Rohit Hagargundgi [this message]
2009-03-08 22:44 ` Wolfgang Denk
2009-03-09 10:34 ` Rohit Hagargundgi
2009-03-09 11:55 ` Wolfgang Denk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49B36A9A.2050502@samsung.com \
--to=h.rohit@samsung.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox