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,34 +126,36 @@ static int next_event(unsigned long delta, ...@@ -126,34 +126,36 @@ 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) {
case CLOCK_EVT_MODE_PERIODIC:
timer64_enable(); timer64_enable();
timer64_mode = TIMER64_MODE_PERIODIC; timer64_mode = TIMER64_MODE_PERIODIC;
timer64_config(TIMER64_RATE / HZ); timer64_config(TIMER64_RATE / HZ);
break; return 0;
case CLOCK_EVT_MODE_ONESHOT: }
static int set_oneshot(struct clock_event_device *evt)
{
timer64_enable(); timer64_enable();
timer64_mode = TIMER64_MODE_ONE_SHOT; timer64_mode = TIMER64_MODE_ONE_SHOT;
break; return 0;
case CLOCK_EVT_MODE_UNUSED: }
case CLOCK_EVT_MODE_SHUTDOWN:
static int shutdown(struct clock_event_device *evt)
{
timer64_mode = TIMER64_MODE_DISABLED; timer64_mode = TIMER64_MODE_DISABLED;
timer64_disable(); timer64_disable();
break; return 0;
case CLOCK_EVT_MODE_RESUME:
break;
}
} }
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 |
CLOCK_EVT_FEAT_PERIODIC,
.rating = 200, .rating = 200,
.set_mode = set_clock_mode, .set_state_shutdown = shutdown,
.set_state_periodic = set_periodic,
.set_state_oneshot = set_oneshot,
.set_next_event = next_event, .set_next_event = next_event,
}; };
......
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