From 22a9eb533478401923fd78d8f98fbd4b69b2c4a1 Mon Sep 17 00:00:00 2001 From: Poul-Henning Kamp Date: Sun, 6 Mar 2005 19:43:12 +0000 Subject: [PATCH] Always go to standby efter each call. --- sys/dev/ieee488/ibfoo.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sys/dev/ieee488/ibfoo.c b/sys/dev/ieee488/ibfoo.c index 536052276cfd..f860d44f49ee 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);