Tero Kristo <tero.kri...@nokia.com> writes:

> From: Tero Kristo <tero.kri...@nokia.com>
>
> 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 e.g. OMAP from entering suspend, thus we ack it
> manually.
>
> Signed-off-by: Tero Kristo <tero.kri...@nokia.com>

Thanks, applying to PM branch, queueing in pm-fixes.

Kevin

> ---
>  arch/arm/plat-omap/dmtimer.c |   10 ++++++++++
>  1 files changed, 10 insertions(+), 0 deletions(-)
>
> diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
> index 830b072..09a623d 100644
> --- a/arch/arm/plat-omap/dmtimer.c
> +++ b/arch/arm/plat-omap/dmtimer.c
> @@ -551,6 +551,16 @@ void omap_dm_timer_stop(struct omap_dm_timer *timer)
>       if (l & OMAP_TIMER_CTRL_ST) {
>               l &= ~0x1;
>               omap_dm_timer_write_reg(timer, OMAP_TIMER_CTRL_REG, l);
> +             /* Readback to make sure write has completed */
> +             omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
> +              /*
> +               * Wait for functional clock period x 3.5 to make sure that
> +               * timer is stopped
> +               */
> +             udelay(3500000 / clk_get_rate(timer->fclk) + 1);
> +             /* Ack possibly pending interrupt */
> +             omap_dm_timer_write_reg(timer, OMAP_TIMER_STAT_REG,
> +                             OMAP_TIMER_INT_OVERFLOW);
>       }
>  }
>  EXPORT_SYMBOL_GPL(omap_dm_timer_stop);
> -- 
> 1.5.4.3
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to