summaryrefslogtreecommitdiffstats
path: root/sys/dev/sound/isa/ess.c
diff options
context:
space:
mode:
authornetchild <netchild@FreeBSD.org>2005-07-31 13:51:04 +0000
committernetchild <netchild@FreeBSD.org>2005-07-31 13:51:04 +0000
commit390c36aab07cbefd3431dcaf2e7def68bd6e75fb (patch)
tree3ec66b454e488da43ce42dc8ada82c8f0cde65a0 /sys/dev/sound/isa/ess.c
parent988358baf08228d32968544bc6774ba3616f67ff (diff)
downloadFreeBSD-src-390c36aab07cbefd3431dcaf2e7def68bd6e75fb.zip
FreeBSD-src-390c36aab07cbefd3431dcaf2e7def68bd6e75fb.tar.gz
- Fixup the locking.
- Don't mark MPSAFE (yet). Submitted by: Ariff Abdullah <skywizard@MyBSD.org.my>
Diffstat (limited to 'sys/dev/sound/isa/ess.c')
-rw-r--r--sys/dev/sound/isa/ess.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/dev/sound/isa/ess.c b/sys/dev/sound/isa/ess.c
index 248aebe..64d617c 100644
--- a/sys/dev/sound/isa/ess.c
+++ b/sys/dev/sound/isa/ess.c
@@ -361,8 +361,11 @@ ess_intr(void *arg)
rirq = (src & sc->rch.hwch)? 1 : 0;
if (pirq) {
- if (sc->pch.run)
+ if (sc->pch.run) {
+ ess_unlock(sc);
chn_intr(sc->pch.channel);
+ ess_lock(sc);
+ }
if (sc->pch.stopping) {
sc->pch.run = 0;
sndbuf_dma(sc->pch.buffer, PCMTRIG_STOP);
@@ -375,8 +378,11 @@ ess_intr(void *arg)
}
if (rirq) {
- if (sc->rch.run)
+ if (sc->rch.run) {
+ ess_unlock(sc);
chn_intr(sc->rch.channel);
+ ess_lock(sc);
+ }
if (sc->rch.stopping) {
sc->rch.run = 0;
sndbuf_dma(sc->rch.buffer, PCMTRIG_STOP);
OpenPOWER on IntegriCloud