.. | .. |
---|
31 | 31 | |
---|
32 | 32 | static struct clock_event_device __percpu *twd_evt; |
---|
33 | 33 | static unsigned int twd_features = |
---|
34 | | - CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; |
---|
| 34 | + CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT | CLOCK_EVT_FEAT_PIPELINE; |
---|
35 | 35 | static int twd_ppi; |
---|
36 | 36 | |
---|
37 | 37 | static int twd_shutdown(struct clock_event_device *clk) |
---|
.. | .. |
---|
182 | 182 | struct clock_event_device *evt = dev_id; |
---|
183 | 183 | |
---|
184 | 184 | if (twd_timer_ack()) { |
---|
185 | | - evt->event_handler(evt); |
---|
| 185 | + clockevents_handle_event(evt); |
---|
186 | 186 | return IRQ_HANDLED; |
---|
187 | 187 | } |
---|
188 | 188 | |
---|
.. | .. |
---|
279 | 279 | goto out_free; |
---|
280 | 280 | } |
---|
281 | 281 | |
---|
282 | | - err = request_percpu_irq(twd_ppi, twd_handler, "twd", twd_evt); |
---|
| 282 | + err = __request_percpu_irq(twd_ppi, twd_handler, |
---|
| 283 | + IRQF_TIMER, "twd", twd_evt); |
---|
283 | 284 | if (err) { |
---|
284 | 285 | pr_err("twd: can't register interrupt %d (%d)\n", twd_ppi, err); |
---|
285 | 286 | goto out_free; |
---|