summaryrefslogtreecommitdiff
path: root/arch/arm/cpu
diff options
context:
space:
mode:
authorRuss Dill <russ.dill@ti.com>2016-05-05 08:52:10 -0500
committerTom Rini <trini@konsulko.com>2016-05-06 10:10:20 -0400
commitb67d6b003cfdaf04335c3aaca3b27f15e7c6f204 (patch)
tree18994c061acca80e355b833bfab5e3edecbb5cec /arch/arm/cpu
parent116611937faab3a0b2adf4db612aeb4cf1391941 (diff)
downloadu-boot-imx-b67d6b003cfdaf04335c3aaca3b27f15e7c6f204.zip
u-boot-imx-b67d6b003cfdaf04335c3aaca3b27f15e7c6f204.tar.gz
u-boot-imx-b67d6b003cfdaf04335c3aaca3b27f15e7c6f204.tar.bz2
ARM: am33xx: Fix DDR initialization delays
The current delays in the DDR initialization routines for am33xx architectures are sometimes not running long enough leading to DDR init errors. On am437x, this shows up as an L3 NOC error after the kernel boots. This is due to the timer not being initialized properly, but instead still containing the timer init values from the boot ROM which cause timers to expire in 1/4th the time required. timer_init is typically not called until board_init_r, however on am33xx/am43xx udelay is required in sdram_init which is called from board_init_f, so a call to timer_init is required earlier. Note that this issue introduced in v2015.01 by: b352dde "am33xx: Drop timer_init call from s_init". Although this could instead fixed by reverting said commit, it would cause timer_init to be called twice in both SPL and non-SPL cases. This gives a little more fine grained control and also matches what is being done on omap-command and fsl-layerscape. Signed-off-by: Russ Dill <russ.dill@ti.com>
Diffstat (limited to 'arch/arm/cpu')
-rw-r--r--arch/arm/cpu/armv7/am33xx/clock.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/arm/cpu/armv7/am33xx/clock.c b/arch/arm/cpu/armv7/am33xx/clock.c
index 595c951..9b9b78e 100644
--- a/arch/arm/cpu/armv7/am33xx/clock.c
+++ b/arch/arm/cpu/armv7/am33xx/clock.c
@@ -237,4 +237,5 @@ void prcm_init()
enable_basic_clocks();
scale_vcores();
setup_dplls();
+ timer_init();
}