Module Name:    src
Committed By:   martin
Date:           Sun Jun 14 08:32:02 UTC 2015

Modified Files:
        src/sys/arch/arm/allwinner: awin_wdt.c

Log Message:
Add disarm support


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/allwinner/awin_wdt.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/allwinner/awin_wdt.c
diff -u src/sys/arch/arm/allwinner/awin_wdt.c:1.8 src/sys/arch/arm/allwinner/awin_wdt.c:1.9
--- src/sys/arch/arm/allwinner/awin_wdt.c:1.8	Tue Jun  9 12:46:37 2015
+++ src/sys/arch/arm/allwinner/awin_wdt.c	Sun Jun 14 08:32:02 2015
@@ -33,7 +33,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: awin_wdt.c,v 1.8 2015/06/09 12:46:37 martin Exp $");
+__KERNEL_RCSID(1, "$NetBSD: awin_wdt.c,v 1.9 2015/06/14 08:32:02 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -145,10 +145,12 @@ awin_wdt_setmode(struct sysmon_wdog *smw
 	}
 
 	if ((smw->smw_mode & WDOG_MODE_MASK) == WDOG_MODE_DISARMED) {
-		/*
-		 * We can't disarm the watchdog.
-		 */
-		return sc->sc_wdog_armed ? EBUSY : 0;
+		if (sc->sc_wdog_armed)
+			/* can not disarm pre-armed kernel mode wdog */
+			return EBUSY;
+
+		bus_space_write_4(sc->sc_bst, sc->sc_bsh, sc->sc_mode_reg, 0);
+		return 0;
 	}
 
 	if (sc->sc_wdog_armed && smw->smw_period == sc->sc_wdog_period) {

Reply via email to