summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2020-11-11 00:55:53 +0100
committercinap_lenrek <cinap_lenrek@felloff.net>2020-11-11 00:55:53 +0100
commit0c846e605b33e86a35dd6562df168a8b1a6beeae (patch)
tree076552a63f3bd53b6ad2414da737a15ddb4b785b
parente543995bba25daacf2c7f1a9ff3ceee87bc5deee (diff)
audiohda: reset irbsts bits in hdainterrupt() (thanks LordCreepity)
reseting irbsts bits in hdacmd() only works while interrupts are disabled during hdareset(). once interrupts are enabled we need to reset the irbsts bits in the interrupt handler or else the interrupt never clears and locks up the system.
-rw-r--r--sys/src/9/pc/audiohda.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/src/9/pc/audiohda.c b/sys/src/9/pc/audiohda.c
index 92c7eedde..da427e352 100644
--- a/sys/src/9/pc/audiohda.c
+++ b/sys/src/9/pc/audiohda.c
@@ -1577,6 +1577,9 @@ hdainterrupt(Ureg *, void *arg)
}
wakeup(&r->r);
}
+ if(sts & Cis){
+ csr8(ctlr, Rirbsts) = Rirbrover|Rirbrint;
+ }
iunlock(ctlr);
}