shithub: riscv

Download patch

ref: 0c846e605b33e86a35dd6562df168a8b1a6beeae
parent: e543995bba25daacf2c7f1a9ff3ceee87bc5deee
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);
 }