[U-Boot] [PATCH] MX31: Disable watchdog during low-power modes

Marek Vasut marek.vasut at gmail.com
Tue Sep 20 06:16:59 CEST 2011


On Monday, September 19, 2011 07:51:10 PM Fabio Estevam wrote:
> Turn on the watchdog WDZST bit so that watchdog timer does not count during
> low power modes.
> 
> Prior to applying this patch mx31pdk board got watchdog resets because when
> it booted in the Linux prompt and there was no activity, the system
> entered into idle mode while watchdog timer was still active.
> 
> Fix this by disabling watchdog timer during idle mode.
> 
> Signed-off-by: Fabio Estevam <fabio.estevam at freescale.com>
> ---
>  arch/arm/cpu/arm1136/mx31/timer.c         |    4 ++--
>  arch/arm/include/asm/arch-mx31/imx-regs.h |    2 ++
>  2 files changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm/cpu/arm1136/mx31/timer.c
> b/arch/arm/cpu/arm1136/mx31/timer.c index c05a39d..7197108 100644
> --- a/arch/arm/cpu/arm1136/mx31/timer.c
> +++ b/arch/arm/cpu/arm1136/mx31/timer.c
> @@ -173,8 +173,8 @@ void mxc_hw_watchdog_enable(void)
>  #else
>  	secs = 64;
>  #endif
> -	writew(readw(&wdog->wcr) | (secs << WDOG_WT_SHIFT) | WDOG_ENABLE,
> -		&wdog->wcr);
> +	writew(readw(&wdog->wcr) | (secs << WDOG_WT_SHIFT) | WDOG_ENABLE
> +						| WDOG_WDZST, &wdog->wcr);

Maybe
tmp = readw();
tmp |= ...
writel(tmp, ...);

?
>  }
> 
> 
> diff --git a/arch/arm/include/asm/arch-mx31/imx-regs.h
> b/arch/arm/include/asm/arch-mx31/imx-regs.h index 2064870..338ba4d 100644
> --- a/arch/arm/include/asm/arch-mx31/imx-regs.h
> +++ b/arch/arm/include/asm/arch-mx31/imx-regs.h
> @@ -71,6 +71,8 @@ struct cspi_regs {
>  /* Watchdog Timer (WDOG) registers */
>  #define WDOG_ENABLE	(1 << 2)
>  #define WDOG_WT_SHIFT	8
> +#define WDOG_WDZST	1

(1 << 0) ?

> +
>  struct wdog_regs {
>  	u16 wcr;	/* Control */
>  	u16 wsr;	/* Service */


More information about the U-Boot mailing list