diff options
-rw-r--r-- | sys/dev/zs/z8530var.h | 2 | ||||
-rw-r--r-- | sys/dev/zs/zs.c | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/sys/dev/zs/z8530var.h b/sys/dev/zs/z8530var.h index 1e5fef7..ecab65a 100644 --- a/sys/dev/zs/z8530var.h +++ b/sys/dev/zs/z8530var.h @@ -65,7 +65,7 @@ struct zstty_softc { int zs_attach(device_t dev); int zs_probe(device_t dev); -void zs_intr(void *v); +int zs_intr(void *v); int zstty_attach(device_t dev); int zstty_probe(device_t dev); diff --git a/sys/dev/zs/zs.c b/sys/dev/zs/zs.c index 21195a2..f6795af 100644 --- a/sys/dev/zs/zs.c +++ b/sys/dev/zs/zs.c @@ -197,7 +197,7 @@ zs_attach(device_t dev) return (0); } -void +int zs_intr(void *v) { struct zs_softc *sc = v; @@ -216,8 +216,11 @@ zs_intr(void *v) needsoft |= zstty_intr(sc->sc_child[0], rr3 >> 3); if ((rr3 & (ZSRR3_IP_B_RX | ZSRR3_IP_B_TX | ZSRR3_IP_B_STAT)) != 0) needsoft |= zstty_intr(sc->sc_child[1], rr3); - if (needsoft) + if (needsoft) { swi_sched(sc->sc_softih, 0); + return (FILTER_HANDLED); + } + return (FILTER_STRAY); } static void |