ARM: Tegra: fix arch timer registration sequence
Varun Wadekar [Tue, 3 Jul 2012 12:00:10 +0000 (17:00 +0530)]
Change-Id: I94d4ab5c8d53e454bbd09b6ef2586b1baf69d456
Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Reviewed-on: http://git-master/r/113243
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Bo Yan <byan@nvidia.com>
Tested-by: Bo Yan <byan@nvidia.com>

Rebase-Id: Rd019e521e2e29eb875a4a1d0aff31b5d3eba2666

arch/arm/mach-tegra/clock.c
arch/arm/mach-tegra/timer.c
arch/arm/mach-tegra/timer.h

index ab167a2..01cd607 100644 (file)
@@ -706,11 +706,7 @@ void __init tegra_init_max_rate(struct clk *c, unsigned long max_rate)
 
 void __init tegra_common_init_clock(void)
 {
-#ifdef CONFIG_ARM_ARCH_TIMER
-       tegra_init_early_timer()
-#else
-       tegra_twd_init();
-#endif
+       tegra_cpu_timer_init();
 }
 
 static bool tegra_keep_boot_clocks = false;
index e7acbed..7f50881 100644 (file)
@@ -209,7 +209,7 @@ static DEFINE_TWD_LOCAL_TIMER(twd_local_timer,
                              IRQ_LOCALTIMER);
 static void __iomem *tegra_twd_base = IO_ADDRESS(TEGRA_ARM_PERIF_BASE + 0x600);
 
-void __init tegra_twd_init(void)
+void __init tegra_cpu_timer_init(void)
 {
        struct clk *cpu, *twd_clk;
        int ret;
@@ -267,15 +267,13 @@ void tegra_twd_resume(struct tegra_twd_context *context)
        writel(context->twd_ctrl, tegra_twd_base + TWD_TIMER_CONTROL);
 }
 
-static void __init tegra_init_late_twd(void)
+static void __init tegra_init_late_timer(void)
 {
        int err = twd_local_timer_register(&twd_local_timer);
        if (err)
                pr_err("twd_timer_register failed %d\n", err);
 }
 #else
-#define tegra_twd_init()       do {} while(0)
-static inline void tegra_init_late_twd(void) {}
 #define tegra_twd_get_state    do {} while(0)
 #define tegra_twd_suspend      do {} while(0)
 #define tegra_twd_resume       do {} while(0)
@@ -313,13 +311,13 @@ static int local_timer_is_architected(void)
 #endif
 }
 
-static int __init tegra_init_early_arch_timer(void)
+void __init tegra_cpu_timer_init(void)
 {
        u32 tsc_ref_freq;
        u32 reg;
 
        if (!local_timer_is_architected())
-               return -ENODEV;
+               return;
 
        tsc_ref_freq = tegra_clk_measure_input_freq();
        if (tsc_ref_freq == 115200 || tsc_ref_freq == 230400) {
@@ -347,7 +345,6 @@ static int __init tegra_init_early_arch_timer(void)
        reg = tsc_readl(TSC_CNTCR);
        reg |= TSC_CNTCR_ENABLE | TSC_CNTCR_HDBG;
        tsc_writel(reg, TSC_CNTCR);
-       return 0;
 }
 
 static void tegra_arch_timer_per_cpu_init(void)
@@ -437,7 +434,7 @@ static struct arch_timer tegra_arch_timer = {
        },
 };
 
-static int __init tegra_init_late_arch_timer(void)
+static void __init tegra_init_late_timer(void)
 {
        int err = -ENODEV;
 
@@ -447,7 +444,6 @@ static int __init tegra_init_late_arch_timer(void)
                        pr_err("%s: Unable to register arch timer: %d\n",
                             __func__, err);
        }
-       return err;
 }
 
 #ifdef CONFIG_PM_SLEEP
@@ -518,23 +514,10 @@ void tegra_tsc_wait_for_resume(void)
 #endif
 
 #else
-static inline int tegra_init_early_arch_timer(void) { return -ENODEV; }
 static inline int tegra_init_arch_timer(void) { return -ENODEV; }
 static inline int tegra_init_late_arch_timer(void) { return -ENODEV; }
 #endif
 
-void __init tegra_init_early_timer(void)
-{
-       if (tegra_init_early_arch_timer())
-               tegra_twd_init();
-}
-
-static void __init tegra_init_late_timer(void)
-{
-       if (tegra_init_late_arch_timer())
-               tegra_init_late_twd();
-}
-
 extern void __tegra_delay(unsigned long cycles);
 extern void __tegra_const_udelay(unsigned long loops);
 extern void __tegra_udelay(unsigned long usecs);
index c834492..8f76262 100644 (file)
@@ -47,13 +47,13 @@ struct tegra_twd_context {
        u32 twd_cnt;
 };
 
+void __init tegra_cpu_timer_init(void);
+
 #ifdef CONFIG_HAVE_ARM_TWD
-void __init tegra_twd_init(void);
 int tegra_twd_get_state(struct tegra_twd_context *context);
 void tegra_twd_suspend(struct tegra_twd_context *context);
 void tegra_twd_resume(struct tegra_twd_context *context);
 #else
-static inline void __init tegra_twd_init(void) {}
 static inline int tegra_twd_get_state(struct tegra_twd_context *context)
 { return -ENODEV; }
 static inline void tegra_twd_suspend(struct tegra_twd_context *context) {}