]> git.sur5r.net Git - u-boot/blobdiff - drivers/watchdog/imx_watchdog.c
Merge branch 'master' of git://git.denx.de/u-boot-nios
[u-boot] / drivers / watchdog / imx_watchdog.c
index d5993b4d26d6ba6018031cc5b31f7966d13a5ca8..0d775956bff45fd52687676f16fc706788c2f6ff 100644 (file)
@@ -8,20 +8,7 @@
 #include <asm/io.h>
 #include <watchdog.h>
 #include <asm/arch/imx-regs.h>
-
-struct watchdog_regs {
-       u16     wcr;    /* Control */
-       u16     wsr;    /* Service */
-       u16     wrsr;   /* Reset Status */
-};
-
-#define WCR_WDZST      0x01
-#define WCR_WDBG       0x02
-#define WCR_WDE                0x04    /* WDOG enable */
-#define WCR_WDT                0x08
-#define WCR_SRS                0x10
-#define WCR_WDW                0x80
-#define SET_WCR_WT(x)  (x << 8)
+#include <fsl_wdog.h>
 
 #ifdef CONFIG_IMX_WATCHDOG
 void hw_watchdog_reset(void)
@@ -47,7 +34,7 @@ void hw_watchdog_init(void)
 #endif
        timeout = (CONFIG_WATCHDOG_TIMEOUT_MSECS / 500) - 1;
        writew(WCR_WDZST | WCR_WDBG | WCR_WDE | WCR_WDT | WCR_SRS |
-               WCR_WDW | SET_WCR_WT(timeout), &wdog->wcr);
+               SET_WCR_WT(timeout), &wdog->wcr);
        hw_watchdog_reset();
 }
 #endif
@@ -56,7 +43,8 @@ void reset_cpu(ulong addr)
 {
        struct watchdog_regs *wdog = (struct watchdog_regs *)WDOG1_BASE_ADDR;
 
-       writew(WCR_WDE, &wdog->wcr);
+       clrsetbits_le16(&wdog->wcr, 0, WCR_WDE);
+
        writew(0x5555, &wdog->wsr);
        writew(0xaaaa, &wdog->wsr);     /* load minimum 1/2 second timeout */
        while (1) {