Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2783e5d6 authored by Alexandre Belloni's avatar Alexandre Belloni Committed by Daniel Lezcano
Browse files

clocksource/drivers/timer-atmel-pit: Simplify IRQ handler



Because the PIT is also a proper clocksource, the timekeeping code  is
already able to handle lost ticks.

Reported-by: default avatarThomas Gleixner <tglx@linutronix.de>
Acked-by: default avatarNicolas Ferre <nicolas.ferre@atmel.com>
Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: default avatarDaniel Lezcano <daniel.lezcano@linaro.org>
parent 0d41ec8d
Loading
Loading
Loading
Loading
+3 −8
Original line number Diff line number Diff line
@@ -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->cnt += data->cycle * PIT_PICNT(pit_read(data->base,
							      AT91_PIT_PIVR));
		data->clkevt.event_handler(&data->clkevt);
			nr_ticks--;
		} while (nr_ticks);

		return IRQ_HANDLED;
	}