From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pavel Machek Date: Tue, 31 Mar 2015 23:07:57 +0200 Subject: [U-Boot] [PATCHv3 13/17] arm: socfpga: spl: add board_init_f to SPL In-Reply-To: <1427752878-18426-14-git-send-email-dinguyen@opensource.altera.com> References: <1427752878-18426-1-git-send-email-dinguyen@opensource.altera.com> <1427752878-18426-14-git-send-email-dinguyen@opensource.altera.com> Message-ID: <20150331210757.GD9785@amd> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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? > + 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); > + -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html