Merge master.kernel.org:/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog
[powerpc.git] / arch / arm / plat-iop / time.c
index 5730a0d..06282df 100644 (file)
 #include <asm/mach/time.h>
 
 #ifdef CONFIG_ARCH_IOP32X
-#define IRQ_IOP3XX_TIMER0      IRQ_IOP321_TIMER0
+#define IRQ_IOP3XX_TIMER0      IRQ_IOP32X_TIMER0
 #else
 #ifdef CONFIG_ARCH_IOP33X
-#define IRQ_IOP3XX_TIMER0      IRQ_IOP331_TIMER0
+#define IRQ_IOP3XX_TIMER0      IRQ_IOP33X_TIMER0
 #endif
 #endif
 
@@ -51,7 +51,9 @@ iop3xx_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
 {
        write_seqlock(&xtime_lock);
 
+       iop3xx_cp6_enable();
        asm volatile("mcr p6, 0, %0, c6, c1, 0" : : "r" (1));
+       iop3xx_cp6_disable();
 
        while ((signed long)(next_jiffy_time - *IOP3XX_TU_TCR1)
                                                        >= ticks_per_jiffy) {
@@ -85,10 +87,12 @@ void __init iop3xx_init_time(unsigned long tick_rate)
         * We use timer 0 for our timer interrupt, and timer 1 as
         * monotonic counter for tracking missed jiffies.
         */
+       iop3xx_cp6_enable();
        asm volatile("mcr p6, 0, %0, c4, c1, 0" : : "r" (ticks_per_jiffy - 1));
        asm volatile("mcr p6, 0, %0, c0, c1, 0" : : "r" (timer_ctl));
        asm volatile("mcr p6, 0, %0, c5, c1, 0" : : "r" (0xffffffff));
        asm volatile("mcr p6, 0, %0, c1, c1, 0" : : "r" (timer_ctl));
+       iop3xx_cp6_disable();
 
        setup_irq(IRQ_IOP3XX_TIMER0, &iop3xx_timer_irq);
 }