| .. | .. |
|---|
| 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; |
|---|