summaryrefslogtreecommitdiffstats
path: root/sys/i386/isa/sound
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
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')
-rw-r--r--sys/i386/isa/sound/local.h2
-rw-r--r--sys/i386/isa/sound/sb_dsp.c2
-rw-r--r--sys/i386/isa/sound/soundcard.c18
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.
OpenPOWER on IntegriCloud