Workaround missing interrupts - dma_reset on them (when timeout occurse).

When you start tracker and produce some heavy disk activity,
output interrupts becomes lost and I don't know how to solve it
finally. Newly added code at least allows recovery after timeout.
This commit is contained in:
Andrey A. Chernov 1996-01-17 05:43:38 +00:00
parent 19851e4b7f
commit e4ff5c2aef
1 changed files with 2 additions and 0 deletions

View File

@ -357,6 +357,7 @@ DMAbuf_getrdbuffer (int dev, char **buf, int *len, int dontblock)
if (TIMED_OUT (dev_sleeper[dev], dev_sleep_flag[dev]))
{
printk ("Sound: DMA timed out - IRQ/DRQ config error?\n");
dma_reset (dev);
err = EIO;
SET_ABORT_FLAG (dev_sleeper[dev], dev_sleep_flag[dev]);
}
@ -607,6 +608,7 @@ DMAbuf_getwrbuffer (int dev, char **buf, int *size, int dontblock)
if (TIMED_OUT (dev_sleeper[dev], dev_sleep_flag[dev]))
{
printk ("Sound: DMA timed out - IRQ/DRQ config error?\n");
dma_reset (dev);
err = EIO;
abort = 1;
SET_ABORT_FLAG (dev_sleeper[dev], dev_sleep_flag[dev]);