diff --git a/sys/dev/ieee488/upd7210.c b/sys/dev/ieee488/upd7210.c index ce2c91be4ad..6fbb44f00c8 100644 --- a/sys/dev/ieee488/upd7210.c +++ b/sys/dev/ieee488/upd7210.c @@ -347,14 +347,16 @@ gpib_ib_irq(struct upd7210 *u) ib = u->ibfoo; - if ((u->rreg[ISR2] & IXR2_CO) && ib->cmdlen > 0) { + if ((u->rreg[ISR2] & IXR2_CO) && ib->cmdbuf != NULL) { + if (ib->cmdlen == 0) { + wakeup(ib); + ib->cmdbuf = NULL; + write_reg(u, IMR2, 0); + return (1); + } write_reg(u, CDOR, *ib->cmdbuf); ib->cmdbuf++; ib->cmdlen--; - if (ib->cmdlen == 0) { - wakeup(ib); - write_reg(u, IMR2, 0); - } return (1); } if ((u->rreg[ISR1] & IXR1_DO) && ib->dobuf != NULL) {