Merge branch 'timers-for-linus-cleanups' of git://git.kernel.org/pub/scm/linux/kernel...
[pandora-kernel.git] / arch / blackfin / kernel / time-ts.c
index a351f97..8c9a43d 100644 (file)
@@ -21,6 +21,7 @@
 #include <asm/blackfin.h>
 #include <asm/time.h>
 #include <asm/gptimers.h>
+#include <asm/nmi.h>
 
 /* Accelerators for sched_clock()
  * convert from cycles(64bits) => nanoseconds (64bits)
 
 static notrace cycle_t bfin_read_cycles(struct clocksource *cs)
 {
+#ifdef CONFIG_CPU_FREQ
        return __bfin_cycles_off + (get_cycles() << __bfin_cycles_mod);
+#else
+       return get_cycles();
+#endif
 }
 
 static struct clocksource bfin_cs_cycles = {
@@ -309,6 +314,9 @@ irqreturn_t bfin_coretmr_interrupt(int irq, void *dev_id)
 
        smp_mb();
        evt->event_handler(evt);
+
+       touch_nmi_watchdog();
+
        return IRQ_HANDLED;
 }
 
@@ -345,9 +353,15 @@ void bfin_coretmr_clockevent_init(void)
 #endif /* CONFIG_TICKSOURCE_CORETMR */
 
 
-void __init time_init(void)
+void read_persistent_clock(struct timespec *ts)
 {
        time_t secs_since_1970 = (365 * 37 + 9) * 24 * 60 * 60; /* 1 Jan 2007 */
+       ts->tv_sec = secs_since_1970;
+       ts->tv_nsec = 0;
+}
+
+void __init time_init(void)
+{
 
 #ifdef CONFIG_RTC_DRV_BFIN
        /* [#2663] hack to filter junk RTC values that would cause
@@ -360,11 +374,6 @@ void __init time_init(void)
        }
 #endif
 
-       /* Initialize xtime. From now on, xtime is updated with timer interrupts */
-       xtime.tv_sec = secs_since_1970;
-       xtime.tv_nsec = 0;
-       set_normalized_timespec(&wall_to_monotonic, -xtime.tv_sec, -xtime.tv_nsec);
-
        bfin_cs_cycles_init();
        bfin_cs_gptimer0_init();