Don't bother. I've tried it, and it doesn't work. The only thing that seems
to help is the following patch, originally by Andrea Arcangeli.
Note that this is against stock 2.1.125 -- I don't know if it will cleanly
apply against the ac series.
--- linux/drivers/sound/dmabuf.c~ Wed Sep 2 14:23:22 1998
+++ linux/drivers/sound/dmabuf.c Sun Oct 11 13:10:12 1998
@@ -614,7 +614,6 @@
else {
int chan = dmap->dma;
clear_dma_ff(chan);
- disable_dma(dmap->dma);
pos = get_dma_residue(chan);
pos = dmap->bytes_in_use - pos;
@@ -633,7 +632,6 @@
pos = 0;
if (pos >= dmap->bytes_in_use)
pos = 0;
- enable_dma(dmap->dma);
}
restore_flags(flags);
/* printk( "%04x ", pos); */
@@ -989,9 +987,7 @@
if (!(dmap->flags & DMA_NODMA)) {
int chan = dmap->dma, pos, n;
clear_dma_ff(chan);
- disable_dma(dmap->dma);
pos = dmap->bytes_in_use - get_dma_residue(chan);
- enable_dma(dmap->dma);
pos = pos / dmap->fragment_size; /* Actual qhead */
if (pos < 0 || pos >= dmap->nbufs)
pos = 0;
@@ -1079,9 +1075,7 @@
if (!(dmap->flags & DMA_NODMA)) {
int chan = dmap->dma, pos, n;
clear_dma_ff(chan);
- disable_dma(dmap->dma);
pos = dmap->bytes_in_use - get_dma_residue(chan);
- enable_dma(dmap->dma);
pos = pos / dmap->fragment_size; /* Actual qhead */
if (pos < 0 || pos >= dmap->nbufs)
-- -Sean Connor (sec@konatsu.ml.org) (sec@cableregina.com) (sec@softhome.net)The day Microsoft produces something that doesn't suck is the day they start making vacuum cleaners.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/