]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - arch/arm/mach-ns9xxx/time.c
[ARM] 4545/1: ns9xxx: simplify irq ack'ing
[linux-2.6-omap-h63xx.git] / arch / arm / mach-ns9xxx / time.c
index b97d0c54a388163fc72090992d89c9233edbc7af..3327d302618d652099bfb2d90edd78d2963258aa 100644 (file)
@@ -24,10 +24,24 @@ static u32 usecs_per_tick;
 static irqreturn_t
 ns9xxx_timer_interrupt(int irq, void *dev_id)
 {
+       int timerno = irq - IRQ_TIMER0;
+       u32 tc;
+
        write_seqlock(&xtime_lock);
        timer_tick();
        write_sequnlock(&xtime_lock);
 
+       /* clear irq */
+       tc = SYS_TC(timerno);
+       if (REGGET(tc, SYS_TCx, REN) == SYS_TCx_REN_DIS) {
+               REGSET(tc, SYS_TCx, TEN, DIS);
+               SYS_TC(timerno) = tc;
+       }
+       REGSET(tc, SYS_TCx, INTC, SET);
+       SYS_TC(timerno) = tc;
+       REGSET(tc, SYS_TCx, INTC, UNSET);
+       SYS_TC(timerno) = tc;
+
        return IRQ_HANDLED;
 }