[U-Boot] [PATCHv3 13/17] arm: socfpga: spl: add board_init_f to SPL

Dinh Nguyen dinguyen at opensource.altera.com
Tue Apr 7 16:34:13 CEST 2015


On Fri, 3 Apr 2015, Marek Vasut wrote:

> On Tuesday, March 31, 2015 at 11:07:57 PM, Pavel Machek wrote:
> > Hi!
> > 
> > On Mon 2015-03-30 17:01:14, dinguyen at opensource.altera.com wrote:
> > > From: Dinh Nguyen <dinguyen at opensource.altera.com>
> > > 
> > > Remap SDRAM to 0x0, and clear OCRAM's ECC in board_init_f().
> > > 
> > > Signed-off-by: Dinh Nguyen <dinguyen at opensource.altera.com>
> > > Reviewed-by: Marek Vasut <marex at denx.de>
> > > ---
> > > v3: Move the code from s_init to board_init_f
> > > ---
> > > 
> > >  arch/arm/cpu/armv7/socfpga/spl.c | 30 ++++++++++++++++++++++++++++++
> > >  1 file changed, 30 insertions(+)
> > > 
> > > diff --git a/arch/arm/cpu/armv7/socfpga/spl.c
> > > b/arch/arm/cpu/armv7/socfpga/spl.c index a008eac..f2d3f79 100644
> > > --- a/arch/arm/cpu/armv7/socfpga/spl.c
> > > +++ b/arch/arm/cpu/armv7/socfpga/spl.c
> > > @@ -6,6 +6,7 @@
> > > 
> > >  #include <common.h>
> > >  #include <asm/io.h>
> > > 
> > > +#include <asm/pl310.h>
> > > 
> > >  #include <asm/u-boot.h>
> > >  #include <asm/utils.h>
> > >  #include <image.h>
> > > 
> > > @@ -19,6 +20,9 @@
> > > 
> > >  DECLARE_GLOBAL_DATA_PTR;
> > > 
> > > +static struct pl310_regs *const pl310 =
> > > +	(struct pl310_regs *)CONFIG_SYS_PL310_BASE;
> > > +
> > > 
> > >  #define MAIN_VCO_BASE (					\
> > >  
> > >  	(CONFIG_HPS_MAINPLLGRP_VCO_DENOM <<		\
> > >  	
> > >  		CLKMGR_MAINPLLGRP_VCO_DENOM_OFFSET) |	\
> > > 
> > > @@ -44,6 +48,32 @@ DECLARE_GLOBAL_DATA_PTR;
> > > 
> > >  		CLKMGR_SDRPLLGRP_VCO_NUMER_OFFSET)	\
> > >  	
> > >  	)
> > > 
> > > +void board_init_f(ulong dummy)
> > > +{
> > > +#ifdef CONFIG_SPL_BUILD
> > 
> > I don't get it. File is called spl.c, still it has ifdefs for
> > CONFIG_SPL_BUILD?
> 
> Yeah, this shouldn't be here. In case spl.c would be compiled
> into regular u-boot build, this board_init_f symbol would colide
> with the board_init_f implemented by common/board_f.c
>

Will fix in V4.
 
> > > +	struct socfpga_system_manager *sysmgr_regs =
> > > +		(struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
> > > +	unsigned long reg;
> > > +	/*
> > > +	 * First C code to run. Clear fake OCRAM ECC first as SBE
> > > +	 * and DBE might triggered during power on
> > > +	 */
> > > +	reg = readl(&sysmgr_regs->eccgrp_ocram);
> > > +	if (reg & SYSMGR_ECC_OCRAM_SERR)
> > > +		writel(SYSMGR_ECC_OCRAM_SERR | SYSMGR_ECC_OCRAM_EN,
> > > +		       &sysmgr_regs->eccgrp_ocram);
> > > +	if (reg & SYSMGR_ECC_OCRAM_DERR)
> > > +		writel(SYSMGR_ECC_OCRAM_DERR  | SYSMGR_ECC_OCRAM_EN,
> > > +		       &sysmgr_regs->eccgrp_ocram);
> > > +#endif  /* CONFIG_SPL_BUILD */
> > > +
> > > +	memset(__bss_start, 0, __bss_end - __bss_start);
> > 
> > Add a comment below?
> > 
> >   	/* Remap SDRAM to 0x0 */
> > 

I'll add to V4.

BR,
Dinh


More information about the U-Boot mailing list