[U-Boot] [PATCH 4/4] OneNAND: Use generic_onenand_read_page in IPL

Kyungmin Park kyungmin.park at samsung.com
Mon Oct 4 01:45:16 CEST 2010


Hi,

There's no OneNAND tree but all patches are mainlined by Scott Wood's tree.

And related with patch. I wonder why it's problem with your board?

As it's function pointer. It should be located the data section and it's assigned at runtime.

Maybe your board runs the code at OneNAND directly. It's the reason do you need to fixup.

I'll prepare the patches to fix this issue. So don't delete the codes.

Thank you,
Kyungmin Park

-----Original Message-----
From: Marek Vasut [mailto:marek.vasut at gmail.com] 
Sent: Monday, October 04, 2010 8:34 AM
To: Kyungmin Park
Cc: u-boot at lists.denx.de
Subject: Re: [U-Boot] [PATCH 4/4] OneNAND: Use generic_onenand_read_page in IPL

Dne Ne 3. října 2010 16:27:04 Marek Vasut napsal(a):
> Dne Ne 3. října 2010 08:40:19 Kyungmin Park napsal(a):
> > Hi,
> > 
> > No it's used another place. that's reason not static function pointer.
> > I'll update it soon.
> 
> Hey, my problem is this code hangs my CPU. If I apply this patch, it
> doesn't happen anymore.
> 
> Where is this used and what's your proposed change?

btw. who's the OneNAND maintainer (aka. who's supposed to pick up these changes 
?)
> 
> Thank you in advance
> 
> > Thank you,
> > Kyungmin Park
> > 
> > On Sun, Oct 3, 2010 at 2:33 AM, Marek Vasut <marek.vasut at gmail.com> wrote:
> > > There apparantly is no reason for having "onenand_read_page"
> > > abstracted. Besides, it's static data which causes trouble.
> > > 
> > > Signed-off-by: Marek Vasut <marek.vasut at gmail.com>
> > > ---
> > > 
> > >  onenand_ipl/onenand_read.c |    9 +++------
> > >  1 files changed, 3 insertions(+), 6 deletions(-)
> > > 
> > > diff --git a/onenand_ipl/onenand_read.c b/onenand_ipl/onenand_read.c
> > > index 8d0df81..008d73a 100644
> > > --- a/onenand_ipl/onenand_read.c
> > > +++ b/onenand_ipl/onenand_read.c
> > > @@ -37,8 +37,6 @@
> > > 
> > >  extern void *memcpy32(void *dest, void *src, int size);
> > >  #endif
> > > 
> > > -int (*onenand_read_page)(ulong block, ulong page, u_char *buf, int
> > > pagesize); -
> > > 
> > >  /* read a page with ECC */
> > >  static int generic_onenand_read_page(ulong block, ulong page,
> > >  
> > >                                u_char * buf, int pagesize)
> > > 
> > > @@ -122,8 +120,6 @@ int onenand_read_block(unsigned char *buf)
> > > 
> > >        int pagesize, erasesize, erase_shift;
> > >        int page_is_4KiB = 0;
> > > 
> > > -       onenand_read_page = generic_onenand_read_page;
> > > -
> > > 
> > >        onenand_generic_init(&page_is_4KiB, &page);
> > >        
> > >        if (page_is_4KiB) {
> > > 
> > > @@ -139,10 +135,11 @@ int onenand_read_block(unsigned char *buf)
> > > 
> > >        /* NOTE: you must read page from page 1 of block 0 */
> > >        /* read the block page by page */
> > > 
> > > +
> > > 
> > >        for (block = 0; block < nblocks; block++) {
> > >        
> > >                for (; page < ONENAND_PAGES_PER_BLOCK; page++) {
> > > 
> > > -                       if (onenand_read_page(block, page, buf +
> > > offset, -                                               pagesize)) {
> > > +                       if (generic_onenand_read_page(block, page,
> > > +                                       buf + offset, pagesize)) {
> > > 
> > >                                /* This block is bad. Skip it
> > >                                
> > >                                 * and read next block */
> > >                                
> > >                                offset -= page * pagesize;
> > > 
> > > --
> > > 1.7.1
> > > 
> > > _______________________________________________
> > > U-Boot mailing list
> > > U-Boot at lists.denx.de
> > > http://lists.denx.de/mailman/listinfo/u-boot



More information about the U-Boot mailing list