diff options
author | ache <ache@FreeBSD.org> | 1994-04-13 01:10:08 +0000 |
---|---|---|
committer | ache <ache@FreeBSD.org> | 1994-04-13 01:10:08 +0000 |
commit | 2dbc8e074230947c282500dbbc620e7d275fc5a2 (patch) | |
tree | b3492eade2eff58c5b0d66caa5612ec57d1cb927 /sys/i386/isa/sound/soundcard.c | |
parent | 7607f200409c69400e6b580c29fc4b11f30ec3a1 (diff) | |
download | FreeBSD-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.c | 18 |
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. |