diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-11-11 00:55:53 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2020-11-11 00:55:53 +0100 |
commit | 0c846e605b33e86a35dd6562df168a8b1a6beeae (patch) | |
tree | 076552a63f3bd53b6ad2414da737a15ddb4b785b | |
parent | e543995bba25daacf2c7f1a9ff3ceee87bc5deee (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.c | 3 |
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); } |