diff options
| author | Viresh Kumar <viresh.kumar@linaro.org> | 2015-07-16 07:26:32 -0400 |
|---|---|---|
| committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2015-08-10 05:41:06 -0400 |
| commit | 3078c8df2c03ebad334e1efe7e0867d8b0cd2764 (patch) | |
| tree | b5b86b92099624615c36e4347f54becb7afdfffe /arch/unicore32/kernel | |
| parent | 71b5280b79359ca3c6c21d46b6b14a3ae93d8330 (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.c | 29 |
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 | ||
| 49 | static void | 49 | static int puv3_osmr0_shutdown(struct clock_event_device *evt) |
| 50 | puv3_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 | ||
| 66 | static struct clock_event_device ckevt_puv3_osmr0 = { | 56 | static 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 | ||
| 74 | static cycle_t puv3_read_oscr(struct clocksource *cs) | 65 | static cycle_t puv3_read_oscr(struct clocksource *cs) |
