summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/arm/at91/at91_st.c4
-rw-r--r--sys/arm/xscale/i80321/i80321_wdog.c7
-rw-r--r--sys/arm/xscale/ixp425/ixp425_wdog.c2
-rw-r--r--sys/dev/ichwd/ichwd.c2
-rw-r--r--sys/dev/ipmi/ipmi.c2
-rw-r--r--sys/dev/mk48txx/mk48txx.c8
-rw-r--r--sys/dev/watchdog/watchdog.c2
-rw-r--r--sys/i386/i386/elan-mmcr.c2
-rw-r--r--sys/i386/i386/geode.c7
9 files changed, 15 insertions, 21 deletions
diff --git a/sys/arm/at91/at91_st.c b/sys/arm/at91/at91_st.c
index 6ec9730..9905113 100644
--- a/sys/arm/at91/at91_st.c
+++ b/sys/arm/at91/at91_st.c
@@ -171,13 +171,11 @@ at91st_watchdog(void *argp, u_int cmd, int *error)
int t;
t = cmd & WD_INTERVAL;
- if (cmd > 0 && t >= 22 && t <= 37) {
+ if (t >= 22 && t <= 37) {
wdog = (1 << (t - 22)) | ST_WDMR_RSTEN;
*error = 0;
} else {
wdog = 0;
- if (cmd > 0)
- *error = EINVAL;
}
WR4(ST_WDMR, wdog);
WR4(ST_CR, ST_CR_WDRST);
diff --git a/sys/arm/xscale/i80321/i80321_wdog.c b/sys/arm/xscale/i80321/i80321_wdog.c
index c6c749c..eff5f9d 100644
--- a/sys/arm/xscale/i80321/i80321_wdog.c
+++ b/sys/arm/xscale/i80321/i80321_wdog.c
@@ -111,18 +111,15 @@ iopwdog_watchdog_fn(void *private, u_int cmd, int *error)
cmd &= WD_INTERVAL;
if (cmd > 0 && cmd <= 63
- && (uint64_t)1 << (cmd & WD_INTERVAL) <=
- (uint64_t)sc->wdog_period * 1000000000) {
+ && (uint64_t)1<<cmd <= (uint64_t)sc->wdog_period * 1000000000) {
/* Valid value -> Enable watchdog */
iopwdog_tickle(sc);
sc->armed = 1;
*error = 0;
} else {
- /* XXX Can't disable this watchdog? */
+ /* Can't disable this watchdog! */
if (sc->armed)
*error = EOPNOTSUPP;
- else if (cmd > 0)
- *error = EINVAL;
}
}
diff --git a/sys/arm/xscale/ixp425/ixp425_wdog.c b/sys/arm/xscale/ixp425/ixp425_wdog.c
index a94ef0a..9db9cce 100644
--- a/sys/arm/xscale/ixp425/ixp425_wdog.c
+++ b/sys/arm/xscale/ixp425/ixp425_wdog.c
@@ -70,7 +70,7 @@ ixp425_watchdog(void *arg, u_int cmd, int *error)
u_int u = cmd & WD_INTERVAL;
WR4(sc, IXP425_OST_WDOG_KEY, OST_WDOG_KEY_MAJICK);
- if (cmd && 4 <= u && u <= 35) {
+ if (4 <= u && u <= 35) {
WR4(sc, IXP425_OST_WDOG_ENAB, 0);
/* approximate 66.66MHz cycles */
WR4(sc, IXP425_OST_WDOG, 2<<(u - 4));
diff --git a/sys/dev/ichwd/ichwd.c b/sys/dev/ichwd/ichwd.c
index a109f80..86d9ad3 100644
--- a/sys/dev/ichwd/ichwd.c
+++ b/sys/dev/ichwd/ichwd.c
@@ -194,8 +194,6 @@ ichwd_event(void *arg, unsigned int cmd, int *error)
} else {
if (sc->active)
ichwd_tmr_disable(sc);
- if (cmd > 0)
- *error = EINVAL;
}
}
diff --git a/sys/dev/ipmi/ipmi.c b/sys/dev/ipmi/ipmi.c
index 12cf3f5..d42aedc 100644
--- a/sys/dev/ipmi/ipmi.c
+++ b/sys/dev/ipmi/ipmi.c
@@ -656,8 +656,6 @@ ipmi_wd_event(void *arg, unsigned int cmd, int *error)
*error = 0;
} else {
ipmi_set_watchdog(sc, 0);
- if (cmd > 0)
- *error = 0;
}
}
diff --git a/sys/dev/mk48txx/mk48txx.c b/sys/dev/mk48txx/mk48txx.c
index fbc03c4..71ab8f5 100644
--- a/sys/dev/mk48txx/mk48txx.c
+++ b/sys/dev/mk48txx/mk48txx.c
@@ -295,9 +295,9 @@ mk48txx_watchdog(void *arg, u_int cmd, int *error)
dev = arg;
sc = device_get_softc(dev);
- wdog = 0;
t = cmd & WD_INTERVAL;
- if (cmd > 0 && t >= 26 && t <= 37) {
+ if (t >= 26 && t <= 37) {
+ wdog = 0;
if (t <= WD_TO_2SEC) {
wdog |= MK48TXX_WDOG_RB_1_16;
t -= 26;
@@ -317,8 +317,8 @@ mk48txx_watchdog(void *arg, u_int cmd, int *error)
if (sc->sc_flag & MK48TXX_WDOG_ENABLE_WDS)
wdog |= MK48TXX_WDOG_WDS;
*error = 0;
- } else if (cmd > 0) {
- *error = EINVAL;
+ } else {
+ wdog = 0;
}
mtx_lock(&sc->sc_mtx);
(*sc->sc_nvwr)(dev, sc->sc_clkoffset + MK48TXX_WDOG, wdog);
diff --git a/sys/dev/watchdog/watchdog.c b/sys/dev/watchdog/watchdog.c
index a1d8d88..06498c9 100644
--- a/sys/dev/watchdog/watchdog.c
+++ b/sys/dev/watchdog/watchdog.c
@@ -55,6 +55,8 @@ wd_ioctl(struct cdev *dev __unused, u_long cmd, caddr_t data,
return (EINVAL);
if ((u & (WD_ACTIVE | WD_PASSIVE)) == (WD_ACTIVE | WD_PASSIVE))
return (EINVAL);
+ if ((u & (WD_ACTIVE | WD_PASSIVE)) == 0 && (u & WD_INTERVAL) > 0)
+ return (EINVAL);
if (u & WD_PASSIVE)
return (ENOSYS); /* XXX Not implemented yet */
if ((u & WD_INTERVAL) == WD_TO_NEVER) {
diff --git a/sys/i386/i386/elan-mmcr.c b/sys/i386/i386/elan-mmcr.c
index be3e2a4..6556167 100644
--- a/sys/i386/i386/elan-mmcr.c
+++ b/sys/i386/i386/elan-mmcr.c
@@ -412,8 +412,6 @@ elan_watchdog(void *foo __unused, u_int spec, int *error)
elan_mmcr->WDTMRCTL = w; /* XXX What does this statement do? */
elan_mmcr->GPECHO = w;
cur = 0;
- if (u > 0)
- *error = 0;
}
}
diff --git a/sys/i386/i386/geode.c b/sys/i386/i386/geode.c
index 14d73ea..650dcba 100644
--- a/sys/i386/i386/geode.c
+++ b/sys/i386/i386/geode.c
@@ -136,7 +136,7 @@ geode_watchdog(void *foo __unused, u_int cmd, int *error)
u_int u, p, r;
u = cmd & WD_INTERVAL;
- if (cmd && u >= 14 && u <= 43) {
+ if (u >= 14 && u <= 43) {
u -= 14;
if (u > 16) {
p = u - 16;
@@ -165,7 +165,10 @@ geode_watchdog(void *foo __unused, u_int cmd, int *error)
static void
advantech_watchdog(void *foo __unused, u_int cmd, int *error)
{
- if (cmd && (cmd & WD_INTERVAL) <= WD_TO_1SEC) {
+ u_int u;
+
+ u = cmd & WD_INTERVAL;
+ if (u > 0 && u <= WD_TO_1SEC) {
outb(0x0443, 1);
*error = 0;
} else {
OpenPOWER on IntegriCloud