[U-Boot] [U-boot] [Patch v2 3/3] k2hk: change default nand ecc layout

Scott Wood scottwood at freescale.com
Wed Jun 25 01:25:15 CEST 2014


On Mon, 2014-06-23 at 18:26 +0300, Ivan Khoronzhuk wrote:
> On 06/21/2014 02:40 AM, Scott Wood wrote:
> > On Sat, 2014-06-21 at 02:28 +0300, Ivan Khoronzhuk wrote:
> >> For keystyone k2hk board the default nand layout is different
> >> from davinci. So swich ecc layout at init in board file.
> >>
> >> Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk at ti.com>
> >> ---
> >>   board/ti/k2hk_evm/board.c | 11 +++++++++++
> >>   1 file changed, 11 insertions(+)
> >>
> >> diff --git a/board/ti/k2hk_evm/board.c b/board/ti/k2hk_evm/board.c
> >> index ef90f9d..baa6ab7 100644
> >> --- a/board/ti/k2hk_evm/board.c
> >> +++ b/board/ti/k2hk_evm/board.c
> >> @@ -11,6 +11,7 @@
> >>   #include <exports.h>
> >>   #include <fdt_support.h>
> >>   #include <libfdt.h>
> >> +#include <nand.h>
> >>   
> >>   #include <asm/arch/hardware.h>
> >>   #include <asm/arch/clock.h>
> >> @@ -19,6 +20,7 @@
> >>   #include <asm/arch/emac_defs.h>
> >>   #include <asm/arch/psc_defs.h>
> >>   #include <asm/ti-common/ti-aemif.h>
> >> +#include <asm/ti-common/davinci_nand.h>
> >>   
> >>   DECLARE_GLOBAL_DATA_PTR;
> >>   
> >> @@ -147,6 +149,15 @@ int cpu_to_bus(u32 *ptr, u32 length)
> >>   	return 0;
> >>   }
> >>   
> >> +int board_nand_init(struct nand_chip *chip)
> >> +{
> >> +	davinci_nand_init(chip);
> >> +	chip->ecc.layout =
> >> +		board_nand_get_ecclayout(NAND_KEYSTONE_RBL_4BIT_LAYOUT);
> >> +
> >> +	return 0;
> >> +}
> > Shouldn't you be calling board_nand_set_ecclayout()?  How will oobavail
> > get set?
> 
> There is no reason to set oobavail here, I suppose that's done while int 
> nand_scan_tail().

But nand_scan_tail() has already run at this point.  oobavail would be
set based on the wrong layout.

> > Is it really OK to start with the wrong ECC layout and switch later?
> 
> It can be used to boot from nand.

That doesn't answer my question.

> > Are you depending on lazy scanning of the BBT?
> 
> No, define CONFIG_SYS_NAND_USE_FLASH_BBT

My point is, if the scanning of the BBT happens before you set the
layout, it will be read using the wrong ECC layout.

> > For that matter, you also seem to be assuming that markbad will never be
> > called when the ECC is set to something other than what the BBT uses.
> >
> > -Scott
> >
> >
> I suppose that only ECC layout is different.

"only"?  That's a big deal.

-Scott




More information about the U-Boot mailing list