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