diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2015-07-16 07:26:27 -0400 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2015-08-10 05:41:04 -0400 |
commit | 07d93ebdbffac61201d2f7fb81d08872df402f91 (patch) | |
tree | 5a6f54e6108a6d5709aca1fca2aca7fd834d924a /arch/score | |
parent | 07aeed3f9ba2a846d07fa870c26c3634e849d4e4 (diff) |
score/time: Migrate to new 'set-state' interface
Migrate score 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 ONESHOT/SHUTDOWN/RESUME modes and so
callbacks for them aren't implemented.
Cc: Chen Liqin <liqin.linux@gmail.com>
Cc: Lennox Wu <lennox.wu@gmail.com>
Cc: Michael Opdenacker <michael.opdenacker@free-electrons.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Diffstat (limited to 'arch/score')
-rw-r--r-- | arch/score/kernel/time.c | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/arch/score/kernel/time.c b/arch/score/kernel/time.c index 24770cd9b473..679b8d7b0350 100644 --- a/arch/score/kernel/time.c +++ b/arch/score/kernel/time.c | |||
@@ -55,31 +55,20 @@ static int score_timer_set_next_event(unsigned long delta, | |||
55 | return 0; | 55 | return 0; |
56 | } | 56 | } |
57 | 57 | ||
58 | static void score_timer_set_mode(enum clock_event_mode mode, | 58 | static int score_timer_set_periodic(struct clock_event_device *evt) |
59 | struct clock_event_device *evdev) | ||
60 | { | 59 | { |
61 | switch (mode) { | 60 | outl((TMR_M_PERIODIC | TMR_IE_ENABLE), P_TIMER0_CTRL); |
62 | case CLOCK_EVT_MODE_PERIODIC: | 61 | outl(SYSTEM_CLOCK / HZ, P_TIMER0_PRELOAD); |
63 | outl((TMR_M_PERIODIC | TMR_IE_ENABLE), P_TIMER0_CTRL); | 62 | outl(inl(P_TIMER0_CTRL) | TMR_ENABLE, P_TIMER0_CTRL); |
64 | outl(SYSTEM_CLOCK/HZ, P_TIMER0_PRELOAD); | 63 | return 0; |
65 | outl(inl(P_TIMER0_CTRL) | TMR_ENABLE, P_TIMER0_CTRL); | ||
66 | break; | ||
67 | case CLOCK_EVT_MODE_ONESHOT: | ||
68 | case CLOCK_EVT_MODE_SHUTDOWN: | ||
69 | case CLOCK_EVT_MODE_RESUME: | ||
70 | case CLOCK_EVT_MODE_UNUSED: | ||
71 | break; | ||
72 | default: | ||
73 | BUG(); | ||
74 | } | ||
75 | } | 64 | } |
76 | 65 | ||
77 | static struct clock_event_device score_clockevent = { | 66 | static struct clock_event_device score_clockevent = { |
78 | .name = "score_clockevent", | 67 | .name = "score_clockevent", |
79 | .features = CLOCK_EVT_FEAT_PERIODIC, | 68 | .features = CLOCK_EVT_FEAT_PERIODIC, |
80 | .shift = 16, | 69 | .shift = 16, |
81 | .set_next_event = score_timer_set_next_event, | 70 | .set_next_event = score_timer_set_next_event, |
82 | .set_mode = score_timer_set_mode, | 71 | .set_state_periodic = score_timer_set_periodic, |
83 | }; | 72 | }; |
84 | 73 | ||
85 | void __init time_init(void) | 74 | void __init time_init(void) |