summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/dev/ieee488/ibfoo.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/sys/dev/ieee488/ibfoo.c b/sys/dev/ieee488/ibfoo.c
index 5360522..f860d44 100644
--- a/sys/dev/ieee488/ibfoo.c
+++ b/sys/dev/ieee488/ibfoo.c
@@ -235,7 +235,7 @@ gpib_ib_timeout(void *arg)
KASSERT(u->dmachan >= 0, ("Bogus dmachan = %d", u->dmachan));
upd7210_wr(u, IMR1, 0);
upd7210_wr(u, IMR2, 0);
- ib->mode = IDLE;
+ ib->mode = BUSY;
wakeup(&ib->buflen);
}
if (ib->mode > BUSY) {
@@ -254,7 +254,7 @@ gpib_ib_timeout(void *arg)
}
}
if (ib->mode != IDLE)
- callout_reset(&ib->callout, hz / 100, gpib_ib_timeout, arg);
+ callout_reset(&ib->callout, hz / 5, gpib_ib_timeout, arg);
mtx_unlock(&u->mutex);
}
@@ -363,8 +363,6 @@ pio_odata(struct upd7210 *u, u_char *data, int len)
ib->buflen = len;
upd7210_wr(u, IMR1, IXR1_DO);
- gpib_ib_irq(u, 1);
-
gpib_ib_wait_xfer(u, ib);
mtx_unlock(&u->mutex);
@@ -576,8 +574,8 @@ ibrd(struct ibfoo *ib)
config_eos(ib->u, ib->h);
ib->rdh = ib->h;
ib->wrh = NULL;
- upd7210_goto_standby(ib->u);
}
+ upd7210_goto_standby(ib->u);
dp = ib->ap->buffer;
bc = ib->ap->cnt;
error = 0;
@@ -596,6 +594,7 @@ ibrd(struct ibfoo *ib)
bc -= i;
dp += i;
}
+ upd7210_take_ctrl_async(ib->u);
free(bp, M_IBFOO);
return (error);
}
@@ -677,11 +676,12 @@ ibwrt(struct ibfoo *ib)
i = pio_cmd(ib->u, buf, i);
ib->rdh = NULL;
ib->wrh = ib->h;
- upd7210_goto_standby(ib->u);
config_eos(ib->u, ib->h);
}
+ upd7210_goto_standby(ib->u);
ib->doeoi = ib->h->eot;
i = pio_odata(ib->u, bp, ib->ap->cnt);
+ upd7210_take_ctrl_async(ib->u);
ib->ap->__ibcnt = i;
free(bp, M_IBFOO);
return (0);
@@ -975,7 +975,7 @@ gpib_ib_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int fflag, struct thre
ib->h = h;
ib->mode = BUSY;
ib->deadline = deadline;
- callout_reset(&ib->callout, hz / 100, gpib_ib_timeout, u);
+ callout_reset(&ib->callout, hz / 5, gpib_ib_timeout, u);
error = ih->func(ib);
OpenPOWER on IntegriCloud