ARM: ux500: Provide local timer support for Device Tree
authorLee Jones <lee.jones@linaro.org>
Fri, 16 Mar 2012 09:53:24 +0000 (09:53 +0000)
committerArnd Bergmann <arnd@arndb.de>
Fri, 16 Mar 2012 19:48:48 +0000 (19:48 +0000)
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>
arch/arm/boot/dts/db8500.dtsi
arch/arm/mach-ux500/timer.c

index a81cce0..d73dce6 100644 (file)
                        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>;
index e9d5807..d37df98 100644 (file)
@@ -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)