aboutsummaryrefslogtreecommitdiffstats
path: root/arch/unicore32/kernel
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2015-07-16 07:26:32 -0400
committerDaniel Lezcano <daniel.lezcano@linaro.org>2015-08-10 05:41:06 -0400
commit3078c8df2c03ebad334e1efe7e0867d8b0cd2764 (patch)
treeb5b86b92099624615c36e4347f54becb7afdfffe /arch/unicore32/kernel
parent71b5280b79359ca3c6c21d46b6b14a3ae93d8330 (diff)
unicore/time: Migrate to new 'set-state' interface
Migrate unicore 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 for PERIODIC or RESUME modes and so their callbacks aren't implemented. Cc: Guan Xuetao <gxt@mprc.pku.edu.cn> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Diffstat (limited to 'arch/unicore32/kernel')
-rw-r--r--arch/unicore32/kernel/time.c29
1 files changed, 10 insertions, 19 deletions
diff --git a/arch/unicore32/kernel/time.c b/arch/unicore32/kernel/time.c
index d3824b2ff644..ac4c5449bb88 100644
--- a/arch/unicore32/kernel/time.c
+++ b/arch/unicore32/kernel/time.c
@@ -46,29 +46,20 @@ puv3_osmr0_set_next_event(unsigned long delta, struct clock_event_device *c)
46 return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0; 46 return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0;
47} 47}
48 48
49static void 49static int puv3_osmr0_shutdown(struct clock_event_device *evt)
50puv3_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *c)
51{ 50{
52 switch (mode) { 51 writel(readl(OST_OIER) & ~OST_OIER_E0, OST_OIER);
53 case CLOCK_EVT_MODE_ONESHOT: 52 writel(readl(OST_OSSR) & ~OST_OSSR_M0, OST_OSSR);
54 case CLOCK_EVT_MODE_UNUSED: 53 return 0;
55 case CLOCK_EVT_MODE_SHUTDOWN:
56 writel(readl(OST_OIER) & ~OST_OIER_E0, OST_OIER);
57 writel(readl(OST_OSSR) & ~OST_OSSR_M0, OST_OSSR);
58 break;
59
60 case CLOCK_EVT_MODE_RESUME:
61 case CLOCK_EVT_MODE_PERIODIC:
62 break;
63 }
64} 54}
65 55
66static struct clock_event_device ckevt_puv3_osmr0 = { 56static struct clock_event_device ckevt_puv3_osmr0 = {
67 .name = "osmr0", 57 .name = "osmr0",
68 .features = CLOCK_EVT_FEAT_ONESHOT, 58 .features = CLOCK_EVT_FEAT_ONESHOT,
69 .rating = 200, 59 .rating = 200,
70 .set_next_event = puv3_osmr0_set_next_event, 60 .set_next_event = puv3_osmr0_set_next_event,
71 .set_mode = puv3_osmr0_set_mode, 61 .set_state_shutdown = puv3_osmr0_shutdown,
62 .set_state_oneshot = puv3_osmr0_shutdown,
72}; 63};
73 64
74static cycle_t puv3_read_oscr(struct clocksource *cs) 65static cycle_t puv3_read_oscr(struct clocksource *cs)