clocksource: exynos_mct: remove platform header dependency
authorArnd Bergmann <arnd@arndb.de>
Wed, 10 Apr 2013 09:35:29 +0000 (11:35 +0200)
committerArnd Bergmann <arnd@arndb.de>
Fri, 19 Apr 2013 21:00:38 +0000 (23:00 +0200)
For the non-DT case, the mct_init() function requires access
to a couple of platform specific constants, but cannot include
the header files in case we are building for multiplatform.

This changes the interface to the platform so we pass all
the necessary data as arguments to mct_init.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: John Stultz <john.stultz@linaro.org>
arch/arm/mach-exynos/common.c
arch/arm/mach-exynos/common.h
drivers/clocksource/exynos_mct.c

index c3167b74118043230ef49488eb646baf3c02f91e..a453991ce90bbf6c385fd38a8d960ff4dcbb8d91 100644 (file)
@@ -416,7 +416,7 @@ void __init exynos_init_time(void)
                exynos4_clk_init(NULL, !soc_is_exynos4210(), S5P_VA_CMU, readl(S5P_VA_CHIPID + 8) & 1);
                exynos4_clk_register_fixed_ext(xxti_f, xusbxti_f);
 #endif
-               mct_init();
+               mct_init(S5P_VA_SYSTIMER, EXYNOS4_IRQ_MCT_G0, EXYNOS4_IRQ_MCT_L0, EXYNOS4_IRQ_MCT_L1);
        }
 }
 
index 4ed8eef2b09639c328f9601120d54c126de4f9f7..9717d0f6088f29c97edca390c9138aa3ba28b398 100644 (file)
@@ -14,7 +14,7 @@
 
 #include <linux/of.h>
 
-extern void mct_init(void);
+void mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1);
 void exynos_init_time(void);
 extern unsigned long xxti_f, xusbxti_f;
 
index 661026834b23df3643175d43f4166e182d11edbb..a6ca0fb0693985c843434a18b18ba98aa5327ee3 100644 (file)
 
 #include <asm/arch_timer.h>
 #include <asm/localtimer.h>
-
-#include <plat/cpu.h>
-
-#include <mach/map.h>
-#include <mach/irqs.h>
 #include <asm/mach/time.h>
 
 #define EXYNOS4_MCTREG(x)              (x)
@@ -511,18 +506,14 @@ static void __init exynos4_timer_resources(struct device_node *np, void __iomem
 #endif /* CONFIG_LOCAL_TIMERS */
 }
 
-void __init mct_init(void)
+void __init mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1)
 {
-       if (soc_is_exynos4210()) {
-               mct_irqs[MCT_G0_IRQ] = EXYNOS4_IRQ_MCT_G0;
-               mct_irqs[MCT_L0_IRQ] = EXYNOS4_IRQ_MCT_L0;
-               mct_irqs[MCT_L1_IRQ] = EXYNOS4_IRQ_MCT_L1;
-               mct_int_type = MCT_INT_SPI;
-       } else {
-               panic("unable to determine mct controller type\n");
-       }
+       mct_irqs[MCT_G0_IRQ] = irq_g0;
+       mct_irqs[MCT_L0_IRQ] = irq_l0;
+       mct_irqs[MCT_L1_IRQ] = irq_l1;
+       mct_int_type = MCT_INT_SPI;
 
-       exynos4_timer_resources(NULL, S5P_VA_SYSTIMER);
+       exynos4_timer_resources(NULL, base);
        exynos4_clocksource_init();
        exynos4_clockevent_init();
 }