[PATCH 07/10] ARM: ux500: Provide local timer support for Device Tree
Lee Jones
lee.jones at linaro.org
Wed Mar 14 09:05:03 EDT 2012
This enables local timer (AKA: private timer) support for
all u8500 based hardware using DT.
Signed-off-by: Lee Jones <lee.jones at linaro.org>
---
arch/arm/boot/dts/db8500.dtsi | 6 ++++++
arch/arm/mach-ux500/localtimer.c | 18 +++++++++++++++++-
2 files changed, 23 insertions(+), 1 deletions(-)
diff --git a/arch/arm/boot/dts/db8500.dtsi b/arch/arm/boot/dts/db8500.dtsi
index cce5df8..35d0146 100644
--- a/arch/arm/boot/dts/db8500.dtsi
+++ b/arch/arm/boot/dts/db8500.dtsi
@@ -34,6 +34,12 @@
interrupts = <7>;
};
+ timer at a0410600 {
+ compatible = "arm,smp-twd";
+ reg = <0xa0410600 0x20>;
+ interrupts = <1 13 0x304>;
+ };
+
rtc at 80154000 {
compatible = "stericsson,db8500-rtc";
reg = <0x80154000 0x1000>;
diff --git a/arch/arm/mach-ux500/localtimer.c b/arch/arm/mach-ux500/localtimer.c
index 5ba1133..295e580 100644
--- a/arch/arm/mach-ux500/localtimer.c
+++ b/arch/arm/mach-ux500/localtimer.c
@@ -14,6 +14,10 @@
#include <linux/smp.h>
#include <linux/clockchips.h>
+#include <linux/of.h>
+#include <linux/of_address.h>
+#include <linux/of_irq.h>
+
#include <asm/irq.h>
#include <asm/smp_twd.h>
#include <asm/localtimer.h>
@@ -23,7 +27,19 @@
*/
int __cpuinit local_timer_setup(struct clock_event_device *evt)
{
- evt->irq = IRQ_LOCALTIMER;
+ struct device_node *np;
+
+ np = of_find_compatible_node(NULL, NULL, "arm,smp-twd");
+ if (np) {
+ if (!twd_base) {
+ twd_base = of_iomap(np, 0);
+ WARN_ON(!twd_base);
+ }
+ evt->irq = irq_of_parse_and_map(np, 0);
+ }
+ else
+ evt->irq = IRQ_LOCALTIMER;
+
twd_timer_setup(evt);
return 0;
}
--
1.7.5.4
More information about the linux-arm-kernel
mailing list