From 0c846e605b33e86a35dd6562df168a8b1a6beeae Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Wed, 11 Nov 2020 00:55:53 +0100 Subject: 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. --- sys/src/9/pc/audiohda.c | 3 +++ 1 file changed, 3 insertions(+) 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); } -- cgit v1.2.3