Tero Kristo <tero.kristo@xxxxxxxxx> writes: > From: Tero Kristo <tero.kristo@xxxxxxxxx> > > OMAP GP timers keep running for a few cycles after they are stopped, > which can cause the timer to expire and generate an interrupt. The pending > interrupt will prevent OMAP from entering suspend, thus we ack it manually. > > Signed-off-by: Tero Kristo <tero.kristo@xxxxxxxxx> > > --- > arch/arm/mach-omap2/timer-gp.c | 14 +++++++++++++- > 1 files changed, 13 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c > index 9c056ff..c9d47bb 100644 > --- a/arch/arm/mach-omap2/timer-gp.c > +++ b/arch/arm/mach-omap2/timer-gp.c > @@ -92,9 +92,21 @@ static void omap2_gp_timer_set_mode(enum clock_event_mode mode, > case CLOCK_EVT_MODE_ONESHOT: > break; > case CLOCK_EVT_MODE_UNUSED: > - case CLOCK_EVT_MODE_SHUTDOWN: > case CLOCK_EVT_MODE_RESUME: > break; > + case CLOCK_EVT_MODE_SHUTDOWN: > + /* > + * Wait for min period x 2 to make sure that timer is > + * stopped > + */ > + udelay(evt->min_delta_ns / 500); > + /* > + * Clear possibly pending interrupt, this will occasionally > + * generate spurious timer IRQs during suspend but this > + * is okay, as another option is not to enter suspend at all > + */ > + omap_dm_timer_write_status(gptimer, OMAP_TIMER_INT_OVERFLOW); > + break; Seems to me that this fix should just be done in omap_dm_timer_stop() since it could also result in extra interrupts in when using oneshot mode under dyntick. Kevin -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html