From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marek Vasut Date: Fri, 3 Apr 2015 03:52:28 +0200 Subject: [U-Boot] [PATCHv3 13/17] arm: socfpga: spl: add board_init_f to SPL In-Reply-To: <20150331210757.GD9785@amd> References: <1427752878-18426-1-git-send-email-dinguyen@opensource.altera.com> <1427752878-18426-14-git-send-email-dinguyen@opensource.altera.com> <20150331210757.GD9785@amd> Message-ID: <201504030352.29038.marex@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 > > > > Remap SDRAM to 0x0, and clear OCRAM's ECC in board_init_f(). > > > > Signed-off-by: Dinh Nguyen > > Reviewed-by: Marek Vasut > > --- > > 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 > > #include > > > > +#include > > > > #include > > #include > > #include > > > > @@ -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 > > + 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 */ > > > + > > + writel(0x1, &pl310->pl310_addr_filter_start); > > +