aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2013-04-10 05:35:29 -0400
committerArnd Bergmann <arnd@arndb.de>2013-04-19 17:00:38 -0400
commit034c097ca27fb163754ee4f4e26f85559bece69b (patch)
treea2ddc86bd59cb394ecd08ff1c0f23018af0c37e1
parent25e56eba0ae783fc5b66d50c68826f276e8bd8c6 (diff)
clocksource: exynos_mct: remove platform header dependency
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>
-rw-r--r--arch/arm/mach-exynos/common.c2
-rw-r--r--arch/arm/mach-exynos/common.h2
-rw-r--r--drivers/clocksource/exynos_mct.c21
3 files changed, 8 insertions, 17 deletions
diff --git a/arch/arm/mach-exynos/common.c b/arch/arm/mach-exynos/common.c
index c3167b741180..a453991ce90b 100644
--- a/arch/arm/mach-exynos/common.c
+++ b/arch/arm/mach-exynos/common.c
@@ -416,7 +416,7 @@ void __init exynos_init_time(void)
416 exynos4_clk_init(NULL, !soc_is_exynos4210(), S5P_VA_CMU, readl(S5P_VA_CHIPID + 8) & 1); 416 exynos4_clk_init(NULL, !soc_is_exynos4210(), S5P_VA_CMU, readl(S5P_VA_CHIPID + 8) & 1);
417 exynos4_clk_register_fixed_ext(xxti_f, xusbxti_f); 417 exynos4_clk_register_fixed_ext(xxti_f, xusbxti_f);
418#endif 418#endif
419 mct_init(); 419 mct_init(S5P_VA_SYSTIMER, EXYNOS4_IRQ_MCT_G0, EXYNOS4_IRQ_MCT_L0, EXYNOS4_IRQ_MCT_L1);
420 } 420 }
421} 421}
422 422
diff --git a/arch/arm/mach-exynos/common.h b/arch/arm/mach-exynos/common.h
index 4ed8eef2b096..9717d0f6088f 100644
--- a/arch/arm/mach-exynos/common.h
+++ b/arch/arm/mach-exynos/common.h
@@ -14,7 +14,7 @@
14 14
15#include <linux/of.h> 15#include <linux/of.h>
16 16
17extern void mct_init(void); 17void mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1);
18void exynos_init_time(void); 18void exynos_init_time(void);
19extern unsigned long xxti_f, xusbxti_f; 19extern unsigned long xxti_f, xusbxti_f;
20 20
diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c
index 661026834b23..a6ca0fb06939 100644
--- a/drivers/clocksource/exynos_mct.c
+++ b/drivers/clocksource/exynos_mct.c
@@ -26,11 +26,6 @@
26 26
27#include <asm/arch_timer.h> 27#include <asm/arch_timer.h>
28#include <asm/localtimer.h> 28#include <asm/localtimer.h>
29
30#include <plat/cpu.h>
31
32#include <mach/map.h>
33#include <mach/irqs.h>
34#include <asm/mach/time.h> 29#include <asm/mach/time.h>
35 30
36#define EXYNOS4_MCTREG(x) (x) 31#define EXYNOS4_MCTREG(x) (x)
@@ -511,18 +506,14 @@ static void __init exynos4_timer_resources(struct device_node *np, void __iomem
511#endif /* CONFIG_LOCAL_TIMERS */ 506#endif /* CONFIG_LOCAL_TIMERS */
512} 507}
513 508
514void __init mct_init(void) 509void __init mct_init(void __iomem *base, int irq_g0, int irq_l0, int irq_l1)
515{ 510{
516 if (soc_is_exynos4210()) { 511 mct_irqs[MCT_G0_IRQ] = irq_g0;
517 mct_irqs[MCT_G0_IRQ] = EXYNOS4_IRQ_MCT_G0; 512 mct_irqs[MCT_L0_IRQ] = irq_l0;
518 mct_irqs[MCT_L0_IRQ] = EXYNOS4_IRQ_MCT_L0; 513 mct_irqs[MCT_L1_IRQ] = irq_l1;
519 mct_irqs[MCT_L1_IRQ] = EXYNOS4_IRQ_MCT_L1; 514 mct_int_type = MCT_INT_SPI;
520 mct_int_type = MCT_INT_SPI;
521 } else {
522 panic("unable to determine mct controller type\n");
523 }
524 515
525 exynos4_timer_resources(NULL, S5P_VA_SYSTIMER); 516 exynos4_timer_resources(NULL, base);
526 exynos4_clocksource_init(); 517 exynos4_clocksource_init();
527 exynos4_clockevent_init(); 518 exynos4_clockevent_init();
528} 519}