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 | |
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')
-rw-r--r-- | sys/i386/isa/sound/local.h | 2 | ||||
-rw-r--r-- | sys/i386/isa/sound/sb_dsp.c | 2 | ||||
-rw-r--r-- | sys/i386/isa/sound/soundcard.c | 18 |
3 files changed, 5 insertions, 17 deletions
diff --git a/sys/i386/isa/sound/local.h b/sys/i386/isa/sound/local.h index 26d294b..fd44f85 100644 --- a/sys/i386/isa/sound/local.h +++ b/sys/i386/isa/sound/local.h @@ -5,7 +5,7 @@ #define KERNEL_SOUNDCARD #endif -#define DSP_BUFFSIZE 32768 +#define DSP_BUFFSIZE 65536 #define SELECTED_SOUND_OPTIONS 0xffffffff #define SOUND_VERSION_STRING "2.4" #define SOUND_CONFIG_DATE "Mon Mar 7 23:54:09 PST 1994" diff --git a/sys/i386/isa/sound/sb_dsp.c b/sys/i386/isa/sound/sb_dsp.c index 9f0bfb2..783e9b8 100644 --- a/sys/i386/isa/sound/sb_dsp.c +++ b/sys/i386/isa/sound/sb_dsp.c @@ -722,7 +722,7 @@ sb_dsp_init (long mem_start, struct address_info *hw_config) if (num_dspdevs < MAX_DSP_DEV) { dsp_devs[my_dev = num_dspdevs++] = &sb_dsp_operations; - sound_buffcounts[my_dev] = DSP_BUFFCOUNT; + sound_buffcounts[my_dev] = 1; sound_buffsizes[my_dev] = DSP_BUFFSIZE; sound_dsp_dmachan[my_dev] = hw_config->dma; sound_dma_automode[my_dev] = 0; 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. |