]> err.no Git - linux-2.6/blobdiff - arch/arm/mach-pnx4008/time.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
[linux-2.6] / arch / arm / mach-pnx4008 / time.c
index 756228ddd035de276cb27fef771e55ec5b92f532..6d4ca8fc0cb4521c18904b761bd1a73d0459d664 100644 (file)
@@ -11,7 +11,6 @@
  * or implied.
  */
 
-#include <linux/config.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/delay.h>
@@ -48,15 +47,12 @@ static unsigned long pnx4008_gettimeoffset(void)
 /*!
  * IRQ handler for the timer
  */
-static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id,
-                                          struct pt_regs *regs)
+static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id)
 {
        if (__raw_readl(HSTIM_INT) & MATCH0_INT) {
 
-               write_seqlock(&xtime_lock);
-
                do {
-                       timer_tick(regs);
+                       timer_tick();
 
                        /*
                         * this algorithm takes care of possible delay
@@ -75,8 +71,6 @@ static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id,
                } while ((signed)
                         (__raw_readl(HSTIM_MATCH0) -
                          __raw_readl(HSTIM_COUNTER)) < 0);
-
-               write_sequnlock(&xtime_lock);
        }
 
        return IRQ_HANDLED;
@@ -84,7 +78,7 @@ static irqreturn_t pnx4008_timer_interrupt(int irq, void *dev_id,
 
 static struct irqaction pnx4008_timer_irq = {
        .name = "PNX4008 Tick Timer",
-       .flags = IRQF_DISABLED | IRQF_TIMER,
+       .flags = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
        .handler = pnx4008_timer_interrupt
 };