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.este...@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);
 }
 
 
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
+
 struct wdog_regs {
        u16 wcr;        /* Control */
        u16 wsr;        /* Service */
-- 
1.6.0.4


_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to