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
|
@ -607,16 +607,13 @@ static void msg_hardware(void) {
|
||||||
|
|
||||||
u32_t i;
|
u32_t i;
|
||||||
|
|
||||||
/* while we have an interrupt */
|
/* loop over all sub devices */
|
||||||
while ( drv_int_sum()) {
|
for ( i = 0; i < drv.NrOfSubDevices; i++) {
|
||||||
/* loop over all sub devices */
|
/* if interrupt from sub device and Dma transfer
|
||||||
for ( i = 0; i < drv.NrOfSubDevices; i++) {
|
was actually busy, take care of business */
|
||||||
/* if interrupt from sub device and Dma transfer
|
if( drv_int(i) && sub_dev[i].DmaBusy ) {
|
||||||
was actually busy, take care of business */
|
if (sub_dev[i].DmaMode == DEV_WRITE_S) handle_int_write(i);
|
||||||
if( drv_int(i) && sub_dev[i].DmaBusy ) {
|
if (sub_dev[i].DmaMode == DEV_READ_S) handle_int_read(i);
|
||||||
if (sub_dev[i].DmaMode == DEV_WRITE_S) handle_int_write(i);
|
|
||||||
if (sub_dev[i].DmaMode == DEV_READ_S) handle_int_read(i);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue