diff options
author | Viresh Kumar <viresh.kumar@linaro.org> | 2015-07-16 07:26:31 -0400 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2015-08-10 05:41:06 -0400 |
commit | 71b5280b79359ca3c6c21d46b6b14a3ae93d8330 (patch) | |
tree | ba2b060e781751c747e15f1a6b596d6880503547 /arch/um/kernel | |
parent | ff4aea45c7f9c73889f08976ad65b31dbc35047e (diff) |
um/time: Migrate to new 'set-state' interface
Migrate um 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.
Cc: Jeff Dike <jdike@addtoit.com>
Cc: Richard Weinberger <richard@nod.at>
Cc: user-mode-linux-devel@lists.sourceforge.net
Cc: user-mode-linux-user@lists.sourceforge.net
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Diffstat (limited to 'arch/um/kernel')
-rw-r--r-- | arch/um/kernel/time.c | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/arch/um/kernel/time.c b/arch/um/kernel/time.c index 117568d4f64a..5af441efb377 100644 --- a/arch/um/kernel/time.c +++ b/arch/um/kernel/time.c | |||
@@ -22,23 +22,16 @@ void timer_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs) | |||
22 | local_irq_restore(flags); | 22 | local_irq_restore(flags); |
23 | } | 23 | } |
24 | 24 | ||
25 | static void itimer_set_mode(enum clock_event_mode mode, | 25 | static int itimer_shutdown(struct clock_event_device *evt) |
26 | struct clock_event_device *evt) | ||
27 | { | 26 | { |
28 | switch (mode) { | 27 | disable_timer(); |
29 | case CLOCK_EVT_MODE_PERIODIC: | 28 | return 0; |
30 | set_interval(); | 29 | } |
31 | break; | 30 | |
32 | 31 | static int itimer_set_periodic(struct clock_event_device *evt) | |
33 | case CLOCK_EVT_MODE_SHUTDOWN: | 32 | { |
34 | case CLOCK_EVT_MODE_UNUSED: | 33 | set_interval(); |
35 | case CLOCK_EVT_MODE_ONESHOT: | 34 | return 0; |
36 | disable_timer(); | ||
37 | break; | ||
38 | |||
39 | case CLOCK_EVT_MODE_RESUME: | ||
40 | break; | ||
41 | } | ||
42 | } | 35 | } |
43 | 36 | ||
44 | static int itimer_next_event(unsigned long delta, | 37 | static int itimer_next_event(unsigned long delta, |
@@ -48,14 +41,17 @@ static int itimer_next_event(unsigned long delta, | |||
48 | } | 41 | } |
49 | 42 | ||
50 | static struct clock_event_device itimer_clockevent = { | 43 | static struct clock_event_device itimer_clockevent = { |
51 | .name = "itimer", | 44 | .name = "itimer", |
52 | .rating = 250, | 45 | .rating = 250, |
53 | .cpumask = cpu_all_mask, | 46 | .cpumask = cpu_all_mask, |
54 | .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, | 47 | .features = CLOCK_EVT_FEAT_PERIODIC | |
55 | .set_mode = itimer_set_mode, | 48 | CLOCK_EVT_FEAT_ONESHOT, |
56 | .set_next_event = itimer_next_event, | 49 | .set_state_shutdown = itimer_shutdown, |
57 | .shift = 32, | 50 | .set_state_periodic = itimer_set_periodic, |
58 | .irq = 0, | 51 | .set_state_oneshot = itimer_shutdown, |
52 | .set_next_event = itimer_next_event, | ||
53 | .shift = 32, | ||
54 | .irq = 0, | ||
59 | }; | 55 | }; |
60 | 56 | ||
61 | static irqreturn_t um_timer(int irq, void *dev) | 57 | static irqreturn_t um_timer(int irq, void *dev) |