On 01/26/2015 10:43 AM, Thomas Gleixner wrote: > On Sun, 25 Jan 2015, Daniel Lezcano wrote: >> +static inline void rk_timer_set_mode(enum clock_event_mode mode, >> + struct clock_event_device *ce) >> +{ >> + switch (mode) { >> + case CLOCK_EVT_MODE_PERIODIC: >> + rk_timer_disable(ce); >> + rk_timer_update_counter(rk_timer(ce)->freq / HZ - 1, ce); >> + rk_timer_enable(ce, TIMER_MODE_FREE_RUNNING); > > Missing break. You disable the timer again right away ... Oops :) Thanks for spotting this. I figured out why when I tested the timer, that worked: it ends up in any case in the noop ONESHOT/RESUME's break. Fixed. >> + case CLOCK_EVT_MODE_ONESHOT: >> + case CLOCK_EVT_MODE_RESUME: >> + break; >> + case CLOCK_EVT_MODE_UNUSED: >> + case CLOCK_EVT_MODE_SHUTDOWN: >> + rk_timer_disable(ce); >> + break; >> + } >> +} >> + >> +static irqreturn_t rk_timer_interrupt(int irq, void *dev_id) >> +{ >> + struct clock_event_device *ce = dev_id; >> + >> + rk_timer_interrupt_clear(ce); >> + >> + if (ce->mode == CLOCK_EVT_MODE_ONESHOT) { >> + rk_timer_disable(ce); >> + } > > No need for the braces here. Thanks ! Fixed. -- Daniel -- <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog