ARM: tegra: Initialize timer earlier
authorThierry Reding <treding@nvidia.com>
Tue, 28 Jul 2015 09:35:53 +0000 (11:35 +0200)
committerTom Warren <twarren@nvidia.com>
Tue, 28 Jul 2015 17:30:18 +0000 (10:30 -0700)
A subsequent patch will enable the use of the architected timer on
ARMv8. Doing so implies that udelay() will be backed by this timer
implementation, and hence the architected timer must be ready when
udelay() is first called. The first time udelay() is used is while
resetting the debug UART, which happens very early. Make sure that
arch_timer_init() is called before that.

Signed-off-by: Thierry Reding <treding@nvidia.com>
Acked-by: Stephen Warren <swarren@nvidia.com>
Signed-off-by: Tom Warren <twarren@nvidia.com>
arch/arm/mach-tegra/board2.c
arch/arm/mach-tegra/clock.c

index e0d8687cbcface59f107f1d1a11157824ba6e34f..36bcfb04c02149ae7b21cf9972c013ed1521e92b 100644 (file)
@@ -196,6 +196,12 @@ void gpio_early_init(void) __attribute__((weak, alias("__gpio_early_init")));
 
 int board_early_init_f(void)
 {
+       /* Do any special system timer/TSC setup */
+#if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
+       if (!tegra_cpu_is_non_secure())
+#endif
+               arch_timer_init();
+
        pinmux_init();
        board_init_uart_f();
 
index 24047b8c82f0c0efe5b084535bd492e9c8b2d4ff..5c963d372f95b3500db5684d2bcf3a50b045197f 100644 (file)
@@ -608,12 +608,6 @@ void clock_init(void)
        debug("PLLC = %d\n", pll_rate[CLOCK_ID_CGENERAL]);
        debug("PLLD = %d\n", pll_rate[CLOCK_ID_DISPLAY]);
        debug("PLLX = %d\n", pll_rate[CLOCK_ID_XCPU]);
-
-       /* Do any special system timer/TSC setup */
-#if defined(CONFIG_TEGRA_SUPPORT_NON_SECURE)
-       if (!tegra_cpu_is_non_secure())
-#endif
-               arch_timer_init();
 }
 
 static void set_avp_clock_source(u32 src)