public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
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

  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