aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-ux500
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2013-11-19 16:17:06 -0500
committerLinus Walleij <linus.walleij@linaro.org>2013-11-26 15:01:58 -0500
commit8da15e17408c58ff45dc8e01dad8775246ef2220 (patch)
tree130a643093df26731cfd7e8ce8109fb5b72cfea5 /arch/arm/mach-ux500
parentbddd5a2bb335b101dc75233aea313b01d3459603 (diff)
ARM: ux500: decomission the non-DT MTU init sequence
The MTU is now only initialized using the native clocksource device tree matching. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'arch/arm/mach-ux500')
-rw-r--r--arch/arm/mach-ux500/timer.c28
1 files changed, 2 insertions, 26 deletions
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
index ca60bbd9361b..1a9051b6f932 100644
--- a/arch/arm/mach-ux500/timer.c
+++ b/arch/arm/mach-ux500/timer.c
@@ -10,7 +10,6 @@
10#include <linux/clocksource.h> 10#include <linux/clocksource.h>
11#include <linux/of.h> 11#include <linux/of.h>
12#include <linux/of_address.h> 12#include <linux/of_address.h>
13#include <linux/platform_data/clocksource-nomadik-mtu.h>
14 13
15#include <asm/smp_twd.h> 14#include <asm/smp_twd.h>
16 15
@@ -44,17 +43,14 @@ const static struct of_device_id prcmu_timer_of_match[] __initconst = {
44 43
45void __init ux500_timer_init(void) 44void __init ux500_timer_init(void)
46{ 45{
47 void __iomem *mtu_timer_base;
48 void __iomem *prcmu_timer_base; 46 void __iomem *prcmu_timer_base;
49 void __iomem *tmp_base; 47 void __iomem *tmp_base;
50 struct device_node *np; 48 struct device_node *np;
51 49
52 if (cpu_is_u8500_family() || cpu_is_ux540_family()) { 50 if (cpu_is_u8500_family() || cpu_is_ux540_family())
53 mtu_timer_base = __io_address(U8500_MTU0_BASE);
54 prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE); 51 prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
55 } else { 52 else
56 ux500_unknown_soc(); 53 ux500_unknown_soc();
57 }
58 54
59 np = of_find_matching_node(NULL, prcmu_timer_of_match); 55 np = of_find_matching_node(NULL, prcmu_timer_of_match);
60 if (!np) 56 if (!np)
@@ -67,26 +63,6 @@ void __init ux500_timer_init(void)
67 prcmu_timer_base = tmp_base; 63 prcmu_timer_base = tmp_base;
68 64
69dt_fail: 65dt_fail:
70 /* Doing it the old fashioned way. */
71
72 /*
73 * Here we register the timerblocks active in the system.
74 * Localtimers (twd) is started when both cpu is up and running.
75 * MTU register a clocksource, clockevent and sched_clock.
76 * Since the MTU is located in the VAPE power domain
77 * it will be cleared in sleep which makes it unsuitable.
78 * We however need it as a timer tick (clockevent)
79 * during boot to calibrate delay until twd is started.
80 * RTC-RTT have problems as timer tick during boot since it is
81 * depending on delay which is not yet calibrated. RTC-RTT is in the
82 * always-on powerdomain and is used as clockevent instead of twd when
83 * sleeping.
84 * The PRCMU timer 4 register a clocksource and
85 * sched_clock with higher rating then MTU since is always-on.
86 *
87 */
88 if (!of_have_populated_dt())
89 nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
90 clksrc_dbx500_prcmu_init(prcmu_timer_base); 66 clksrc_dbx500_prcmu_init(prcmu_timer_base);
91 ux500_twd_init(); 67 ux500_twd_init();
92} 68}