Commit 677e6fe0 authored by Viresh Kumar's avatar Viresh Kumar Committed by Daniel Lezcano

c6x/timer64: Migrate to new 'set-state' interface

Migrate c6x 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.

We weren't doing anything in ->set_mode(RESUME) and so tick_resume()
isn't implemented.

Cc: Mark Salter <msalter@redhat.com>
Cc: Aurelien Jacquiot <a-jacquiot@ti.com>
Cc: linux-c6x-dev@linux-c6x.org
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent 067f9621
...@@ -126,35 +126,37 @@ static int next_event(unsigned long delta, ...@@ -126,35 +126,37 @@ static int next_event(unsigned long delta,
return 0; return 0;
} }
static void set_clock_mode(enum clock_event_mode mode, static int set_periodic(struct clock_event_device *evt)
struct clock_event_device *evt)
{ {
switch (mode) { timer64_enable();
case CLOCK_EVT_MODE_PERIODIC: timer64_mode = TIMER64_MODE_PERIODIC;
timer64_enable(); timer64_config(TIMER64_RATE / HZ);
timer64_mode = TIMER64_MODE_PERIODIC; return 0;
timer64_config(TIMER64_RATE / HZ); }
break;
case CLOCK_EVT_MODE_ONESHOT: static int set_oneshot(struct clock_event_device *evt)
timer64_enable(); {
timer64_mode = TIMER64_MODE_ONE_SHOT; timer64_enable();
break; timer64_mode = TIMER64_MODE_ONE_SHOT;
case CLOCK_EVT_MODE_UNUSED: return 0;
case CLOCK_EVT_MODE_SHUTDOWN: }
timer64_mode = TIMER64_MODE_DISABLED;
timer64_disable(); static int shutdown(struct clock_event_device *evt)
break; {
case CLOCK_EVT_MODE_RESUME: timer64_mode = TIMER64_MODE_DISABLED;
break; timer64_disable();
} return 0;
} }
static struct clock_event_device t64_clockevent_device = { static struct clock_event_device t64_clockevent_device = {
.name = "TIMER64_EVT32_TIMER", .name = "TIMER64_EVT32_TIMER",
.features = CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PERIODIC, .features = CLOCK_EVT_FEAT_ONESHOT |
.rating = 200, CLOCK_EVT_FEAT_PERIODIC,
.set_mode = set_clock_mode, .rating = 200,
.set_next_event = next_event, .set_state_shutdown = shutdown,
.set_state_periodic = set_periodic,
.set_state_oneshot = set_oneshot,
.set_next_event = next_event,
}; };
static irqreturn_t timer_interrupt(int irq, void *dev_id) static irqreturn_t timer_interrupt(int irq, void *dev_id)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment