On 07/27/2017 11:21 AM, Chee, Tien Fong wrote: > On Kha, 2017-07-27 at 10:21 +0200, Marek Vasut wrote: >> On 07/27/2017 06:36 AM, tien.fong.c...@intel.com wrote: >>> >>> From: Tien Fong Chee <tien.fong.c...@intel.com> >>> >>> Remove unused FPGA feature for saving some space in gen5 SPL. >> I really dislike the ifdefery. Why is this patch even needed? >> I thought we had no space problems in the Gen5 SPL? >> > I can remove those codes within ifdefery because they are no longer > required.
Why ? > I keep them here just for one day we can use if we need to. > Do you remember we have consent to clean up those useless codes for > SPL, all fpga related drivers will be moved into one driver location. No, sorry. >>> >>> Signed-off-by: Tien Fong Chee <tien.fong.c...@intel.com> >>> --- >>> arch/arm/mach-socfpga/reset_manager_gen5.c | 9 +++++++++ >>> arch/arm/mach-socfpga/system_manager_gen5.c | 6 ------ >>> drivers/ddr/altera/sdram.c | 8 +++++++- >>> 3 files changed, 16 insertions(+), 7 deletions(-) >>> >>> diff --git a/arch/arm/mach-socfpga/reset_manager_gen5.c >>> b/arch/arm/mach-socfpga/reset_manager_gen5.c >>> index aa88adb..c954063 100644 >>> --- a/arch/arm/mach-socfpga/reset_manager_gen5.c >>> +++ b/arch/arm/mach-socfpga/reset_manager_gen5.c >>> @@ -97,6 +97,14 @@ void socfpga_bridges_reset(int enable) >>> writel(0, &sysmgr_regs->iswgrp_handoff[0]); >>> writel(l3mask, &sysmgr_regs->iswgrp_handoff[1]); >>> >>> +/* >>> + * FPGA feature is not required in SPL, so FPGA bridges release >>> from reset >>> + * should not be supported in SPL, but some FPGA releated setting >>> can be stored >>> + * in handoff registers as SPL to U-boot/OS handoff information. >>> These >>> + * handoff information can be used in later phase such as feeding >>> handoff >>> + * information to bridge command when user want to enable FPGA >>> feature in U-boot >>> + */ >>> +#ifndef CONFIG_SPL_BUILD >>> /* Check signal from FPGA. */ >>> if (!fpgamgr_test_fpga_ready()) { >>> /* FPGA not ready, do nothing. We allow >>> system to boot >>> @@ -110,6 +118,7 @@ void socfpga_bridges_reset(int enable) >>> >>> /* Remap the bridges into memory map */ >>> writel(l3mask, SOCFPGA_L3REGS_ADDRESS); >> I believe the L3REGS needs to be programmed on Gen5. >> > Yes, this is done when calling command "bridge > enable". iswgrp_handoff[1] contains l3mask, which will be written > into SOCFPGA_L3REGS_ADDRESS. I think this needs to be done earlier, otherwise the first 1 MiB or so of DRAM isn't accessible. > Snippet from misc_gen5.c: > int do_bridge(cmd_tbl_t *cmdtp, int flag, int argc, char * const > argv[]) > { > if (argc != 2) > return CMD_RET_USAGE; > > argv++; > > switch (*argv[0]) { > case 'e': /* Enable */ > writel(iswgrp_handoff[2], &sysmgr_regs- >> fpgaintfgrp_module); > socfpga_sdram_apply_static_cfg(); > writel(iswgrp_handoff[3], &sdr_ctrl->fpgaport_rst); > writel(iswgrp_handoff[0], &reset_manager_base- >> brg_mod_reset); > writel(iswgrp_handoff[1], &nic301_regs->remap); > break; > >>> >>> +#endif >>> } >>> return; >>> } >>> diff --git a/arch/arm/mach-socfpga/system_manager_gen5.c >>> b/arch/arm/mach-socfpga/system_manager_gen5.c >>> index 3588a57..ee25496 100644 >>> --- a/arch/arm/mach-socfpga/system_manager_gen5.c >>> +++ b/arch/arm/mach-socfpga/system_manager_gen5.c >>> @@ -43,12 +43,6 @@ static void >>> populate_sysmgr_fpgaintf_module(void) >>> /* populate (not writing) the value for >>> SYSMGR.FPGAINTF.MODULE >>> based on pinmux setting */ >>> setbits_le32(&sysmgr_regs->iswgrp_handoff[2], >>> handoff_val); >>> - >>> - handoff_val = readl(&sysmgr_regs->iswgrp_handoff[2]); >>> - if (fpgamgr_test_fpga_ready()) { >>> - /* Enable the required signals only */ >>> - writel(handoff_val, &sysmgr_regs- >>>> fpgaintfgrp_module); >>> - } >>> } >>> >>> /* >>> diff --git a/drivers/ddr/altera/sdram.c >>> b/drivers/ddr/altera/sdram.c >>> index e74c5b0..df16102 100644 >>> --- a/drivers/ddr/altera/sdram.c >>> +++ b/drivers/ddr/altera/sdram.c >>> @@ -233,6 +233,7 @@ static void sdram_dump_protection_config(void) >>> } >>> } >>> >>> +#ifndef CONFIG_SPL_BUILD >>> /** >>> * sdram_write_verify() - write to register and verify the write. >>> * @addr: Register address >>> @@ -259,6 +260,7 @@ static unsigned sdram_write_verify(const u32 >>> *addr, const u32 val) >>> debug("correct!\n"); >>> return 0; >>> } >>> +#endif >>> >>> /** >>> * sdr_get_ctrlcfg() - Get the value of DRAM CTRLCFG register >>> @@ -435,7 +437,6 @@ int sdram_mmr_init_full(unsigned int >>> sdr_phy_reg) >>> const unsigned int rows = >>> (cfg->dram_addrw & >>> SDR_CTRLGRP_DRAMADDRW_ROWBITS_MASK) >> >>> SDR_CTRLGRP_DRAMADDRW_ROWBITS_LSB; >>> - int ret; >>> >>> writel(rows, &sysmgr_regs->iswgrp_handoff[4]); >>> >>> @@ -444,13 +445,18 @@ int sdram_mmr_init_full(unsigned int >>> sdr_phy_reg) >>> /* saving this value to SYSMGR.ISWGRP.HANDOFF.FPGA2SDR */ >>> writel(cfg->fpgaport_rst, &sysmgr_regs- >>>> iswgrp_handoff[3]); >>> >>> + /* FPGA feature is not required in SPL, so no test on FPGA >>> reset in SPL */ >>> +#ifndef CONFIG_SPL_BUILD >>> /* only enable if the FPGA is programmed */ >>> + int ret; >>> + >>> if (fpgamgr_test_fpga_ready()) { >>> ret = sdram_write_verify(&sdr_ctrl->fpgaport_rst, >>> cfg->fpgaport_rst); >>> if (ret) >>> return ret; >>> } >>> +#endif >>> >>> /* Restore the SDR PHY Register if valid */ >>> if (sdr_phy_reg != 0xffffffff) >>> -- Best regards, Marek Vasut _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot