diff options
author | Marc Zyngier <marc.zyngier@arm.com> | 2012-01-10 14:44:19 -0500 |
---|---|---|
committer | Marc Zyngier <marc.zyngier@arm.com> | 2012-03-13 09:45:52 -0400 |
commit | 7ac9b9eb338d3960fbc044cb76790f4aab4fbb22 (patch) | |
tree | b564f7b854f4da60943b503bcc03e79b8ea95379 | |
parent | 08efd6ca6fae8ee22617b8d9d3f87d4e4cd56dab (diff) |
ARM: highbank: convert to twd_local_timer_register() interface
Add support for the new smp_twd runtime registration interface
to the highbank platforms, and remove the old compile-time support.
The highbank DTS file is updated to match the TWD DT documentation
and fixes the timer trigger (rising edge).
Acked-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
-rw-r--r-- | arch/arm/boot/dts/highbank.dts | 8 | ||||
-rw-r--r-- | arch/arm/mach-highbank/Makefile | 1 | ||||
-rw-r--r-- | arch/arm/mach-highbank/highbank.c | 3 | ||||
-rw-r--r-- | arch/arm/mach-highbank/localtimer.c | 40 |
4 files changed, 7 insertions, 45 deletions
diff --git a/arch/arm/boot/dts/highbank.dts b/arch/arm/boot/dts/highbank.dts index 305635bd45c0..37c0ff9c8b90 100644 --- a/arch/arm/boot/dts/highbank.dts +++ b/arch/arm/boot/dts/highbank.dts | |||
@@ -72,15 +72,15 @@ | |||
72 | ranges; | 72 | ranges; |
73 | 73 | ||
74 | timer@fff10600 { | 74 | timer@fff10600 { |
75 | compatible = "arm,smp-twd"; | 75 | compatible = "arm,cortex-a9-twd-timer"; |
76 | reg = <0xfff10600 0x20>; | 76 | reg = <0xfff10600 0x20>; |
77 | interrupts = <1 13 0xf04>; | 77 | interrupts = <1 13 0xf01>; |
78 | }; | 78 | }; |
79 | 79 | ||
80 | watchdog@fff10620 { | 80 | watchdog@fff10620 { |
81 | compatible = "arm,cortex-a9-wdt"; | 81 | compatible = "arm,cortex-a9-twd-wdt"; |
82 | reg = <0xfff10620 0x20>; | 82 | reg = <0xfff10620 0x20>; |
83 | interrupts = <1 14 0xf04>; | 83 | interrupts = <1 14 0xf01>; |
84 | }; | 84 | }; |
85 | 85 | ||
86 | intc: interrupt-controller@fff11000 { | 86 | intc: interrupt-controller@fff11000 { |
diff --git a/arch/arm/mach-highbank/Makefile b/arch/arm/mach-highbank/Makefile index 986958a5a720..f8437dd238c2 100644 --- a/arch/arm/mach-highbank/Makefile +++ b/arch/arm/mach-highbank/Makefile | |||
@@ -1,6 +1,5 @@ | |||
1 | obj-y := clock.o highbank.o system.o | 1 | obj-y := clock.o highbank.o system.o |
2 | obj-$(CONFIG_DEBUG_HIGHBANK_UART) += lluart.o | 2 | obj-$(CONFIG_DEBUG_HIGHBANK_UART) += lluart.o |
3 | obj-$(CONFIG_SMP) += platsmp.o | 3 | obj-$(CONFIG_SMP) += platsmp.o |
4 | obj-$(CONFIG_LOCAL_TIMERS) += localtimer.o | ||
5 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o | 4 | obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o |
6 | obj-$(CONFIG_PM_SLEEP) += pm.o | 5 | obj-$(CONFIG_PM_SLEEP) += pm.o |
diff --git a/arch/arm/mach-highbank/highbank.c b/arch/arm/mach-highbank/highbank.c index 8394d512a402..bb1684f9b68b 100644 --- a/arch/arm/mach-highbank/highbank.c +++ b/arch/arm/mach-highbank/highbank.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/cacheflush.h> | 27 | #include <asm/cacheflush.h> |
28 | #include <asm/smp_plat.h> | 28 | #include <asm/smp_plat.h> |
29 | #include <asm/smp_scu.h> | 29 | #include <asm/smp_scu.h> |
30 | #include <asm/smp_twd.h> | ||
30 | #include <asm/hardware/arm_timer.h> | 31 | #include <asm/hardware/arm_timer.h> |
31 | #include <asm/hardware/timer-sp.h> | 32 | #include <asm/hardware/timer-sp.h> |
32 | #include <asm/hardware/gic.h> | 33 | #include <asm/hardware/gic.h> |
@@ -111,6 +112,8 @@ static void __init highbank_timer_init(void) | |||
111 | 112 | ||
112 | sp804_clocksource_init(timer_base + 0x20, "timer1"); | 113 | sp804_clocksource_init(timer_base + 0x20, "timer1"); |
113 | sp804_clockevents_init(timer_base, irq, "timer0"); | 114 | sp804_clockevents_init(timer_base, irq, "timer0"); |
115 | |||
116 | twd_local_timer_of_register(); | ||
114 | } | 117 | } |
115 | 118 | ||
116 | static struct sys_timer highbank_timer = { | 119 | static struct sys_timer highbank_timer = { |
diff --git a/arch/arm/mach-highbank/localtimer.c b/arch/arm/mach-highbank/localtimer.c deleted file mode 100644 index 5a00e7945fdf..000000000000 --- a/arch/arm/mach-highbank/localtimer.c +++ /dev/null | |||
@@ -1,40 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright 2010-2011 Calxeda, Inc. | ||
3 | * Based on localtimer.c, Copyright (C) 2002 ARM Ltd. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or modify it | ||
6 | * under the terms and conditions of the GNU General Public License, | ||
7 | * version 2, as published by the Free Software Foundation. | ||
8 | * | ||
9 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
12 | * more details. | ||
13 | * | ||
14 | * You should have received a copy of the GNU General Public License along with | ||
15 | * this program. If not, see <http://www.gnu.org/licenses/>. | ||
16 | */ | ||
17 | #include <linux/init.h> | ||
18 | #include <linux/clockchips.h> | ||
19 | #include <linux/of.h> | ||
20 | #include <linux/of_address.h> | ||
21 | #include <linux/of_irq.h> | ||
22 | |||
23 | #include <asm/smp_twd.h> | ||
24 | |||
25 | /* | ||
26 | * Setup the local clock events for a CPU. | ||
27 | */ | ||
28 | int __cpuinit local_timer_setup(struct clock_event_device *evt) | ||
29 | { | ||
30 | struct device_node *np; | ||
31 | |||
32 | np = of_find_compatible_node(NULL, NULL, "arm,smp-twd"); | ||
33 | if (!twd_base) { | ||
34 | twd_base = of_iomap(np, 0); | ||
35 | WARN_ON(!twd_base); | ||
36 | } | ||
37 | evt->irq = irq_of_parse_and_map(np, 0); | ||
38 | twd_timer_setup(evt); | ||
39 | return 0; | ||
40 | } | ||