diff options
author | Olof Johansson <olof@lixom.net> | 2015-07-17 09:58:32 -0700 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2015-07-17 09:58:54 -0700 |
commit | 52e43a11aed3f8166ba311744637d636a8a79096 (patch) | |
tree | 2a4ffce49f46f109e7efc285e51d6535882256ad /arch/arm/mach-davinci/time.c | |
parent | b3f81739ab2acb8416ad58568240d39f0cef3f51 (diff) | |
parent | 10dca88a4be632678088f5cbc20b54c2113ecb91 (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.c | 54 |
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, }; |