ref: a0948a43dd64ab384d920370ac85e51589b30f6e
parent: ad7a3f7f33448e5e1d808c8747916c20da51cd2f
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Tue Nov 10 19:55:53 EST 2020
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.
--- a/sys/src/9/pc/audiohda.c
+++ b/sys/src/9/pc/audiohda.c
@@ -1577,6 +1577,9 @@
}
wakeup(&r->r);
}
+ if(sts & Cis){+ csr8(ctlr, Rirbsts) = Rirbrover|Rirbrint;
+ }
iunlock(ctlr);
}
--
⑨