summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/sound/soundcard.c
diff options
context:
space:
mode:
authorache <ache@FreeBSD.org>1994-04-13 01:10:08 +0000
committerache <ache@FreeBSD.org>1994-04-13 01:10:08 +0000
commit2dbc8e074230947c282500dbbc620e7d275fc5a2 (patch)
treeb3492eade2eff58c5b0d66caa5612ec57d1cb927 /sys/i386/isa/sound/soundcard.c
parent7607f200409c69400e6b580c29fc4b11f30ec3a1 (diff)
downloadFreeBSD-src-2dbc8e074230947c282500dbbc620e7d275fc5a2.zip
FreeBSD-src-2dbc8e074230947c282500dbbc620e7d275fc5a2.tar.gz
Now SoundDriver use 64K DMA region instead of older 4K by
using new contigmalloc function.
Diffstat (limited to 'sys/i386/isa/sound/soundcard.c')
-rw-r--r--sys/i386/isa/sound/soundcard.c18
1 files changed, 3 insertions, 15 deletions
diff --git a/sys/i386/isa/sound/soundcard.c b/sys/i386/isa/sound/soundcard.c
index c2b39d9..60b4ff3 100644
--- a/sys/i386/isa/sound/soundcard.c
+++ b/sys/i386/isa/sound/soundcard.c
@@ -339,14 +339,10 @@ sound_mem_init (void)
if (sound_buffsizes[dev] > 65536) /* Larger is not possible (yet) */
sound_buffsizes[dev] = 65536;
-#if 0
if (sound_dsp_dmachan[dev] > 3 && sound_buffsizes[dev] > 65536)
dma_pagesize = 131072; /* 128k */
else
dma_pagesize = 65536;
-#else
- dma_pagesize = 4096; /* use bounce buffer */
-#endif
/* More sanity checks */
@@ -373,24 +369,16 @@ sound_mem_init (void)
*
* This really needs some kind of finetuning.
*/
- char *tmpbuf = malloc (2*sound_buffsizes[dev], M_DEVBUF, M_NOWAIT);
- unsigned long addr, rounded;
+ char *tmpbuf = contigmalloc (sound_buffsizes[dev], M_DEVBUF, M_NOWAIT, 0xFFFFFFul, 0ul, 0xFFFFul);
if (tmpbuf == NULL)
{
printk ("snd: Unable to allocate %d bytes of buffer\n",
- 2 * sound_buffsizes[dev]);
+ sound_buffsizes[dev]);
return;
}
- addr = kvtop (tmpbuf);
- /*
- * Align the start address
- */
- rounded = (addr & ~(dma_pagesize - 1)) + dma_pagesize;
-
- snd_raw_buf[dev][snd_raw_count[dev]] =
- &tmpbuf[rounded - addr]; /* Compute offset */
+ snd_raw_buf[dev][snd_raw_count[dev]] = tmpbuf;
/*
* Use virtual address as the physical address, since
* isa_dmastart performs the phys address computation.
OpenPOWER on IntegriCloud