MIPS: rt3352: Migrate to new 'set-state' interface
authorViresh Kumar <viresh.kumar@linaro.org>
Mon, 6 Jul 2015 11:12:03 +0000 (16:42 +0530)
committerRalf Baechle <ralf@linux-mips.org>
Thu, 3 Sep 2015 10:07:54 +0000 (12:07 +0200)
Migrate ralink driver to the new 'set-state' interface provided by
clockevents core, the earlier 'set-mode' interface is marked obsolete
now.

This also enables us to implement callbacks for new states of clockevent
devices, for example: ONESHOT_STOPPED.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
Cc: linux-mips@linux-mips.org
Cc: linaro-kernel@lists.linaro.org
Cc: Thomas Gleixner <tglx@linutronix.de>
Patchwork: https://patchwork.linux-mips.org/patch/10610/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/ralink/cevt-rt3352.c

index 24bf057a36136b61cd1f4b60df57ecc7367ac892..a8e70a9f274bdf70b0be449bee57c71c513e6fc4 100644 (file)
@@ -36,8 +36,8 @@ struct systick_device {
        int freq_scale;
 };
 
-static void systick_set_clock_mode(enum clock_event_mode mode,
-                               struct clock_event_device *evt);
+static int systick_set_oneshot(struct clock_event_device *evt);
+static int systick_shutdown(struct clock_event_device *evt);
 
 static int systick_next_event(unsigned long delta,
                                struct clock_event_device *evt)
@@ -73,11 +73,12 @@ static struct systick_device systick = {
                 * cevt-r4k uses 300, make sure systick
                 * gets used if available
                 */
-               .rating         = 310,
-               .features       = CLOCK_EVT_FEAT_ONESHOT,
-               .set_next_event = systick_next_event,
-               .set_mode       = systick_set_clock_mode,
-               .event_handler  = systick_event_handler,
+               .rating                 = 310,
+               .features               = CLOCK_EVT_FEAT_ONESHOT,
+               .set_next_event         = systick_next_event,
+               .set_state_shutdown     = systick_shutdown,
+               .set_state_oneshot      = systick_set_oneshot,
+               .event_handler          = systick_event_handler,
        },
 };
 
@@ -87,33 +88,33 @@ static struct irqaction systick_irqaction = {
        .dev_id = &systick.dev,
 };
 
-static void systick_set_clock_mode(enum clock_event_mode mode,
-                               struct clock_event_device *evt)
+static int systick_shutdown(struct clock_event_device *evt)
 {
        struct systick_device *sdev;
 
        sdev = container_of(evt, struct systick_device, dev);
 
-       switch (mode) {
-       case CLOCK_EVT_MODE_ONESHOT:
-               if (!sdev->irq_requested)
-                       setup_irq(systick.dev.irq, &systick_irqaction);
-               sdev->irq_requested = 1;
-               iowrite32(CFG_EXT_STK_EN | CFG_CNT_EN,
-                               systick.membase + SYSTICK_CONFIG);
-               break;
-
-       case CLOCK_EVT_MODE_SHUTDOWN:
-               if (sdev->irq_requested)
-                       free_irq(systick.dev.irq, &systick_irqaction);
-               sdev->irq_requested = 0;
-               iowrite32(0, systick.membase + SYSTICK_CONFIG);
-               break;
-
-       default:
-               pr_err("%s: Unhandeled mips clock_mode\n", systick.dev.name);
-               break;
-       }
+       if (sdev->irq_requested)
+               free_irq(systick.dev.irq, &systick_irqaction);
+       sdev->irq_requested = 0;
+       iowrite32(0, systick.membase + SYSTICK_CONFIG);
+
+       return 0;
+}
+
+static int systick_set_oneshot(struct clock_event_device *evt)
+{
+       struct systick_device *sdev;
+
+       sdev = container_of(evt, struct systick_device, dev);
+
+       if (!sdev->irq_requested)
+               setup_irq(systick.dev.irq, &systick_irqaction);
+       sdev->irq_requested = 1;
+       iowrite32(CFG_EXT_STK_EN | CFG_CNT_EN,
+                 systick.membase + SYSTICK_CONFIG);
+
+       return 0;
 }
 
 static void __init ralink_systick_init(struct device_node *np)