|
@@ -152,15 +152,10 @@ static irqreturn_t at91sam926x_pit_interrupt(int irq, void *dev_id)
|
|
|
/* The PIT interrupt may be disabled, and is shared */
|
|
|
if (clockevent_state_periodic(&data->clkevt) &&
|
|
|
(pit_read(data->base, AT91_PIT_SR) & AT91_PIT_PITS)) {
|
|
|
- unsigned nr_ticks;
|
|
|
-
|
|
|
/* Get number of ticks performed before irq, and ack it */
|
|
|
- nr_ticks = PIT_PICNT(pit_read(data->base, AT91_PIT_PIVR));
|
|
|
- do {
|
|
|
- data->cnt += data->cycle;
|
|
|
- data->clkevt.event_handler(&data->clkevt);
|
|
|
- nr_ticks--;
|
|
|
- } while (nr_ticks);
|
|
|
+ data->cnt += data->cycle * PIT_PICNT(pit_read(data->base,
|
|
|
+ AT91_PIT_PIVR));
|
|
|
+ data->clkevt.event_handler(&data->clkevt);
|
|
|
|
|
|
return IRQ_HANDLED;
|
|
|
}
|