summaryrefslogtreecommitdiff
path: root/arch/arm/mach-davinci/time.c
diff options
context:
space:
mode:
authorOlof Johansson <olof@lixom.net>2015-07-17 09:58:32 -0700
committerOlof Johansson <olof@lixom.net>2015-07-17 09:58:54 -0700
commit52e43a11aed3f8166ba311744637d636a8a79096 (patch)
tree2a4ffce49f46f109e7efc285e51d6535882256ad /arch/arm/mach-davinci/time.c
parentb3f81739ab2acb8416ad58568240d39f0cef3f51 (diff)
parent10dca88a4be632678088f5cbc20b54c2113ecb91 (diff)
Merge branch 'ARM/clkevt/set-state-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux into next/cleanup
Merge "ARM: clockevents: Migrate to 'set-state' callbacks" from Viresh Kumar: This series migrates ARM clockevent drivers (present in arch/arm/ directory), to the new set-state interface. This would enable these drivers to use new states (like: ONESHOT_STOPPED, etc.) of a clockevent device (if required), as the set-mode interface is marked obsolete now and wouldn't be expanded to handle new states. * 'ARM/clkevt/set-state-4.3' of git://git.kernel.org/pub/scm/linux/kernel/git/vireshk/linux: ARM/orion/time: Migrate to new 'set-state' interface ARM/iop/time: Migrate to new 'set-state' interface ARM/w90x900/time: Migrate to new 'set-state' interface ARM/SPEAr/time: Migrate to new 'set-state' interface ARM/omap2/timer: Migrate to new 'set-state' interface ARM/omap1/timer32: Migrate to new 'set-state' interface ARM/omap1/time: Migrate to new 'set-state' interface ARM/netx/time: Migrate to new 'set-state' interface ARM/mmp/time: Migrate to new 'set-state' interface ARM/lpc32xx/timer: Migrate to new 'set-state' interface ARM/ks8695/time: Migrate to new 'set-state' interface ARM/ixp4xx/timer: Migrate to new 'set-state' interface ARM/imx/epit: Migrate to new 'set-state' interface ARM/gemini/time: Migrate to new 'set-state' interface ARM/dc21285-timer: Migrate to new 'set-state' interface ARM/davinci/time: Migrate to new 'set-state' interface ARM/cns3xxx/timer: Migrate to new 'set-state' interface ARM/smp_twd: Migrate to new 'set-state' interface Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'arch/arm/mach-davinci/time.c')
-rw-r--r--arch/arm/mach-davinci/time.c54
1 files changed, 30 insertions, 24 deletions
diff --git a/arch/arm/mach-davinci/time.c b/arch/arm/mach-davinci/time.c
index 160c9602f490..6c18445a4639 100644
--- a/arch/arm/mach-davinci/time.c
+++ b/arch/arm/mach-davinci/time.c
@@ -303,36 +303,42 @@ static int davinci_set_next_event(unsigned long cycles,
return 0;
}
-static void davinci_set_mode(enum clock_event_mode mode,
- struct clock_event_device *evt)
+static int davinci_shutdown(struct clock_event_device *evt)
{
struct timer_s *t = &timers[TID_CLOCKEVENT];
- switch (mode) {
- case CLOCK_EVT_MODE_PERIODIC:
- t->period = davinci_clock_tick_rate / (HZ);
- t->opts &= ~TIMER_OPTS_STATE_MASK;
- t->opts |= TIMER_OPTS_PERIODIC;
- timer32_config(t);
- break;
- case CLOCK_EVT_MODE_ONESHOT:
- t->opts &= ~TIMER_OPTS_STATE_MASK;
- t->opts |= TIMER_OPTS_ONESHOT;
- break;
- case CLOCK_EVT_MODE_UNUSED:
- case CLOCK_EVT_MODE_SHUTDOWN:
- t->opts &= ~TIMER_OPTS_STATE_MASK;
- t->opts |= TIMER_OPTS_DISABLED;
- break;
- case CLOCK_EVT_MODE_RESUME:
- break;
- }
+ t->opts &= ~TIMER_OPTS_STATE_MASK;
+ t->opts |= TIMER_OPTS_DISABLED;
+ return 0;
+}
+
+static int davinci_set_oneshot(struct clock_event_device *evt)
+{
+ struct timer_s *t = &timers[TID_CLOCKEVENT];
+
+ t->opts &= ~TIMER_OPTS_STATE_MASK;
+ t->opts |= TIMER_OPTS_ONESHOT;
+ return 0;
+}
+
+static int davinci_set_periodic(struct clock_event_device *evt)
+{
+ struct timer_s *t = &timers[TID_CLOCKEVENT];
+
+ t->period = davinci_clock_tick_rate / (HZ);
+ t->opts &= ~TIMER_OPTS_STATE_MASK;
+ t->opts |= TIMER_OPTS_PERIODIC;
+ timer32_config(t);
+ return 0;
}
static struct clock_event_device clockevent_davinci = {
- .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
- .set_next_event = davinci_set_next_event,
- .set_mode = davinci_set_mode,
+ .features = CLOCK_EVT_FEAT_PERIODIC |
+ CLOCK_EVT_FEAT_ONESHOT,
+ .set_next_event = davinci_set_next_event,
+ .set_state_shutdown = davinci_shutdown,
+ .set_state_periodic = davinci_set_periodic,
+ .set_state_oneshot = davinci_set_oneshot,
};