From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chee, Tien Fong Date: Tue, 24 Oct 2017 05:34:46 +0000 Subject: [U-Boot] [PATCH v3 19/20] arm: socfpga: Enable DDR working In-Reply-To: <9833762a-4278-8cfc-177f-aa0ac41659f7@kernel.org> References: <1507882137-27841-1-git-send-email-tien.fong.chee@intel.com> <1507882137-27841-20-git-send-email-tien.fong.chee@intel.com> <9833762a-4278-8cfc-177f-aa0ac41659f7@kernel.org> Message-ID: <1508823284.2221.4.camel@intel.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit To: u-boot@lists.denx.de On Jum, 2017-10-20 at 10:11 -0500, Dinh Nguyen wrote: > Please update your commit header. > > On 10/13/2017 03:08 AM, tien.fong.chee at intel.com wrote: > > > > From: Tien Fong Chee > > > > SPL configures DDR by programming peripheral raw binary file > > and calibrating DDR. > > > > Signed-off-by: Tien Fong Chee > > --- > >  arch/arm/mach-socfpga/spl.c | 56 > > +++++++++++++++++++++++++++++++++++++++++++++ > >  1 file changed, 56 insertions(+) > > > > diff --git a/arch/arm/mach-socfpga/spl.c b/arch/arm/mach- > > socfpga/spl.c > > index aba116d..6c9bf81 100644 > > --- a/arch/arm/mach-socfpga/spl.c > > +++ b/arch/arm/mach-socfpga/spl.c > > @@ -15,6 +15,7 @@ > >  #include > >  #include > >  #include > > +#include > >  #include > >  #include > >  #include > > @@ -22,6 +23,10 @@ > >  #include > >  #include > >  #include > > +#include > > +#include > > +#include > > +#include > >  #include > >  #if defined(CONFIG_TARGET_SOCFPGA_ARRIA10) > >  #include > > @@ -29,6 +34,9 @@ > >   > >  DECLARE_GLOBAL_DATA_PTR; > >   > > +#define BSIZE 4096 > > +#define PERIPH_RBF 0 > > + > >  #if defined(CONFIG_TARGET_SOCFPGA_GEN5) > >  static struct pl310_regs *const pl310 = > >   (struct pl310_regs *)CONFIG_SYS_PL310_BASE; > > @@ -197,6 +205,12 @@ void board_init_f(ulong dummy) > >  #elif defined(CONFIG_TARGET_SOCFPGA_ARRIA10) > >  void spl_board_init(void) > >  { > > + int rval = 0; > > + int len = 0; > > + u32 buffer[BSIZE] __aligned(ARCH_DMA_MINALIGN); > > + struct spl_boot_device bootdev; > > + fpga_fs_info fpga_fsinfo; > > + > >   /* configuring the clock based on handoff */ > >   cm_basic_init(gd->fdt_blob); > >   WATCHDOG_RESET(); > > @@ -214,6 +228,48 @@ void spl_board_init(void) > >   > >   /* Add device descriptor to FPGA device table */ > >   socfpga_fpga_add(); > > + > > + bootdev.boot_device = spl_boot_device(); > > + > > + if (BOOT_DEVICE_MMC1 == bootdev.boot_device) { > > + struct mmc *mmc = NULL; > > + int err = 0; > > + > > + spl_mmc_find_device(&mmc, bootdev.boot_device); > > + > > + err = mmc_init(mmc); > > + > > + if (err) { > > +#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT > > + printf("spl: mmc init failed with error: > > %d\n", err); > You should use puts instead of printf. But this case use error()? Why > do > you need to wrap this around CONFIG_SPL_LIBCOMMON_SUPPORT? > I copied this block of code from /common/spl_mmc.c, so i keep everything intact. But, i tried to track back the reason of wrapping around with CONFIG_SPL_LIBCOMMON_SUPPORT, this is what i found "If we don't have CONFIG_SPL_LIBCOMMON_SUPPORT defined then stdio functions are unavailable & calling them will cause a link failure." https://lists.denx.de/pipermail/u-boot/2013-September/161969.html > > > > +#endif > > + return; > > + } > > + > > + fpga_fsinfo.interface = "mmc"; > > + fpga_fsinfo.fstype = FS_TYPE_FAT; > > + } > > + > > + fpga_fsinfo.dev_part = (char *)get_cff_devpart(gd- > > >fdt_blob, > > + &len); > > + > > + fpga_fsinfo.filename = (char *)get_cff_filename(gd- > > >fdt_blob, > > +  &len, > > +  PERIPH_RB > > F); > > + > > + /* Program peripheral RBF */ > > + if (fpga_fsinfo.filename) > > + rval = fpga_fsload(0, buffer, BSIZE, > > &fpga_fsinfo); > > + else { > > + printf("Failed to find peripheral RBF file from > > DTS\n"); > Use error()? > Okay. > Dinh