]> Pileus Git - ~andy/linux/blobdiff - arch/arm/mach-ux500/timer.c
Merge branch 'for-3.2' of git://linux-nfs.org/~bfields/linux
[~andy/linux] / arch / arm / mach-ux500 / timer.c
index 36a82bf57d55fd6c3510572fba21b4207ff82afe..aea467d04ff7399506d92594dd9ecbc2adc81765 100644 (file)
@@ -5,6 +5,7 @@
  * Author: Mattias Wallin <mattias.wallin@stericsson.com> for ST-Ericsson
  */
 #include <linux/io.h>
+#include <linux/errno.h>
 #include <linux/clksrc-dbx500-prcmu.h>
 
 #include <asm/localtimer.h>
 
 static void __init ux500_timer_init(void)
 {
+       void __iomem *prcmu_timer_base;
+
        if (cpu_is_u5500()) {
 #ifdef CONFIG_LOCAL_TIMERS
                twd_base = __io_address(U5500_TWD_BASE);
 #endif
                mtu_base = __io_address(U5500_MTU0_BASE);
-               clksrc_dbx500_timer_base = __io_address(U5500_PRCMU_TIMER_3_BASE);
+               prcmu_timer_base = __io_address(U5500_PRCMU_TIMER_3_BASE);
        } else if (cpu_is_u8500()) {
 #ifdef CONFIG_LOCAL_TIMERS
                twd_base = __io_address(U8500_TWD_BASE);
 #endif
                mtu_base = __io_address(U8500_MTU0_BASE);
-               clksrc_dbx500_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
+               prcmu_timer_base = __io_address(U8500_PRCMU_TIMER_4_BASE);
        } else {
                ux500_unknown_soc();
        }
@@ -50,9 +53,16 @@ static void __init ux500_timer_init(void)
         */
 
        nmdk_timer_init();
-       clksrc_dbx500_prcmu_init();
+       clksrc_dbx500_prcmu_init(prcmu_timer_base);
+}
+
+static void ux500_timer_reset(void)
+{
+       nmdk_clkevt_reset();
+       nmdk_clksrc_reset();
 }
 
 struct sys_timer ux500_timer = {
        .init           = ux500_timer_init,
+       .resume         = ux500_timer_reset,
 };