PERFORCE change 109864 for review

Sam Leffler sam at FreeBSD.org
Mon Nov 13 18:25:14 UTC 2006


http://perforce.freebsd.org/chv.cgi?CH=109864

Change 109864 by sam at sam_ebb on 2006/11/13 18:18:09

	Grr, fix it; write key to the correct register.  Turns
	out my guess on units conversion for the timer register
	was close enough--it's a 66.66MHz clock.

Affected files ...

.. //depot/projects/arm/src/sys/arm/xscale/ixp425/ixp425_wdog.c#2 edit

Differences ...

==== //depot/projects/arm/src/sys/arm/xscale/ixp425/ixp425_wdog.c#2 (text+ko) ====

@@ -68,22 +68,21 @@
 {
 	struct ixpwdog_softc *sc = arg;
 	u_int u = cmd & WD_INTERVAL;
-	uint32_t ena;
 
-	WR4(sc, IXP425_OST_WDOG, OST_WDOG_KEY_MAJICK);
-	ena = RD4(sc, IXP425_OST_WDOG_ENAB);
-	if (cmd && u <= 35) {
-		/* XXX what are the units? */
+	WR4(sc, IXP425_OST_WDOG_KEY, OST_WDOG_KEY_MAJICK);
+	if (cmd && 4 <= u && u <= 35) {
+		WR4(sc, IXP425_OST_WDOG_ENAB, 0);
+		/* approximate 66.66MHz cycles */
 		WR4(sc, IXP425_OST_WDOG, 2<<(u - 4));
 		/* NB: reset on timer expiration */
 		WR4(sc, IXP425_OST_WDOG_ENAB,
-		    ena | OST_WDOG_ENAB_CNT_ENA | OST_WDOG_ENAB_RST_ENA);
+		    OST_WDOG_ENAB_CNT_ENA | OST_WDOG_ENAB_RST_ENA);
 		*error = 0;
 	} else {
 		/* disable watchdog */
-		WR4(sc, IXP425_OST_WDOG_ENAB, ena &~ OST_WDOG_ENAB_CNT_ENA);
+		WR4(sc, IXP425_OST_WDOG_ENAB, 0);
 	}
-	WR4(sc, IXP425_OST_WDOG, 0);
+	WR4(sc, IXP425_OST_WDOG_KEY, 0);
 }
 
 static int


More information about the p4-projects mailing list