summaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorLee Jones2012-03-16 10:53:24 +0100
committerArnd Bergmann2012-03-16 20:48:48 +0100
commit71de5c46e0600b72df58269e80da343e354ddbd7 (patch)
tree5ce4eaefd41211d4c8916eb1c13119db039196c4 /arch
parentARM: ux500: Enable PL022 SSP Controller in Device Tree (diff)
downloadkernel-qcow2-linux-71de5c46e0600b72df58269e80da343e354ddbd7.tar.gz
kernel-qcow2-linux-71de5c46e0600b72df58269e80da343e354ddbd7.tar.xz
kernel-qcow2-linux-71de5c46e0600b72df58269e80da343e354ddbd7.zip
ARM: ux500: Provide local timer support for Device Tree
This enables local timer (AKA: private timer) support for all u8500 based hardware using DT. Acked-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/boot/dts/db8500.dtsi6
-rw-r--r--arch/arm/mach-ux500/timer.c11
2 files changed, 14 insertions, 3 deletions
diff --git a/arch/arm/boot/dts/db8500.dtsi b/arch/arm/boot/dts/db8500.dtsi
index a81cce0f755e..d73dce645667 100644
--- a/arch/arm/boot/dts/db8500.dtsi
+++ b/arch/arm/boot/dts/db8500.dtsi
@@ -42,6 +42,12 @@
interrupts = <0 7 0x4>;
};
+ timer@a0410600 {
+ compatible = "arm,cortex-a9-twd-timer";
+ reg = <0xa0410600 0x20>;
+ interrupts = <1 13 0x304>;
+ };
+
rtc@80154000 {
compatible = "stericsson,db8500-rtc";
reg = <0x80154000 0x1000>;
diff --git a/arch/arm/mach-ux500/timer.c b/arch/arm/mach-ux500/timer.c
index e9d580702fbb..d37df98b5c32 100644
--- a/arch/arm/mach-ux500/timer.c
+++ b/arch/arm/mach-ux500/timer.c
@@ -7,6 +7,7 @@
#include <linux/io.h>
#include <linux/errno.h>
#include <linux/clksrc-dbx500-prcmu.h>
+#include <linux/of.h>
#include <asm/smp_twd.h>
@@ -30,9 +31,13 @@ static void __init ux500_twd_init(void)
twd_local_timer = cpu_is_u5500() ? &u5500_twd_local_timer :
&u8500_twd_local_timer;
- err = twd_local_timer_register(twd_local_timer);
- if (err)
- pr_err("twd_local_timer_register failed %d\n", err);
+ if (of_have_populated_dt())
+ twd_local_timer_of_register();
+ else {
+ err = twd_local_timer_register(twd_local_timer);
+ if (err)
+ pr_err("twd_local_timer_register failed %d\n", err);
+ }
}
#else
#define ux500_twd_init() do { } while(0)