summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-socfpga/clock_manager_arria10.c
diff options
context:
space:
mode:
authorMarek Vasut <marex@denx.de>2018-08-18 19:11:52 +0200
committerMarek Vasut <marex@denx.de>2018-08-24 12:05:20 +0200
commit0b8f6378cbf20e56f49a52a584c1374f11020cbf (patch)
treef17a402c5004f8ca4c8a50b642d0b52b79a07c3d /arch/arm/mach-socfpga/clock_manager_arria10.c
parent8497cb9b25302e75a4422502c9d13d310ffbcfd2 (diff)
downloadu-boot-0b8f6378cbf20e56f49a52a584c1374f11020cbf.tar.gz
u-boot-0b8f6378cbf20e56f49a52a584c1374f11020cbf.tar.xz
u-boot-0b8f6378cbf20e56f49a52a584c1374f11020cbf.zip
ARM: socfpga: Reorder Arria10 SPL
The Arria10 SPL is a complete mess of calls to functions which are called in the wrong context and it is surprise it works at all. This patch tries to clean that mess up by shuffling the function calls around and moving the calls into the correct context. Due to the delicate nature of the reordering, this is done in one huge patch. The following changes happen in this patch: - Security policy init and NIC301 happens first in board_init_f() - The clock init happens very early in board_init_f() in SPL only - arch_early_init_r() only registers the FPGA, just like on Gen5 - arch_early_init_r() is never called from any _f() function - Dedicated FPGA pins are inited in board_init_f() as on Gen5 Signed-off-by: Marek Vasut <marex@denx.de> Cc: Chin Liang See <chin.liang.see@intel.com> Cc: Dinh Nguyen <dinguyen@kernel.org> Cc: Ley Foon Tan <ley.foon.tan@intel.com>
Diffstat (limited to 'arch/arm/mach-socfpga/clock_manager_arria10.c')
-rw-r--r--arch/arm/mach-socfpga/clock_manager_arria10.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/arch/arm/mach-socfpga/clock_manager_arria10.c b/arch/arm/mach-socfpga/clock_manager_arria10.c
index 1b4052cd37..334a79fd9c 100644
--- a/arch/arm/mach-socfpga/clock_manager_arria10.c
+++ b/arch/arm/mach-socfpga/clock_manager_arria10.c
@@ -11,8 +11,7 @@
#include <dm/device-internal.h>
#include <asm/arch/clock_manager.h>
-static const struct socfpga_clock_manager *clock_manager_base =
- (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
+#ifdef CONFIG_SPL_BUILD
static u32 eosc1_hz;
static u32 cb_intosc_hz;
@@ -232,6 +231,9 @@ static int of_get_clk_cfg(const void *blob, struct mainpll_cfg *main_cfg,
return 0;
}
+static const struct socfpga_clock_manager *clock_manager_base =
+ (struct socfpga_clock_manager *)SOCFPGA_CLKMGR_ADDRESS;
+
/* calculate the intended main VCO frequency based on handoff */
static unsigned int cm_calc_handoff_main_vco_clk_hz
(struct mainpll_cfg *main_cfg)
@@ -897,7 +899,7 @@ static int cm_full_cfg(struct mainpll_cfg *main_cfg, struct perpll_cfg *per_cfg)
return 0;
}
-void cm_use_intosc(void)
+static void cm_use_intosc(void)
{
setbits_le32(&clock_manager_base->ctrl,
CLKMGR_CLKMGR_CTL_BOOTCLK_INTOSC_SET_MSK);
@@ -917,8 +919,11 @@ int cm_basic_init(const void *blob)
if (rval)
return rval;
+ cm_use_intosc();
+
return cm_full_cfg(&main_cfg, &per_cfg);
}
+#endif
static u32 cm_get_rate_dm(char *name)
{