These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / clocksource / zevio-timer.c
index 7ce4421..ceaa613 100644 (file)
@@ -76,32 +76,28 @@ static int zevio_timer_set_event(unsigned long delta,
        return 0;
 }
 
-static void zevio_timer_set_mode(enum clock_event_mode mode,
-                                struct clock_event_device *dev)
+static int zevio_timer_shutdown(struct clock_event_device *dev)
 {
        struct zevio_timer *timer = container_of(dev, struct zevio_timer,
                                                 clkevt);
 
-       switch (mode) {
-       case CLOCK_EVT_MODE_RESUME:
-       case CLOCK_EVT_MODE_ONESHOT:
-               /* Enable timer interrupts */
-               writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_MSK);
-               writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK);
-               break;
-       case CLOCK_EVT_MODE_SHUTDOWN:
-       case CLOCK_EVT_MODE_UNUSED:
-               /* Disable timer interrupts */
-               writel(0, timer->interrupt_regs + IO_INTR_MSK);
-               writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK);
-               /* Stop timer */
-               writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL);
-               break;
-       case CLOCK_EVT_MODE_PERIODIC:
-       default:
-               /* Unsupported */
-               break;
-       }
+       /* Disable timer interrupts */
+       writel(0, timer->interrupt_regs + IO_INTR_MSK);
+       writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK);
+       /* Stop timer */
+       writel(CNTL_STOP_TIMER, timer->timer1 + IO_CONTROL);
+       return 0;
+}
+
+static int zevio_timer_set_oneshot(struct clock_event_device *dev)
+{
+       struct zevio_timer *timer = container_of(dev, struct zevio_timer,
+                                                clkevt);
+
+       /* Enable timer interrupts */
+       writel(TIMER_INTR_MSK, timer->interrupt_regs + IO_INTR_MSK);
+       writel(TIMER_INTR_ALL, timer->interrupt_regs + IO_INTR_ACK);
+       return 0;
 }
 
 static irqreturn_t zevio_timer_interrupt(int irq, void *dev_id)
@@ -162,7 +158,9 @@ static int __init zevio_timer_add(struct device_node *node)
        if (timer->interrupt_regs && irqnr) {
                timer->clkevt.name              = timer->clockevent_name;
                timer->clkevt.set_next_event    = zevio_timer_set_event;
-               timer->clkevt.set_mode          = zevio_timer_set_mode;
+               timer->clkevt.set_state_shutdown = zevio_timer_shutdown;
+               timer->clkevt.set_state_oneshot = zevio_timer_set_oneshot;
+               timer->clkevt.tick_resume       = zevio_timer_set_oneshot;
                timer->clkevt.rating            = 200;
                timer->clkevt.cpumask           = cpu_all_mask;
                timer->clkevt.features          = CLOCK_EVT_FEAT_ONESHOT;