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

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)

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

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

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
participants (2)
-
Scott Wood
-
Stefan Roese