summaryrefslogtreecommitdiffstats
path: root/sys/dev/digi/digi_isa.c
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2002-04-10 12:03:36 +0000
committerbrian <brian@FreeBSD.org>2002-04-10 12:03:36 +0000
commitee1c37fb3536a345b7a0453ff23f2a502156e220 (patch)
treedc882a800fcc5cef86e5213992ca98131458e06f /sys/dev/digi/digi_isa.c
parent4100d7ad0fd1685daadebee6380b55dc43d1a944 (diff)
downloadFreeBSD-src-ee1c37fb3536a345b7a0453ff23f2a502156e220.zip
FreeBSD-src-ee1c37fb3536a345b7a0453ff23f2a502156e220.tar.gz
Change more uses of tsleep() to digi_delay() and make the loop counts more
sane.
Diffstat (limited to 'sys/dev/digi/digi_isa.c')
-rw-r--r--sys/dev/digi/digi_isa.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/sys/dev/digi/digi_isa.c b/sys/dev/digi/digi_isa.c
index 713a893..463a38b 100644
--- a/sys/dev/digi/digi_isa.c
+++ b/sys/dev/digi/digi_isa.c
@@ -112,12 +112,14 @@ digi_isa_check(struct digi_softc *sc)
/* Invasive probe - reset the card */
outb(sc->port, FEPRST);
- for (i = 1000; DELAY(1), i >= 0; i--)
+ for (i = 0; i < 100; i++) {
if ((inb(sc->port) & FEPMASK) == FEPRST)
break;
- if (i == -1)
+ digi_delay(sc, "digirst");
+ }
+ if (i == 100)
return (NULL);
- DLOG(DIGIDB_INIT, (sc->dev, "got reset after %d us\n", 1000 - i));
+ DLOG(DIGIDB_INIT, (sc->dev, "got reset after %d delays\n", i));
ident = inb(sc->port);
@@ -373,18 +375,17 @@ digi_isa_attach(device_t dev)
reset |= FEPMEM;
outb(sc->port, reset);
- for (i = 10; DELAY(1), i >= 0; i--) {
+ for (i = 0; i < 100; i++) {
if ((inb(sc->port) & FEPMASK) == reset)
break;
- tsleep(sc, PUSER | PCATCH, "digirst0", hz / 5);
+ digi_delay(sc, "digirst1");
}
- if (i == -1) {
+ if (i == 100) {
device_printf(dev, "1st reset failed\n");
sc->hidewin(sc);
goto failed;
}
- DLOG(DIGIDB_INIT, (sc->dev, "got reset after %d us\n",
- (10 - i) * (hz / 5)));
+ DLOG(DIGIDB_INIT, (sc->dev, "got reset after %d delays\n", i));
if (sc->model != PCXI) {
t = (sc->pmem >> 8) & 0xffe0;
@@ -396,17 +397,18 @@ digi_isa_attach(device_t dev)
if (sc->model == PCXI || sc->model == PCXE) {
outb(sc->port, FEPRST | FEPMEM);
- for (i = 10000; DELAY(1), i >= 0; i--)
+ for (i = 0; i < 100; i++) {
if ((inb(sc->port) & FEPMASK) != FEPRST)
break;
- if (i == -1) {
+ digi_delay(sc, "digirst2");
+ }
+ if (i == 100) {
device_printf(dev, "2nd reset failed (0x%02x)\n",
inb(sc->port));
sc->hidewin(sc);
goto failed;
}
- DLOG(DIGIDB_INIT, (sc->dev, "got memory after %d us\n",
- 10000 - i));
+ DLOG(DIGIDB_INIT, (sc->dev, "got memory after %d delays\n", i));
}
DLOG(DIGIDB_INIT, (sc->dev, "short memory test\n"));
OpenPOWER on IntegriCloud