[ARM] Fix timer damage from d3d74453c34f8fd87674a8cf5b8a327c68f22e99
[firefly-linux-kernel-4.4.55.git] / arch / arm / mach-ebsa110 / core.c
index 6d620d8268cc1b84846d1cb93d3b94e659185ee8..7710e14b52684b095b5aa456fd80cd1f35b6ce90 100644 (file)
@@ -45,7 +45,7 @@ static void ebsa110_unmask_irq(unsigned int irq)
        __raw_writeb(1 << irq, IRQ_MSET);
 }
 
-static struct irqchip ebsa110_irq_chip = {
+static struct irq_chip ebsa110_irq_chip = {
        .ack    = ebsa110_mask_irq,
        .mask   = ebsa110_mask_irq,
        .unmask = ebsa110_unmask_irq,
@@ -67,7 +67,7 @@ static void __init ebsa110_init_irq(void)
 
        for (irq = 0; irq < NR_IRQS; irq++) {
                set_irq_chip(irq, &ebsa110_irq_chip);
-               set_irq_handler(irq, do_level_IRQ);
+               set_irq_handler(irq, handle_level_irq);
                set_irq_flags(irq, IRQF_VALID | IRQF_PROBE);
        }
 }
@@ -174,12 +174,10 @@ static unsigned long ebsa110_gettimeoffset(void)
 }
 
 static irqreturn_t
-ebsa110_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+ebsa110_timer_interrupt(int irq, void *dev_id)
 {
        u32 count;
 
-       write_seqlock(&xtime_lock);
-
        /* latch and read timer 1 */
        __raw_writeb(0x40, PIT_CTRL);
        count = __raw_readb(PIT_T1);
@@ -190,16 +188,14 @@ ebsa110_timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
        __raw_writeb(count & 0xff, PIT_T1);
        __raw_writeb(count >> 8, PIT_T1);
 
-       timer_tick(regs);
-
-       write_sequnlock(&xtime_lock);
+       timer_tick();
 
        return IRQ_HANDLED;
 }
 
 static struct irqaction ebsa110_timer_irq = {
        .name           = "EBSA110 Timer Tick",
-       .flags          = SA_INTERRUPT | SA_TIMER,
+       .flags          = IRQF_DISABLED | IRQF_TIMER | IRQF_IRQPOLL,
        .handler        = ebsa110_timer_interrupt,
 };