aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/kernel
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2015-07-16 07:26:31 -0400
committerDaniel Lezcano <daniel.lezcano@linaro.org>2015-08-10 05:41:06 -0400
commit71b5280b79359ca3c6c21d46b6b14a3ae93d8330 (patch)
treeba2b060e781751c747e15f1a6b596d6880503547 /arch/um/kernel
parentff4aea45c7f9c73889f08976ad65b31dbc35047e (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.c44
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
25static void itimer_set_mode(enum clock_event_mode mode, 25static 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 31static 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
44static int itimer_next_event(unsigned long delta, 37static int itimer_next_event(unsigned long delta,
@@ -48,14 +41,17 @@ static int itimer_next_event(unsigned long delta,
48} 41}
49 42
50static struct clock_event_device itimer_clockevent = { 43static 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
61static irqreturn_t um_timer(int irq, void *dev) 57static irqreturn_t um_timer(int irq, void *dev)