Patchwork [U-Boot] nand_spl: nand_boot.c: Init nand_chip.options to 0

login
register
mail settings
Submitter Stefan Roese
Date May 4, 2011, 9:44 a.m.
Message ID <1304502284-392-1-git-send-email-sr@denx.de>
Download mbox | patch
Permalink /patch/93997/
State Accepted
Commit a89a990159d450765b8a5675e640525bc6258d1b
Headers show

Comments

Stefan Roese - May 4, 2011, 9:44 a.m.
Patch 65a9db7b [nand_spl: Fix large page nand_command()] broke
nand booting on canyonlands. "options" has to be initialized to
0. If not, boards might have the NAND_BUSWIDTH_16 bit set,
resulting in wrong offset calculation.

Signed-off-by: Stefan Roese <sr@denx.de>
Cc: Scott Wood <scottwood@freescale.com>
Cc: Alex Waterman <awaterman@dawning.com>
---
 nand_spl/nand_boot.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)
Scott Wood - May 4, 2011, 5:30 p.m.
On Wed, 4 May 2011 11:44:44 +0200
Stefan Roese <sr@denx.de> wrote:

> Patch 65a9db7b [nand_spl: Fix large page nand_command()] broke
> nand booting on canyonlands. "options" has to be initialized to
> 0. If not, boards might have the NAND_BUSWIDTH_16 bit set,
> resulting in wrong offset calculation.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Scott Wood <scottwood@freescale.com>
> Cc: Alex Waterman <awaterman@dawning.com>
> ---
>  nand_spl/nand_boot.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
> 
> diff --git a/nand_spl/nand_boot.c b/nand_spl/nand_boot.c
> index cefeb91..62303aa 100644
> --- a/nand_spl/nand_boot.c
> +++ b/nand_spl/nand_boot.c
> @@ -232,6 +232,7 @@ void nand_boot(void)
>  	nand_info.priv = &nand_chip;
>  	nand_chip.IO_ADDR_R = nand_chip.IO_ADDR_W = (void  __iomem *)CONFIG_SYS_NAND_BASE;
>  	nand_chip.dev_ready = NULL;	/* preset to NULL */
> +	nand_chip.options = 0;
>  	board_nand_init(&nand_chip);
>  
>  	if (nand_chip.select_chip)

Maybe nand_chip should be made static so it goes in the BSS?  This would
avoid any other such problems, without adding any extra code to zero things
out.

-Scott
Stefan Roese - May 6, 2011, 1:12 p.m.
On Wednesday 04 May 2011 19:30:29 Scott Wood wrote:
> > +	nand_chip.options = 0;
> >  	board_nand_init(&nand_chip);
> >  	
> >  	if (nand_chip.select_chip)
> 
> Maybe nand_chip should be made static so it goes in the BSS?  This would
> avoid any other such problems, without adding any extra code to zero things
> out.

Yes, good idea. I tried it but it resulted in a bigger image instead of a 
smaller one. I need to investigate further to see why this is the case...

Cheers,
Stefan

--
DENX Software Engineering GmbH,      MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich,  Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-0 Fax: (+49)-8142-66989-80 Email: office@denx.de
Scott Wood - May 13, 2011, 4:16 p.m.
On Wed, May 04, 2011 at 11:44:44AM +0200, Stefan Roese wrote:
> Patch 65a9db7b [nand_spl: Fix large page nand_command()] broke
> nand booting on canyonlands. "options" has to be initialized to
> 0. If not, boards might have the NAND_BUSWIDTH_16 bit set,
> resulting in wrong offset calculation.
> 
> Signed-off-by: Stefan Roese <sr@denx.de>
> Cc: Scott Wood <scottwood@freescale.com>
> Cc: Alex Waterman <awaterman@dawning.com>
> ---
>  nand_spl/nand_boot.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)

Applied to u-boot-nand-flash

-Scott

Patch

diff --git a/nand_spl/nand_boot.c b/nand_spl/nand_boot.c
index cefeb91..62303aa 100644
--- a/nand_spl/nand_boot.c
+++ b/nand_spl/nand_boot.c
@@ -232,6 +232,7 @@  void nand_boot(void)
 	nand_info.priv = &nand_chip;
 	nand_chip.IO_ADDR_R = nand_chip.IO_ADDR_W = (void  __iomem *)CONFIG_SYS_NAND_BASE;
 	nand_chip.dev_ready = NULL;	/* preset to NULL */
+	nand_chip.options = 0;
 	board_nand_init(&nand_chip);
 
 	if (nand_chip.select_chip)