Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM/omap1/timer32: Migrate to new 'set-state' interface

Migrate omap timer32 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.

Acked-by: Santosh Shilimkar <ssantosh@kernel.org>
Acked-by: Tony Lindgren <tony@atomide.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>

+16 -17
+16 -17
arch/arm/mach-omap1/timer32k.c
··· 114 114 return 0; 115 115 } 116 116 117 - static void omap_32k_timer_set_mode(enum clock_event_mode mode, 118 - struct clock_event_device *evt) 117 + static int omap_32k_timer_shutdown(struct clock_event_device *evt) 119 118 { 120 119 omap_32k_timer_stop(); 120 + return 0; 121 + } 121 122 122 - switch (mode) { 123 - case CLOCK_EVT_MODE_PERIODIC: 124 - omap_32k_timer_start(OMAP_32K_TIMER_TICK_PERIOD); 125 - break; 126 - case CLOCK_EVT_MODE_ONESHOT: 127 - case CLOCK_EVT_MODE_UNUSED: 128 - case CLOCK_EVT_MODE_SHUTDOWN: 129 - break; 130 - case CLOCK_EVT_MODE_RESUME: 131 - break; 132 - } 123 + static int omap_32k_timer_set_periodic(struct clock_event_device *evt) 124 + { 125 + omap_32k_timer_stop(); 126 + omap_32k_timer_start(OMAP_32K_TIMER_TICK_PERIOD); 127 + return 0; 133 128 } 134 129 135 130 static struct clock_event_device clockevent_32k_timer = { 136 - .name = "32k-timer", 137 - .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT, 138 - .set_next_event = omap_32k_timer_set_next_event, 139 - .set_mode = omap_32k_timer_set_mode, 131 + .name = "32k-timer", 132 + .features = CLOCK_EVT_FEAT_PERIODIC | 133 + CLOCK_EVT_FEAT_ONESHOT, 134 + .set_next_event = omap_32k_timer_set_next_event, 135 + .set_state_shutdown = omap_32k_timer_shutdown, 136 + .set_state_periodic = omap_32k_timer_set_periodic, 137 + .set_state_oneshot = omap_32k_timer_shutdown, 138 + .tick_resume = omap_32k_timer_shutdown, 140 139 }; 141 140 142 141 static irqreturn_t omap_32k_timer_interrupt(int irq, void *dev_id)