libaudiodriver: handle interrupt only once
Apparently, qemu's sb16 doesn't reset the interrupt register of the mixer and the driver ends up in an endless loop when playing a "multi-fragment" sample. Change-Id: I47633b99a0d79ba201aec785da69fb3950e026bf
This commit is contained in:
parent
b026d9f946
commit
842c4eda7f
1 changed files with 7 additions and 10 deletions
|
@ -607,8 +607,6 @@ static void msg_hardware(void) {
|
||||||
|
|
||||||
u32_t i;
|
u32_t i;
|
||||||
|
|
||||||
/* while we have an interrupt */
|
|
||||||
while ( drv_int_sum()) {
|
|
||||||
/* loop over all sub devices */
|
/* loop over all sub devices */
|
||||||
for ( i = 0; i < drv.NrOfSubDevices; i++) {
|
for ( i = 0; i < drv.NrOfSubDevices; i++) {
|
||||||
/* if interrupt from sub device and Dma transfer
|
/* if interrupt from sub device and Dma transfer
|
||||||
|
@ -618,7 +616,6 @@ static void msg_hardware(void) {
|
||||||
if (sub_dev[i].DmaMode == DEV_READ_S) handle_int_read(i);
|
if (sub_dev[i].DmaMode == DEV_READ_S) handle_int_read(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* As IRQ_REENABLE is not on in sys_irqsetpolicy, we must
|
/* As IRQ_REENABLE is not on in sys_irqsetpolicy, we must
|
||||||
* re-enable out interrupt after every interrupt.
|
* re-enable out interrupt after every interrupt.
|
||||||
|
|
Loading…
Reference in a new issue