svn commit: r297963 - head/sys/dev/wbwd

Alexander Motin mav at FreeBSD.org
Thu Apr 14 12:50:29 UTC 2016


Author: mav
Date: Thu Apr 14 12:50:27 2016
New Revision: 297963
URL: https://svnweb.freebsd.org/changeset/base/297963

Log:
  Remove watchdog timer stop check.
  
  There are bunch of reports that this check fails at least on Nuvoton
  NCT6776 chips.  I don't see why this check needed there, and Linux does
  not have it either.  So far this check only made watchdogd unstopable.
  
  MFC after:	1 month

Modified:
  head/sys/dev/wbwd/wbwd.c

Modified: head/sys/dev/wbwd/wbwd.c
==============================================================================
--- head/sys/dev/wbwd/wbwd.c	Thu Apr 14 12:46:46 2016	(r297962)
+++ head/sys/dev/wbwd/wbwd.c	Thu Apr 14 12:50:27 2016	(r297963)
@@ -505,19 +505,10 @@ wb_set_watchdog(struct wb_softc *sc, uns
 	/* Watchdog is configured as part of LDN 8 (GPIO Port2, Watchdog) */
 	write_reg(sc, WB_LDN_REG, WB_LDN_REG_LDN8);
 
-	/* Disable and validate or arm/reset watchdog. */
 	if (timeout == 0) {
 		/* Disable watchdog. */
-		write_reg(sc, sc->time_reg, 0x00);
-		sc->reg_timeout = read_reg(sc, sc->time_reg);
-		(*sc->ext_cfg_exit_f)(sc, 0);
-
-		/* Re-check. */
-		if (sc->reg_timeout != 0x00) {
-			device_printf(sc->dev, "Failed to disable watchdog: "
-			    "0x%02x.\n", sc->reg_timeout);
-			return (EIO);
-		}
+		sc->reg_timeout = 0;
+		write_reg(sc, sc->time_reg, sc->reg_timeout);
 
 	} else {
 		/* Read current scaling factor. */
@@ -547,12 +538,12 @@ wb_set_watchdog(struct wb_softc *sc, uns
 
 		/* Set timer and arm/reset the watchdog. */
 		write_reg(sc, sc->time_reg, sc->reg_timeout);
-		(*sc->ext_cfg_exit_f)(sc, 0);
 	}
 
+	(*sc->ext_cfg_exit_f)(sc, 0);
+
 	if (sc->debug_verbose)
 		wb_print_state(sc, "After watchdog counter (re)load");
-
 	return (0);
 }
 


More information about the svn-src-all mailing list