Message ID | 1330335504-32226-3-git-send-email-amit.virdi@st.com |
---|---|
State | Changes Requested |
Headers | show |
Hi Amit, please find a few comments below. On Monday 27 February 2012 10:38:23 Amit Virdi wrote: > From: Vipin KUMAR <vipin.kumar@st.com> > > Since FSMC is a standard IP and it supports different memory interfaces, it > is supported independent of spear platform and spear is configured to use > that driver for interfacing with the NAND device > > Signed-off-by: Vipin Kumar <vipin.kumar@st.com> > Signed-off-by: Amit Virdi <amit.virdi@st.com> > --- > arch/arm/include/asm/arch-spear/hardware.h | 8 ++++---- > board/spear/spear300/spear300.c | 7 ++++--- > board/spear/spear310/spear310.c | 7 ++++--- > board/spear/spear320/spear320.c | 7 ++++--- > board/spear/spear600/spear600.c | 7 ++++--- > include/configs/spear-common.h | 2 +- > include/configs/spear3xx.h | 4 ++++ > include/configs/spear6xx.h | 3 +++ > 8 files changed, 28 insertions(+), 17 deletions(-) > > diff --git a/arch/arm/include/asm/arch-spear/hardware.h > b/arch/arm/include/asm/arch-spear/hardware.h index 818f36c..a6517b2 100644 > --- a/arch/arm/include/asm/arch-spear/hardware.h > +++ b/arch/arm/include/asm/arch-spear/hardware.h > @@ -37,15 +37,15 @@ > > #if defined(CONFIG_SPEAR600) > #define CONFIG_SYS_I2C_BASE (0xD0200000) > -#define CONFIG_SPEAR_FSMCBASE (0xD1800000) > +#define CONFIG_SYS_FSMC_BASE (0xD1800000) Please remove the parentheses here as they are not needed. Should be done to all those defines, perhaps in a cosmetic cleanup patch at some time as well: +#define CONFIG_SYS_FSMC_BASE 0xD1800000 > #elif defined(CONFIG_SPEAR300) > #define CONFIG_SYS_I2C_BASE (0xD0180000) > -#define CONFIG_SPEAR_FSMCBASE (0x94000000) > +#define CONFIG_SYS_FSMC_BASE (0x94000000) > > #elif defined(CONFIG_SPEAR310) > #define CONFIG_SYS_I2C_BASE (0xD0180000) > -#define CONFIG_SPEAR_FSMCBASE (0x44000000) > +#define CONFIG_SYS_FSMC_BASE (0x44000000) > > #undef CONFIG_SYS_NAND_CLE > #undef CONFIG_SYS_NAND_ALE > @@ -57,7 +57,7 @@ > > #elif defined(CONFIG_SPEAR320) > #define CONFIG_SYS_I2C_BASE (0xD0180000) > -#define CONFIG_SPEAR_FSMCBASE (0x4C000000) > +#define CONFIG_SYS_FSMC_BASE (0x4C000000) > > #define CONFIG_SPEAR_EMIBASE (0x40000000) > #define CONFIG_SPEAR_RASBASE (0xB3000000) > diff --git a/board/spear/spear300/spear300.c > b/board/spear/spear300/spear300.c index 60ee544..32bcb77 100644 > --- a/board/spear/spear300/spear300.c > +++ b/board/spear/spear300/spear300.c > @@ -24,10 +24,10 @@ > #include <common.h> > #include <nand.h> > #include <asm/io.h> > +#include <linux/mtd/fsmc_nand.h> > #include <asm/arch/hardware.h> > #include <asm/arch/spr_defs.h> > #include <asm/arch/spr_misc.h> > -#include <asm/arch/spr_nand.h> > > int board_init(void) > { > @@ -46,13 +46,14 @@ int board_nand_init(struct nand_chip *nand) > struct misc_regs *const misc_regs_p = > (struct misc_regs *)CONFIG_SPEAR_MISCBASE; > > +#if defined(CONFIG_NAND_FSMC) > if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == > MISC_SOCCFG30) || > ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == > MISC_SOCCFG31)) { > > - return spear_nand_init(nand); > + return fsmc_nand_init(nand); > } > - > +#endif > return -1; > } > diff --git a/board/spear/spear310/spear310.c > b/board/spear/spear310/spear310.c index 03dfe16..8b58218 100644 > --- a/board/spear/spear310/spear310.c > +++ b/board/spear/spear310/spear310.c > @@ -25,10 +25,10 @@ > #include <common.h> > #include <nand.h> > #include <asm/io.h> > +#include <linux/mtd/fsmc_nand.h> > #include <asm/arch/hardware.h> > #include <asm/arch/spr_defs.h> > #include <asm/arch/spr_misc.h> > -#include <asm/arch/spr_nand.h> > > int board_init(void) > { > @@ -47,13 +47,14 @@ int board_nand_init(struct nand_chip *nand) > struct misc_regs *const misc_regs_p = > (struct misc_regs *)CONFIG_SPEAR_MISCBASE; > > +#if defined(CONFIG_NAND_FSMC) > if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == > MISC_SOCCFG30) || > ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == > MISC_SOCCFG31)) { > > - return spear_nand_init(nand); > + return fsmc_nand_init(nand); > } > - > +#endif > return -1; > } > diff --git a/board/spear/spear320/spear320.c > b/board/spear/spear320/spear320.c index 2ba2dbb..172ad35 100644 > --- a/board/spear/spear320/spear320.c > +++ b/board/spear/spear320/spear320.c > @@ -25,10 +25,10 @@ > #include <common.h> > #include <nand.h> > #include <asm/io.h> > +#include <linux/mtd/fsmc_nand.h> > #include <asm/arch/hardware.h> > #include <asm/arch/spr_defs.h> > #include <asm/arch/spr_misc.h> > -#include <asm/arch/spr_nand.h> > > int board_init(void) > { > @@ -47,13 +47,14 @@ int board_nand_init(struct nand_chip *nand) > struct misc_regs *const misc_regs_p = > (struct misc_regs *)CONFIG_SPEAR_MISCBASE; > > +#if defined(CONFIG_NAND_FSMC) > if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == > MISC_SOCCFG30) || > ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == > MISC_SOCCFG31)) { > > - return spear_nand_init(nand); > + return fsmc_nand_init(nand); > } > - > +#endif > return -1; > } > diff --git a/board/spear/spear600/spear600.c > b/board/spear/spear600/spear600.c index eef9a37..7cf63d6 100644 > --- a/board/spear/spear600/spear600.c > +++ b/board/spear/spear600/spear600.c > @@ -24,10 +24,10 @@ > #include <common.h> > #include <nand.h> > #include <asm/io.h> > +#include <linux/mtd/fsmc_nand.h> > #include <asm/arch/hardware.h> > #include <asm/arch/spr_defs.h> > #include <asm/arch/spr_misc.h> > -#include <asm/arch/spr_nand.h> > > int board_init(void) > { > @@ -46,8 +46,9 @@ int board_nand_init(struct nand_chip *nand) > struct misc_regs *const misc_regs_p = > (struct misc_regs *)CONFIG_SPEAR_MISCBASE; > > +#if defined(CONFIG_NAND_FSMC) > if (!(readl(&misc_regs_p->auto_cfg_reg) & MISC_NANDDIS)) > - return spear_nand_init(nand); > - > + return fsmc_nand_init(nand); > +#endif > return -1; > } > diff --git a/include/configs/spear-common.h > b/include/configs/spear-common.h index 516b78e..c37305f 100644 > --- a/include/configs/spear-common.h > +++ b/include/configs/spear-common.h > @@ -90,7 +90,7 @@ > /* NAND FLASH Configuration */ > #define CONFIG_MTD_DEVICE > #define CONFIG_MTD_PARTITIONS > -#define CONFIG_NAND_SPEAR 1 > +#define CONFIG_NAND_FSMC > #define CONFIG_SYS_MAX_NAND_DEVICE 1 > #define CONFIG_MTD_NAND_VERIFY_WRITE I suggest that you remove this last define. Most likely it was added for debugging purpose only. It slows down the speed and it brakes UBI support. > diff --git a/include/configs/spear3xx.h b/include/configs/spear3xx.h > index bd5d111..5bdd874 100644 > --- a/include/configs/spear3xx.h > +++ b/include/configs/spear3xx.h > @@ -117,6 +117,10 @@ > > #endif > > +/* NAND flash configuration */ > +#define CONFIG_SYS_FSMC_NAND_SP > +#define CONFIG_SYS_FSMC_NAND_8BIT > + > #if defined(CONFIG_SPEAR300) > #define CONFIG_SYS_NAND_BASE 0x80000000 > > diff --git a/include/configs/spear6xx.h b/include/configs/spear6xx.h > index 8de7ebd..1e06c72 100644 > --- a/include/configs/spear6xx.h > +++ b/include/configs/spear6xx.h > @@ -38,6 +38,9 @@ > #define CONFIG_PL01x_PORTS { (void *)CONFIG_SYS_SERIAL0, \ > (void *)CONFIG_SYS_SERIAL1 } > > +/* NAND flash configuration */ > +#define CONFIG_SYS_FSMC_NAND_SP > +#define CONFIG_SYS_FSMC_NAND_8BIT You also need the following define for this to work with the latest NAND subsystem: #define CONFIG_MTD_ECC_SOFT Not sure about SPEAr3xx. Most likely this needs it as well. Thanks, 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
Hello Stefan, On 2/27/2012 3:32 PM, Stefan Roese wrote: > Hi Amit, > > please find a few comments below. > > On Monday 27 February 2012 10:38:23 Amit Virdi wrote: >> From: Vipin KUMAR<vipin.kumar@st.com> >> >> Since FSMC is a standard IP and it supports different memory interfaces, it >> is supported independent of spear platform and spear is configured to use >> that driver for interfacing with the NAND device >> >> Signed-off-by: Vipin Kumar<vipin.kumar@st.com> >> Signed-off-by: Amit Virdi<amit.virdi@st.com> >> --- >> arch/arm/include/asm/arch-spear/hardware.h | 8 ++++---- >> board/spear/spear300/spear300.c | 7 ++++--- >> board/spear/spear310/spear310.c | 7 ++++--- >> board/spear/spear320/spear320.c | 7 ++++--- >> board/spear/spear600/spear600.c | 7 ++++--- >> include/configs/spear-common.h | 2 +- >> include/configs/spear3xx.h | 4 ++++ >> include/configs/spear6xx.h | 3 +++ >> 8 files changed, 28 insertions(+), 17 deletions(-) >> >> diff --git a/arch/arm/include/asm/arch-spear/hardware.h >> b/arch/arm/include/asm/arch-spear/hardware.h index 818f36c..a6517b2 100644 >> --- a/arch/arm/include/asm/arch-spear/hardware.h >> +++ b/arch/arm/include/asm/arch-spear/hardware.h >> @@ -37,15 +37,15 @@ >> >> #if defined(CONFIG_SPEAR600) >> #define CONFIG_SYS_I2C_BASE (0xD0200000) >> -#define CONFIG_SPEAR_FSMCBASE (0xD1800000) >> +#define CONFIG_SYS_FSMC_BASE (0xD1800000) > > Please remove the parentheses here as they are not needed. Should be done to > all those defines, perhaps in a cosmetic cleanup patch at some time as well: > Yes. I'll be sending a separate cleanup commit. > +#define CONFIG_SYS_FSMC_BASE 0xD1800000 > >> #elif defined(CONFIG_SPEAR300) <snip> >> diff --git a/include/configs/spear-common.h >> b/include/configs/spear-common.h index 516b78e..c37305f 100644 >> --- a/include/configs/spear-common.h >> +++ b/include/configs/spear-common.h >> @@ -90,7 +90,7 @@ >> /* NAND FLASH Configuration */ >> #define CONFIG_MTD_DEVICE >> #define CONFIG_MTD_PARTITIONS >> -#define CONFIG_NAND_SPEAR 1 >> +#define CONFIG_NAND_FSMC >> #define CONFIG_SYS_MAX_NAND_DEVICE 1 >> #define CONFIG_MTD_NAND_VERIFY_WRITE > > I suggest that you remove this last define. Most likely it was added for > debugging purpose only. It slows down the speed and it brakes UBI support. > Ok. >> diff --git a/include/configs/spear3xx.h b/include/configs/spear3xx.h >> index bd5d111..5bdd874 100644 >> --- a/include/configs/spear3xx.h >> +++ b/include/configs/spear3xx.h >> @@ -117,6 +117,10 @@ >> >> #endif >> >> +/* NAND flash configuration */ >> +#define CONFIG_SYS_FSMC_NAND_SP >> +#define CONFIG_SYS_FSMC_NAND_8BIT >> + >> #if defined(CONFIG_SPEAR300) >> #define CONFIG_SYS_NAND_BASE 0x80000000 >> >> diff --git a/include/configs/spear6xx.h b/include/configs/spear6xx.h >> index 8de7ebd..1e06c72 100644 >> --- a/include/configs/spear6xx.h >> +++ b/include/configs/spear6xx.h >> @@ -38,6 +38,9 @@ >> #define CONFIG_PL01x_PORTS { (void > *)CONFIG_SYS_SERIAL0, \ >> (void > *)CONFIG_SYS_SERIAL1 } >> >> +/* NAND flash configuration */ >> +#define CONFIG_SYS_FSMC_NAND_SP >> +#define CONFIG_SYS_FSMC_NAND_8BIT > > You also need the following define for this to work with the latest NAND > subsystem: > > #define CONFIG_MTD_ECC_SOFT > > Not sure about SPEAr3xx. Most likely this needs it as well. > Ok. I'll verify the image after the making the changes you suggested and then get back. Thanks Amit Virdi
On 02/27/2012 04:02 AM, Stefan Roese wrote: >> diff --git a/include/configs/spear-common.h >> b/include/configs/spear-common.h index 516b78e..c37305f 100644 >> --- a/include/configs/spear-common.h >> +++ b/include/configs/spear-common.h >> @@ -90,7 +90,7 @@ >> /* NAND FLASH Configuration */ >> #define CONFIG_MTD_DEVICE >> #define CONFIG_MTD_PARTITIONS >> -#define CONFIG_NAND_SPEAR 1 >> +#define CONFIG_NAND_FSMC >> #define CONFIG_SYS_MAX_NAND_DEVICE 1 >> #define CONFIG_MTD_NAND_VERIFY_WRITE > > I suggest that you remove this last define. Most likely it was added for > debugging purpose only. It slows down the speed and it brakes UBI support. What is the problem with UBI? >> +/* NAND flash configuration */ >> +#define CONFIG_SYS_FSMC_NAND_SP >> +#define CONFIG_SYS_FSMC_NAND_8BIT > > You also need the following define for this to work with the latest NAND > subsystem: > > #define CONFIG_MTD_ECC_SOFT > > Not sure about SPEAr3xx. Most likely this needs it as well. This is going to be reverted for now -- I meant to leave it out of the last patchset because of the need to update all boards (which the patch did not do). -Scott
Hello Stefan, [...] >> +/* NAND flash configuration */ >> +#define CONFIG_SYS_FSMC_NAND_SP >> +#define CONFIG_SYS_FSMC_NAND_8BIT > > You also need the following define for this to work with the latest NAND > subsystem: > > #define CONFIG_MTD_ECC_SOFT > > Not sure about SPEAr3xx. Most likely this needs it as well. > Could you please explain the rationale for defining this flag? Thanks Amit Virdi
Hello Scott, On 2/28/2012 4:02 AM, Scott Wood wrote: > On 02/27/2012 04:02 AM, Stefan Roese wrote: [...] >> >> You also need the following define for this to work with the latest NAND >> subsystem: >> >> #define CONFIG_MTD_ECC_SOFT >> >> Not sure about SPEAr3xx. Most likely this needs it as well. > > This is going to be reverted for now -- I meant to leave it out of the > last patchset because of the need to update all boards (which the patch > did not do). > Sorry, I didn't get you. Could you please elaborate? Thanks Amit Virdi
On 02/29/2012 04:11 AM, Amit Virdi wrote: > Hello Scott, > > On 2/28/2012 4:02 AM, Scott Wood wrote: >> On 02/27/2012 04:02 AM, Stefan Roese wrote: > [...] >>> >>> You also need the following define for this to work with the latest NAND >>> subsystem: >>> >>> #define CONFIG_MTD_ECC_SOFT >>> >>> Not sure about SPEAr3xx. Most likely this needs it as well. >> >> This is going to be reverted for now -- I meant to leave it out of the >> last patchset because of the need to update all boards (which the patch >> did not do). >> > > Sorry, I didn't get you. Could you please elaborate? It was intended to reduce U-Boot code size in cases where soft ECC is not needed. However, the patch that introduced it did not update the boards to select it when necessary, so it is being reverted for now. It can be resubmitted with proper documentation and board config file updates. -Scott
Hi Scott, >>>> >>>> You also need the following define for this to work with the latest NAND >>>> subsystem: >>>> >>>> #define CONFIG_MTD_ECC_SOFT >>>> >>>> Not sure about SPEAr3xx. Most likely this needs it as well. >>> >>> This is going to be reverted for now -- I meant to leave it out of the >>> last patchset because of the need to update all boards (which the patch >>> did not do). >>> >> >> Sorry, I didn't get you. Could you please elaborate? > > It was intended to reduce U-Boot code size in cases where soft ECC is > not needed. However, the patch that introduced it did not update the > boards to select it when necessary, so it is being reverted for now. > > It can be resubmitted with proper documentation and board config file > updates. > Ok. So I need not to define "CONFIG_MTD_ECC_SOFT" for now. Thanks Amit Virdi
Hi Scott, On Wednesday 29 February 2012 19:03:20 Scott Wood wrote: > >>> You also need the following define for this to work with the latest > >>> NAND subsystem: > >>> > >>> #define CONFIG_MTD_ECC_SOFT > >>> > >>> Not sure about SPEAr3xx. Most likely this needs it as well. > >> > >> This is going to be reverted for now -- I meant to leave it out of the > >> last patchset because of the need to update all boards (which the patch > >> did not do). > > > > Sorry, I didn't get you. Could you please elaborate? > > It was intended to reduce U-Boot code size in cases where soft ECC is > not needed. However, the patch that introduced it did not update the > boards to select it when necessary, so it is being reverted for now. Okay, but it does not "hurt" to add this define to platforms using soft ECC right now, when such NAND driver related config options are updated? Or would you advise to remove it for now? Thanks, 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 03/02/2012 07:44 AM, Stefan Roese wrote: > Hi Scott, > > On Wednesday 29 February 2012 19:03:20 Scott Wood wrote: >>>>> You also need the following define for this to work with the latest >>>>> NAND subsystem: >>>>> >>>>> #define CONFIG_MTD_ECC_SOFT >>>>> >>>>> Not sure about SPEAr3xx. Most likely this needs it as well. >>>> >>>> This is going to be reverted for now -- I meant to leave it out of the >>>> last patchset because of the need to update all boards (which the patch >>>> did not do). >>> >>> Sorry, I didn't get you. Could you please elaborate? >> >> It was intended to reduce U-Boot code size in cases where soft ECC is >> not needed. However, the patch that introduced it did not update the >> boards to select it when necessary, so it is being reverted for now. > > Okay, but it does not "hurt" to add this define to platforms using soft ECC > right now, when such NAND driver related config options are updated? Or would > you advise to remove it for now? It doesn't hurt, other than that you're defining an undocumented option, assuming someone actually does put the effort into identifying the affected boards soon (or implementing some sort of transition mechanism), so that it doesn't just sit around forever without being used. -Scott
diff --git a/arch/arm/include/asm/arch-spear/hardware.h b/arch/arm/include/asm/arch-spear/hardware.h index 818f36c..a6517b2 100644 --- a/arch/arm/include/asm/arch-spear/hardware.h +++ b/arch/arm/include/asm/arch-spear/hardware.h @@ -37,15 +37,15 @@ #if defined(CONFIG_SPEAR600) #define CONFIG_SYS_I2C_BASE (0xD0200000) -#define CONFIG_SPEAR_FSMCBASE (0xD1800000) +#define CONFIG_SYS_FSMC_BASE (0xD1800000) #elif defined(CONFIG_SPEAR300) #define CONFIG_SYS_I2C_BASE (0xD0180000) -#define CONFIG_SPEAR_FSMCBASE (0x94000000) +#define CONFIG_SYS_FSMC_BASE (0x94000000) #elif defined(CONFIG_SPEAR310) #define CONFIG_SYS_I2C_BASE (0xD0180000) -#define CONFIG_SPEAR_FSMCBASE (0x44000000) +#define CONFIG_SYS_FSMC_BASE (0x44000000) #undef CONFIG_SYS_NAND_CLE #undef CONFIG_SYS_NAND_ALE @@ -57,7 +57,7 @@ #elif defined(CONFIG_SPEAR320) #define CONFIG_SYS_I2C_BASE (0xD0180000) -#define CONFIG_SPEAR_FSMCBASE (0x4C000000) +#define CONFIG_SYS_FSMC_BASE (0x4C000000) #define CONFIG_SPEAR_EMIBASE (0x40000000) #define CONFIG_SPEAR_RASBASE (0xB3000000) diff --git a/board/spear/spear300/spear300.c b/board/spear/spear300/spear300.c index 60ee544..32bcb77 100644 --- a/board/spear/spear300/spear300.c +++ b/board/spear/spear300/spear300.c @@ -24,10 +24,10 @@ #include <common.h> #include <nand.h> #include <asm/io.h> +#include <linux/mtd/fsmc_nand.h> #include <asm/arch/hardware.h> #include <asm/arch/spr_defs.h> #include <asm/arch/spr_misc.h> -#include <asm/arch/spr_nand.h> int board_init(void) { @@ -46,13 +46,14 @@ int board_nand_init(struct nand_chip *nand) struct misc_regs *const misc_regs_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; +#if defined(CONFIG_NAND_FSMC) if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == MISC_SOCCFG30) || ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == MISC_SOCCFG31)) { - return spear_nand_init(nand); + return fsmc_nand_init(nand); } - +#endif return -1; } diff --git a/board/spear/spear310/spear310.c b/board/spear/spear310/spear310.c index 03dfe16..8b58218 100644 --- a/board/spear/spear310/spear310.c +++ b/board/spear/spear310/spear310.c @@ -25,10 +25,10 @@ #include <common.h> #include <nand.h> #include <asm/io.h> +#include <linux/mtd/fsmc_nand.h> #include <asm/arch/hardware.h> #include <asm/arch/spr_defs.h> #include <asm/arch/spr_misc.h> -#include <asm/arch/spr_nand.h> int board_init(void) { @@ -47,13 +47,14 @@ int board_nand_init(struct nand_chip *nand) struct misc_regs *const misc_regs_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; +#if defined(CONFIG_NAND_FSMC) if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == MISC_SOCCFG30) || ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == MISC_SOCCFG31)) { - return spear_nand_init(nand); + return fsmc_nand_init(nand); } - +#endif return -1; } diff --git a/board/spear/spear320/spear320.c b/board/spear/spear320/spear320.c index 2ba2dbb..172ad35 100644 --- a/board/spear/spear320/spear320.c +++ b/board/spear/spear320/spear320.c @@ -25,10 +25,10 @@ #include <common.h> #include <nand.h> #include <asm/io.h> +#include <linux/mtd/fsmc_nand.h> #include <asm/arch/hardware.h> #include <asm/arch/spr_defs.h> #include <asm/arch/spr_misc.h> -#include <asm/arch/spr_nand.h> int board_init(void) { @@ -47,13 +47,14 @@ int board_nand_init(struct nand_chip *nand) struct misc_regs *const misc_regs_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; +#if defined(CONFIG_NAND_FSMC) if (((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == MISC_SOCCFG30) || ((readl(&misc_regs_p->auto_cfg_reg) & MISC_SOCCFGMSK) == MISC_SOCCFG31)) { - return spear_nand_init(nand); + return fsmc_nand_init(nand); } - +#endif return -1; } diff --git a/board/spear/spear600/spear600.c b/board/spear/spear600/spear600.c index eef9a37..7cf63d6 100644 --- a/board/spear/spear600/spear600.c +++ b/board/spear/spear600/spear600.c @@ -24,10 +24,10 @@ #include <common.h> #include <nand.h> #include <asm/io.h> +#include <linux/mtd/fsmc_nand.h> #include <asm/arch/hardware.h> #include <asm/arch/spr_defs.h> #include <asm/arch/spr_misc.h> -#include <asm/arch/spr_nand.h> int board_init(void) { @@ -46,8 +46,9 @@ int board_nand_init(struct nand_chip *nand) struct misc_regs *const misc_regs_p = (struct misc_regs *)CONFIG_SPEAR_MISCBASE; +#if defined(CONFIG_NAND_FSMC) if (!(readl(&misc_regs_p->auto_cfg_reg) & MISC_NANDDIS)) - return spear_nand_init(nand); - + return fsmc_nand_init(nand); +#endif return -1; } diff --git a/include/configs/spear-common.h b/include/configs/spear-common.h index 516b78e..c37305f 100644 --- a/include/configs/spear-common.h +++ b/include/configs/spear-common.h @@ -90,7 +90,7 @@ /* NAND FLASH Configuration */ #define CONFIG_MTD_DEVICE #define CONFIG_MTD_PARTITIONS -#define CONFIG_NAND_SPEAR 1 +#define CONFIG_NAND_FSMC #define CONFIG_SYS_MAX_NAND_DEVICE 1 #define CONFIG_MTD_NAND_VERIFY_WRITE diff --git a/include/configs/spear3xx.h b/include/configs/spear3xx.h index bd5d111..5bdd874 100644 --- a/include/configs/spear3xx.h +++ b/include/configs/spear3xx.h @@ -117,6 +117,10 @@ #endif +/* NAND flash configuration */ +#define CONFIG_SYS_FSMC_NAND_SP +#define CONFIG_SYS_FSMC_NAND_8BIT + #if defined(CONFIG_SPEAR300) #define CONFIG_SYS_NAND_BASE 0x80000000 diff --git a/include/configs/spear6xx.h b/include/configs/spear6xx.h index 8de7ebd..1e06c72 100644 --- a/include/configs/spear6xx.h +++ b/include/configs/spear6xx.h @@ -38,6 +38,9 @@ #define CONFIG_PL01x_PORTS { (void *)CONFIG_SYS_SERIAL0, \ (void *)CONFIG_SYS_SERIAL1 } +/* NAND flash configuration */ +#define CONFIG_SYS_FSMC_NAND_SP +#define CONFIG_SYS_FSMC_NAND_8BIT #define CONFIG_SYS_NAND_BASE (0xD2000000) #endif /* __CONFIG_H */