Upgrade the sound drivers to VoxWare pre-3.0 and fix a number of bugs.

Make the sound configuration a little neater
	(see /sys/i386/isa/sound/Readme.freebsd)
Add support for the Microsoft Sound Source.
Document the sound options again.
Submitted by:	Sujal Patel <smpatel@wam.umd.edu>
Obtained from:	Voxware
This commit is contained in:
Jordan K. Hubbard 1995-03-04 21:11:21 +00:00
parent dd8723c2e3
commit ca83dc2de1
57 changed files with 580 additions and 445 deletions

View File

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.148 1995/03/01 22:27:45 dufault Exp $
# $Id: LINT,v 1.149 1995/03/02 04:06:07 jkh Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -19,7 +19,7 @@
machine "i386"
cpu "I386_CPU"
cpu "I486_CPU"
cpu "I586_CPU" # a/k/a Pentium(tm)
cpu "I586_CPU" # aka Pentium(tm)
#
# This is the ``identification'' of the kernel. Usually this should
@ -321,7 +321,9 @@ controller isa0
# Options for `isa':
#
# ALLOW_CONFLICT_DRQ suppresses the DMA conflict checks. This option is
# not known to be good for anything.
# included so that people with sound cards that support multiple emulations
# can setup different sound drivers on the same DMA channel. There are no
# other known uses for this option.
#
# ALLOW_CONFLICT_IOADDR suppresses the I/O address conflict checks, so
# that the PS/2 mouse driver doesn't conflict with the console driver.
@ -533,11 +535,26 @@ pseudo-device ispy 1
#
# Audio drivers: `snd', `pca'
#
# snd: Voxware sound drivers for various cards (see file `sound.doc')
# snd: Voxware sound drivers for various cards
# see /usr/src/sys/i386/isa/sound/sound.doc for details
# pca: PCM audio through your PC speaker
#
# Someday, Voxware configuration will be done properly.
#
options AUDIO_PAS
options AUDIO_SB
options AUDIO_ADLIB
options AUDIO_GUS
options AUDIO_MPU401
options AUDIO_UART6850
options AUDIO_PSS
options AUDIO_GUS16
options AUDIO_GUSMAX
options AUDIO_MSS
options AUDIO_SBPRO
options AUDIO_SB16
options AUDIO_YM3812
device snd10 at isa? port 0x530 irq 10 drq 1 vector adintr
device snd5 at isa? port 0x330 irq 6 vector mpuintr
device snd4 at isa? port 0x220 irq 15 drq 6 vector gusintr
device snd3 at isa? port 0x388 irq 10 drq 6 vector pasintr

View File

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.148 1995/03/01 22:27:45 dufault Exp $
# $Id: LINT,v 1.149 1995/03/02 04:06:07 jkh Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -19,7 +19,7 @@
machine "i386"
cpu "I386_CPU"
cpu "I486_CPU"
cpu "I586_CPU" # a/k/a Pentium(tm)
cpu "I586_CPU" # aka Pentium(tm)
#
# This is the ``identification'' of the kernel. Usually this should
@ -321,7 +321,9 @@ controller isa0
# Options for `isa':
#
# ALLOW_CONFLICT_DRQ suppresses the DMA conflict checks. This option is
# not known to be good for anything.
# included so that people with sound cards that support multiple emulations
# can setup different sound drivers on the same DMA channel. There are no
# other known uses for this option.
#
# ALLOW_CONFLICT_IOADDR suppresses the I/O address conflict checks, so
# that the PS/2 mouse driver doesn't conflict with the console driver.
@ -533,11 +535,26 @@ pseudo-device ispy 1
#
# Audio drivers: `snd', `pca'
#
# snd: Voxware sound drivers for various cards (see file `sound.doc')
# snd: Voxware sound drivers for various cards
# see /usr/src/sys/i386/isa/sound/sound.doc for details
# pca: PCM audio through your PC speaker
#
# Someday, Voxware configuration will be done properly.
#
options AUDIO_PAS
options AUDIO_SB
options AUDIO_ADLIB
options AUDIO_GUS
options AUDIO_MPU401
options AUDIO_UART6850
options AUDIO_PSS
options AUDIO_GUS16
options AUDIO_GUSMAX
options AUDIO_MSS
options AUDIO_SBPRO
options AUDIO_SB16
options AUDIO_YM3812
device snd10 at isa? port 0x530 irq 10 drq 1 vector adintr
device snd5 at isa? port 0x330 irq 6 vector mpuintr
device snd4 at isa? port 0x220 irq 15 drq 6 vector gusintr
device snd3 at isa? port 0x388 irq 10 drq 6 vector pasintr

View File

@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
# $Id: LINT,v 1.148 1995/03/01 22:27:45 dufault Exp $
# $Id: LINT,v 1.149 1995/03/02 04:06:07 jkh Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@ -19,7 +19,7 @@
machine "i386"
cpu "I386_CPU"
cpu "I486_CPU"
cpu "I586_CPU" # a/k/a Pentium(tm)
cpu "I586_CPU" # aka Pentium(tm)
#
# This is the ``identification'' of the kernel. Usually this should
@ -321,7 +321,9 @@ controller isa0
# Options for `isa':
#
# ALLOW_CONFLICT_DRQ suppresses the DMA conflict checks. This option is
# not known to be good for anything.
# included so that people with sound cards that support multiple emulations
# can setup different sound drivers on the same DMA channel. There are no
# other known uses for this option.
#
# ALLOW_CONFLICT_IOADDR suppresses the I/O address conflict checks, so
# that the PS/2 mouse driver doesn't conflict with the console driver.
@ -533,11 +535,26 @@ pseudo-device ispy 1
#
# Audio drivers: `snd', `pca'
#
# snd: Voxware sound drivers for various cards (see file `sound.doc')
# snd: Voxware sound drivers for various cards
# see /usr/src/sys/i386/isa/sound/sound.doc for details
# pca: PCM audio through your PC speaker
#
# Someday, Voxware configuration will be done properly.
#
options AUDIO_PAS
options AUDIO_SB
options AUDIO_ADLIB
options AUDIO_GUS
options AUDIO_MPU401
options AUDIO_UART6850
options AUDIO_PSS
options AUDIO_GUS16
options AUDIO_GUSMAX
options AUDIO_MSS
options AUDIO_SBPRO
options AUDIO_SB16
options AUDIO_YM3812
device snd10 at isa? port 0x530 irq 10 drq 1 vector adintr
device snd5 at isa? port 0x330 irq 6 vector mpuintr
device snd4 at isa? port 0x220 irq 15 drq 6 vector gusintr
device snd3 at isa? port 0x388 irq 10 drq 6 vector pasintr

View File

@ -52,7 +52,7 @@ Since 2.4
- MIDI recording for SB and SB Pro. (Untested).
- Some other fixes.
- SB16 MIDI and DSP drivers only initialized if SB16 actually installed.
- Implemented better detection for OPL-3. This should be usefull if you
- Implemented better detection for OPL-3. This should be useful if you
have an old SB Pro (the non-OPL-3 one) or a SB 2.0 clone which has a OPL-3.
- SVR4.2 support by Ian Hartas. Initial ALPHA TEST version (untested).

View File

@ -38,14 +38,14 @@ Compatibility with the earlier versions
This version is backward compatible with the version 2.X. All programs
compiled with sys/soundcard.h of v2.X should work without problems.
PROGRAMS COMPILED WITH THE sys/soundcard.h OF THIS VERSION WILL NOT
WORK WITH v2.X DRIVER. BE CAREFULL WHEN DISTRIBUTING BINARIES COMPILED
WORK WITH v2.X DRIVER. BE CAREFUL WHEN DISTRIBUTING BINARIES COMPILED
FOR THIS VERSION.
Contributors
------------
This driver contains code by several contributors. In addition several other
persons have given usefull suggestions. The following is a list of major
persons have given useful suggestions. The following is a list of major
contributors. (I could have forgotten some names.)
Craig Metz 1/2 of the PAS16 Mixer and PCM support
@ -74,7 +74,13 @@ Hannu Savolainen
hannu@voxware.pp.fi
Snail mail: Hannu Savolainen
Pallaksentie 4 A 2
00970 Helsinki
Hiekkalaiturintie 3 A 8
00980 Helsinki
Finland
FAX: +358 0 395 1968 (usually not connected)
FAX: +358 0 341 6272 (answers if I have my machine (mgetty) on).
NOTE! I probably don't answer to Snail mail or FAX messages. Sending answer
to each of them is simply too expensive and time consuming. However I
try to reply every email message I get (within a week). If you don't
get response, please check how your address is written in the message
header. I can't answer if I don't have a valid reply address.

View File

@ -0,0 +1,35 @@
This driver was updated to VoxWare v3.0 pre-release and ad1848 support was
enabled (since it works for me :)
To configure the sound driver, some resemblene of one or more of these in your
config file:
device snd5 at isa? port 0x330 irq 6 vector mpuintr # MPU-401
device snd4 at isa? port 0x220 irq 15 drq 6 vector gusintr # GUS
device snd3 at isa? port 0x388 irq 10 drq 6 vector pasintr # PAS
device snd2 at isa? port 0x220 irq 7 drq 1 vector sbintr # SB
device snd6 at isa? port 0x220 irq 7 drq 5 vector sbintr # SB16 ?
device snd7 at isa? port 0x300 # YM3812 ???
device snd1 at isa? port 0x388 # ADLIB
device snd10 at isa? port 0x530 irq 10 drq 1 vector adintr # MSS
The add some of these (no need for EXCLUDE_BLAH anymore):
options AUDIO_PAS
options AUDIO_SB
options AUDIO_ADLIB
options AUDIO_GUS
options AUDIO_MPU401
options AUDIO_UART6850
options AUDIO_PSS
options AUDIO_GUS16
options AUDIO_GUSMAX
options AUDIO_MSS
options AUDIO_SBPRO
options AUDIO_SB16
options AUDIO_YM3812
-Sujal Patel (smpatel@wam.umd.edu)

View File

@ -0,0 +1,154 @@
VoxWare v3.0
------------
This is a PROTOTYPE of the VoxWare v3.0 to be released late 94.
All features of v2.5 should work as earlier. There could be some
omissions but they are unintentional. I started this version thread
after v2.3 so all features implemented before it are there.
Even this is a prototype, there should not be any fatal bugs. The
prototype just means that I don't have implemented all features
completely. Mainly in the /dev/sequencer2 driver.
For example recording from /dev/sequencer2 won't work
with other cards than a full features MPU-401 or clones. As well the
way how the MIDI controllers are handled will change.
IMPORTANT!!!!!!!!!!!!!!!!!
Don't distribute any binaries compiled with the soundcard.h of this version.
They will not work together with older drivers.
New features
============
There are now two new device interfaces. The /dev/midi## is a raw
tty like interface to MIDI ports. There is a device file for each MIDI
port on your system. They are named (/dev/midi00 to /dev/midiNN).
The second addition is the /dev/sequencer2 which is higher level interface
than the old /dev/sequencer. It's intended for writing device independent
applications like sequencers.
/dev/midi##
-----------
This interface should be useful for applications like MIDI sysex librarians.
There are (currently) no timing features so making music could be impossible.
There are as many /dev/midi## devices as there are MIDI ports in the system.
The /dev/midi00 is connected to the first one, /dev/midi01 to the second etc.
These devices work like tty devices in raw mode. Everything written to them is
sent out to the MIDI port. There is currently an extra delay of at most
1/100th of sec but it will be removed later.
The reading algorithm is little bit more complicated. There are two different
cases:
1) There is at least one byte in the input buffer.
The read returns as many bytes as it can without waiting for more bytes.
For example when a process reads 100 bytes and there are 10 bytes in the
buffer, the read returns just 10 bytes.
2) The input buffer is empty when the process calls read.
The read waits for the first byte and then continues as in case 1. By
default it waits infinitely but there is an ioctl for setting a timeout
for this. The ioctl(fd, SNDCTL_MIDI_PRETIME, &time) changes the timeout.
The time is given in 1/10th of seconds (10 means one second).
Other ioctl calls:
ioctl(fd, SNDCTL_MIDI_MPUMODE, &mode) is available for full MPU-401
compatible devices such as MPU-IPC-T, MQ PC Midi Card or MQX-32.
It's not available for the so called MPU UART ports of some soundcards
(PAS16, SB16 etc). By default the MIDI port is in UART mode after open.
If this ioctl is called with mode=1, the interface is put to the intelligent
(coprocessor) mode. NOTE! The MIDI port will be reset when this ioctl is called.
It could have some strange effects if not called immediately after open. This
call returns EINVAL if the midi port doesn't support the MPU-401 intelligent
mode.
ioctl(fd, SNDCTL_MIDI_MPUCMD, &cmdstruct) is valid only if the MIDI port
is put to the coprocessor mode using ioctl(SNDCTL_MIDI_MPUMODE). It's used to
send commands to a MPU-401 compatible MIDI cards. Please refer to the
MPU-401 Technical Reference Manual (or Music Quest Technical Reference
Manual) for descriptions of the commands.
The argument of SNDCTL_MIDI_MPUCOMMAND is of type mpu_command_rec. It
has the following fields:
typedef struct {
unsigned char cmd;
char nr_args, nr_returns;
unsigned char data[30];
} mpu_command_rec;
where:
cmd Contains the command number.
nr_args Number of arguments of the command.
MUST BE INITIALIZED BEFORE CALL
nr_returns Number of bytes returned by the command.
MUST BE INITIALIZED BEFORE CALL
data Buffer for the command arguments and returned
data.
Be extremely careful with the nr_args and nr_returns fields. They
must match the command. An incorrect value will put the card and
the driver out of sync. Refer to the MPU-401/MQX-32M documentation for further
details.
/dev/sequencer2 (if you find a better name, please let me know).
---------------
This device file works much like the /dev/sequencer which has been present
since the beginning. The main differences are the following:
- /dev/sequencer makes the MIDI ports to look like the synth devices. In fact
the result is somewhere between the MIDI specification and the synth devices of
/dev/sequencer. Both kind of devices are accessed using the SEQ_START_NOTE()
like macros. The voice number parameters of the API macros have been redefined
to denote MIDI channels. This means that the driver allocates voices for
the channels automatically (this is a responsibility/right of an application
with /dev/sequencer). The result is that a SEQ_START_NOTE() macro has
similar effects for a synth channel than on a MIDI port. This kind of
solution provides better device independence than the /dev/sequencer. The
drawback is that the new interface doesn't permit so low level access to the
device as the /dev/sequencer does. An application developer must choose between
these two interfaces. I think the old /dev/sequencer is better for applications
like module players while the new one is better for making generic sequencer
programs.
- There are no separate MIDI devices with the /dev/sequencer2. The
ioctl(SNDCTL_SEQ_NRMIDIS) returns always zero. Instead the MIDI ports are
shown as synth devices. ioctl(SNDCTL_SEQ_NRSYNTHS) on /dev/sequencer2 will
return sum of internal synthesizers (GUS, OPL3) and MIDI ports in the systems.
- The new interface is used much like the ordinary /dev/sequencer. The
event format is new so you have to use the API macros defined in the
sys/soundcard.h. The interface will probably change before the final 3.0
release but using the API macros should ensure compatibility in source level.
The new event format is not recognized by version 2.X so don't try to
distribute binaries compiled with soundcard.h of v3.X.
- The basic API usage is similar to the current one. There are some new
macros but the older ones should work as earlier. The most important
incompatibility is that the /dev/sequencer2 driver allocates voices itself.
The other one is that the application must send SEQ_START_TIMER() as it's
first event. Otherwise the timer is not started and the application waits
infinitely.
There are several new features but I don't document them here. There are
some info in the soundcard.h (near the end). I have also included some
sample code in the directory v30. Full documentation will
appear in the Hacker's Guide later.
Don't hesitate to contact me in case you have questions or comments.
Hannu Savolainen
hannu@voxware.pp.fi

View File

@ -29,7 +29,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: ad1848.c,v 1.2 1994/10/01 02:16:28 swallace Exp $
*/
#define DEB(x)
@ -72,8 +71,9 @@ static char irq2dev[16] =
{-1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1};
static int ad_format_mask[2 /*devc->mode*/ ] =
static int ad_format_mask[3 /*devc->mode*/ ] =
{
0,
AFMT_U8 | AFMT_S16_LE | AFMT_MU_LAW | AFMT_A_LAW,
AFMT_U8 | AFMT_S16_LE | AFMT_MU_LAW | AFMT_A_LAW | AFMT_U16_LE | AFMT_IMA_ADPCM
};
@ -209,7 +209,7 @@ ad1848_open (int dev, int mode)
}
if (devc->irq) /* Not managed by another driver */
if ((err = snd_set_irq_handler (devc->irq, ad1848_interrupt)) < 0)
if ((err = snd_set_irq_handler (devc->irq, adintr)) < 0)
{
printk ("ad1848: IRQ in use\n");
RESTORE_INTR (flags);
@ -254,7 +254,7 @@ static int
set_speed (ad1848_info * devc, int arg)
{
/*
* The sampling speed is encoded in the least significant nible of I8. The
* The sampling speed is encoded in the least significant nibble of I8. The
* LSB selects the clock source (0=24.576 MHz, 1=16.9344 Mhz) and other
* three bits select the divisor (indirectly):
*
@ -602,7 +602,7 @@ ad1848_prepare_for_IO (int dev, int bsize, int bcount)
ad_write (devc, 8, fs);
/*
* Write to I8 starts resyncronization. Wait until it completes.
* Write to I8 starts resynchronization. Wait until it completes.
*/
timeout = 10000;
while (timeout > 0 && INB (devc->base) == 0x80)
@ -624,7 +624,7 @@ ad1848_prepare_for_IO (int dev, int bsize, int bcount)
ad_write (devc, 28, fs);
/*
* Write to I28 starts resyncronization. Wait until it completes.
* Write to I28 starts resynchronization. Wait until it completes.
*/
timeout = 10000;
while (timeout > 0 && INB (devc->base) == 0x80)
@ -660,7 +660,7 @@ int
ad1848_detect (int io_base)
{
#define SDDB(x) x
#define AUDIO_DDB(x) x
unsigned char tmp;
int i;
@ -691,7 +691,7 @@ ad1848_detect (int io_base)
if ((INB (devc->base) & 0x80) != 0x00) /* Not a AD1884 */
{
SDDB (printk ("ad_detect_A\n"));
AUDIO_DDB (printk ("ad_detect_A\n"));
return 0;
}
@ -706,7 +706,7 @@ ad1848_detect (int io_base)
if ((tmp1 = ad_read (devc, 0)) != 0xaa || (tmp2 = ad_read (devc, 1)) != 0x45)
{
SDDB (printk ("ad_detect_B (%x/%x)\n", tmp1, tmp2));
AUDIO_DDB (printk ("ad_detect_B (%x/%x)\n", tmp1, tmp2));
return 0;
}
@ -715,7 +715,7 @@ ad1848_detect (int io_base)
if ((tmp1 = ad_read (devc, 0)) != 0x45 || (tmp2 = ad_read (devc, 1)) != 0xaa)
{
SDDB (printk ("ad_detect_C (%x/%x)\n", tmp1, tmp2));
AUDIO_DDB (printk ("ad_detect_C (%x/%x)\n", tmp1, tmp2));
return 0;
}
@ -729,7 +729,7 @@ ad1848_detect (int io_base)
if ((tmp & 0x0f) != ((tmp1 = ad_read (devc, 12)) & 0x0f))
{
SDDB (printk ("ad_detect_D (%x)\n", tmp1));
AUDIO_DDB (printk ("ad_detect_D (%x)\n", tmp1));
return 0;
}
@ -750,7 +750,7 @@ ad1848_detect (int io_base)
for (i = 0; i < 16; i++)
if ((tmp1 = ad_read (devc, i)) != (tmp2 = ad_read (devc, i + 16)))
{
SDDB (printk ("ad_detect_F(%d/%x/%x)\n", i, tmp1, tmp2));
AUDIO_DDB (printk ("ad_detect_F(%d/%x/%x)\n", i, tmp1, tmp2));
return 0;
}
@ -781,7 +781,7 @@ ad1848_detect (int io_base)
ad_write (devc, 0, 0xaa);
if ((tmp1 = ad_read (devc, 16)) == 0xaa) /* Rotten bits? */
{
SDDB (printk ("ad_detect_H(%x)\n", tmp1));
AUDIO_DDB (printk ("ad_detect_H(%x)\n", tmp1));
return 0;
}
@ -865,7 +865,7 @@ ad1848_init (char *name, int io_base, int irq, int dma_playback, int dma_capture
}
void
ad1848_interrupt (int irq)
adintr (int irq)
{
unsigned char status;
ad1848_info *devc;

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
*/
#include "sound_config.h"

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: audio.c,v 1.5 1994/08/02 07:39:44 davidg Exp $
*/
#include "sound_config.h"

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: dev_table.c,v 1.5 1994/08/02 07:39:46 davidg Exp $
*/
#define _DEV_TABLE_C_

View File

@ -26,8 +26,8 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: dev_table.h,v 1.8 1994/10/01 02:16:33 swallace Exp $
*/
*/
#ifndef _DEV_TABLE_H_
#define _DEV_TABLE_H_
@ -237,7 +237,7 @@ struct sound_timer_operations {
#ifndef EXCLUDE_SB
{SNDCARD_SB, "SoundBlaster", attach_sb_card, probe_sb},
#endif
#if !defined(EXCLUDE_SB) && !defined(EXCLUDE_SB16) && !defined(EXCLUDE_SBPRO)
#if !defined(EXCLUDE_SB) && !defined(EXCLUDE_SB16)
#ifndef EXCLUDE_AUDIO
{SNDCARD_SB16, "SoundBlaster16", sb16_dsp_init, sb16_dsp_detect},
#endif

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: dmabuf.c,v 1.10 1994/11/01 17:26:49 ache Exp $
*/
#include "sound_config.h"
@ -33,19 +32,16 @@
#ifdef CONFIGURE_SOUNDCARD
#include "sound_calls.h"
#ifdef __FreeBSD__
extern struct selinfo selinfo[SND_NDEVS>>4];
#endif
#if !defined(EXCLUDE_AUDIO) || !defined(EXCLUDE_GUS)
DEFINE_WAIT_QUEUES (dev_sleeper[MAX_AUDIO_DEV], dev_sleep_flag[MAX_AUDIO_DEV]);
static struct dma_buffparms dmaps[MAX_AUDIO_DEV] =
{0}; /*
{{0}}; /*
* Primitive way to allocate
* such a large array.
* Needs dynamic run-time alloction.
* Needs dynamic run-time allocation.
*/
static void
@ -82,7 +78,7 @@ reorganize_buffers (int dev)
sz = sr * nc * sz;
/*
* Compute a buffer size for time not exeeding 1 second.
* Compute a buffer size for time not exceeding 1 second.
* Usually this algorithm gives a buffer size for 0.5 to 1.0 seconds
* of sound (using the current speed, sample size and #channels).
*/
@ -110,8 +106,8 @@ reorganize_buffers (int dev)
else
{
/*
* The process has specified the buffer sice with SNDCTL_DSP_SETFRAGMENT or
* the buffer sice computation has already been done.
* The process has specified the buffer size with SNDCTL_DSP_SETFRAGMENT or
* the buffer size computation has already been done.
*/
if (dmap->fragment_size > audio_devs[dev]->buffsize)
dmap->fragment_size = audio_devs[dev]->buffsize;
@ -298,10 +294,11 @@ DMAbuf_release (int dev, int mode)
return 0;
}
static int
DMAbuf_start_input(int dev)
int
DMAbuf_getrdbuffer (int dev, char **buf, int *len)
{
unsigned long flags;
int err = EIO;
struct dma_buffparms *dmap = audio_devs[dev]->dmap;
DISABLE_INTR (flags);
@ -323,7 +320,7 @@ DMAbuf_start_input(int dev)
if (!(dmap->flags & DMA_ALLOC_DONE))
reorganize_buffers (dev);
if (dmap->dma_mode)
if (!dmap->dma_mode)
{
int err;
@ -344,32 +341,14 @@ DMAbuf_start_input(int dev)
!(dmap->flags & DMA_STARTED));
dmap->flags |= DMA_ACTIVE | DMA_STARTED;
}
}
RESTORE_INTR (flags);
return 0;
}
int
DMAbuf_getrdbuffer (int dev, char **buf, int *len)
{
unsigned long flags;
int err = EIO;
struct dma_buffparms *dmap = audio_devs[dev]->dmap;
DISABLE_INTR (flags);
if (!dmap->qlen)
{
if(err = DMAbuf_start_input(dev))
return err;
/* Wait for the next block */
err = EIO;
DO_SLEEP (dev_sleeper[dev], dev_sleep_flag[dev], 2 * HZ);
if (TIMED_OUT (dev_sleeper[dev], dev_sleep_flag[dev]))
{
printk ("Sound: DMA timed out - IRQ/DRQ config error?\n");
err = EIO;
SET_ABORT_FLAG (dev_sleeper[dev], dev_sleep_flag[dev]);
}
else
@ -433,20 +412,6 @@ DMAbuf_ioctl (int dev, unsigned int cmd, unsigned int arg, int local)
return IOCTL_OUT (arg, dmap->fragment_size);
break;
case SNDCTL_DSP_SETBLKSIZE:
{
int size = IOCTL_IN (arg);
if(!(dmap->flags & DMA_ALLOC_DONE) && size)
{
dmap->fragment_size = size;
return 0;
}
else
return RET_ERROR (EINVAL); /* Too late to change */
}
break;
case SNDCTL_DSP_SUBDIVIDE:
{
int fact = IOCTL_IN (arg);
@ -460,7 +425,7 @@ DMAbuf_ioctl (int dev, unsigned int cmd, unsigned int arg, int local)
}
if (dmap->subdivision != 0 ||
dmap->fragment_size)/* Loo late to change */
dmap->fragment_size)/* Too late to change */
return RET_ERROR (EINVAL);
if (fact > MAX_REALTIME_FACTOR)
@ -483,7 +448,7 @@ DMAbuf_ioctl (int dev, unsigned int cmd, unsigned int arg, int local)
return RET_ERROR (EIO);
if (dmap->subdivision != 0 ||
dmap->fragment_size)/* Loo late to change */
dmap->fragment_size)/* Too late to change */
return RET_ERROR (EINVAL);
bytes = fact & 0xffff;
@ -517,7 +482,6 @@ DMAbuf_ioctl (int dev, unsigned int cmd, unsigned int arg, int local)
return audio_devs[dev]->ioctl (dev, cmd, arg, local);
}
/* NOTREACHED */
return RET_ERROR (EIO);
}
@ -818,10 +782,6 @@ DMAbuf_outputintr (int dev, int event_type)
WAKE_UP (dev_sleeper[dev], dev_sleep_flag[dev]);
}
RESTORE_INTR (flags);
#ifdef __FreeBSD__
if(selinfo[dev].si_pid)
selwakeup(&selinfo[dev]);
#endif
}
void
@ -861,10 +821,6 @@ DMAbuf_inputintr (int dev)
WAKE_UP (dev_sleeper[dev], dev_sleep_flag[dev]);
}
RESTORE_INTR (flags);
#ifdef __FreeBSD__
if(selinfo[dev].si_pid)
selwakeup(&selinfo[dev]);
#endif
}
int
@ -903,49 +859,6 @@ DMAbuf_reset_dma (int chan)
{
}
/*
* Used by unix select system call to see if data is ready.
*/
int
DMAbuf_output_ready(int dev)
{
struct dma_buffparms *dmap = audio_devs[dev]->dmap;
if (!(dmap->flags & DMA_ALLOC_DONE))
reorganize_buffers (dev);
return space_in_queue (dev);
}
int
DMAbuf_input_ready(int dev)
{
int h,i,r;
struct dma_buffparms *dmap = audio_devs[dev]->dmap;
r = 0;
if(dmap->qlen)
{
if(dmap->fragment_size)
{
for(i=0; i<dmap->qlen; i++)
{
h = (dmap->qhead + i) % dmap->nbufs;
r += dmap->fragment_size - dmap->counts[h];
if(r >= dmap->fragment_size)
break;
}
if(r < dmap->fragment_size)
r = 0;
else
r = 1;
}
else
r = 1;
}
else
DMAbuf_start_input(dev);
return(r);
}
/*
* The sound_mem_init() is called by mem_init() immediately after mem_map is
* initialized and before free_page_list is created.
@ -971,24 +884,6 @@ DMAbuf_release (int dev, int mode)
return 0;
}
int
DMAbuf_start_input (int dev)
{
return RET_ERROR (EIO);
}
int
DMAbuf_input_ready (int dev)
{
return 0;
}
int
DMAbuf_output_ready (int dev)
{
return 0;
}
int
DMAbuf_getwrbuffer (int dev, char **buf, int *size)
{

View File

@ -23,7 +23,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
*/
unsigned short finetune_table[128] =

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: gus_card.c,v 1.10 1994/10/14 09:01:20 jkh Exp $
*/
#include "sound_config.h"
@ -34,6 +33,8 @@
#include "gus_hw.h"
void gusintr (int);
int gus_base, gus_irq, gus_dma;
extern int gus_wave_volume;
extern int gus_pcm_volume;
@ -127,7 +128,7 @@ gusintr (int irq)
#ifndef EXCLUDE_GUSMAX
if (have_gus_max)
ad1848_interrupt (irq);
adintr (irq);
#endif
while (1)
@ -179,10 +180,8 @@ probe_gus_db16 (struct address_info *hw_config)
long
attach_gus_db16 (long mem_start, struct address_info *hw_config)
{
#if !defined(EXCLUDE_GUS)
gus_pcm_volume = 100;
gus_wave_volume = 90;
#endif
ad1848_init ("GUS 16 bit sampling", hw_config->io_base,
hw_config->irq,

View File

@ -1,6 +1,4 @@
/*
* $Id$
*/
/*
* I/O addresses
*/

View File

@ -1,6 +1,3 @@
/*
* $Id$
*/
static unsigned short gus_linearvol[128] = {
0x0000, 0x08ff, 0x09ff, 0x0a80, 0x0aff, 0x0b40, 0x0b80, 0x0bc0,
0x0bff, 0x0c20, 0x0c40, 0x0c60, 0x0c80, 0x0ca0, 0x0cc0, 0x0ce0,

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: gus_midi.c,v 1.5 1994/08/02 07:39:58 davidg Exp $
*/
#include "sound_config.h"

View File

@ -2,8 +2,6 @@
* gus_vol.c - Compute volume for GUS.
*
* Greg Lee 1993.
*
* $Id: gus_vol.c,v 1.4 1994/08/02 07:39:59 davidg Exp $
*/
#include "sound_config.h"
#ifndef EXCLUDE_GUS

View File

@ -25,20 +25,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: gus_wave.c,v 1.10 1994/10/01 02:16:42 swallace Exp $
*/
#include "sound_config.h"
#ifdef __FreeBSD__
#include <machine/ultrasound.h>
#else
#include "ultrasound.h"
#endif
#include "gus_hw.h"
#undef OUTB
#define OUTB(val, port) outb(port, val)
#if defined(CONFIGURE_SOUNDCARD) && !defined(EXCLUDE_GUS)
#define MAX_SAMPLE 128
@ -789,7 +781,7 @@ gus_initialize (void)
gus_select_voice (0); /* This disables writes to IRQ/DMA reg */
gusintr (0); /* Serve pending interrupts */
gusintr (0,NULL); /* Serve pending interrupts */
RESTORE_INTR (flags);
}
@ -2546,7 +2538,7 @@ guswave_patchmgr (int dev, struct patmgr_info *rec)
*/
offs += sample_ptrs[sample]; /*
* Begin offsess + offset to DRAM
* Begin offset + offset to DRAM
*/
for (n = 0; n < l; n++)
@ -2591,7 +2583,7 @@ guswave_patchmgr (int dev, struct patmgr_info *rec)
*/
offs += sample_ptrs[sample]; /*
* Begin offsess + offset to DRAM
* Begin offset + offset to DRAM
*/
for (n = 0; n < l; n++)
@ -2944,11 +2936,7 @@ gus_wave_init (long mem_start, int irq, int dma)
}
#ifdef __FreeBSD__
printk ("snd4: <Gravis UltraSound %s (%dk)>", model_num, (int) gus_mem_size / 1024);
#else /* __FreeBSD__ */
printk (" <Gravis UltraSound %s (%dk)>", model_num, (int) gus_mem_size / 1024);
#endif /* __FreeBSD__ */
#ifndef SCO
sprintf (gus_info.name, "Gravis UltraSound %s (%dk)", model_num, (int) gus_mem_size / 1024);
@ -2988,12 +2976,7 @@ gus_wave_init (long mem_start, int irq, int dma)
{
audio_devs[gus_devnum = num_audiodevs++] = &gus_sampling_operations;
audio_devs[gus_devnum]->dmachan = dma;
#ifndef NO_AUTODMA
audio_devs[gus_devnum]->buffcount = 1;
#else
audio_devs[gus_devnum]->flags &= ~DMA_AUTOMODE;
audio_devs[gus_devnum]->buffcount = DSP_BUFFCOUNT;
#endif
audio_devs[gus_devnum]->buffsize = DSP_BUFFSIZE;
}
else
@ -3069,7 +3052,6 @@ do_loop_irq (int voice)
pcm_active = 0; /* Signal to the play_next_pcm_block routine */
case LMODE_PCM:
{
int orig_qlen = pcm_qlen;
int flag; /* 0 or 2 */
pcm_qlen--;
@ -3085,7 +3067,7 @@ do_loop_irq (int voice)
pcm_active = 0;
}
/*
/*
* If the queue was full before this interrupt, the DMA transfer was
* suspended. Let it continue now.
*/

View File

@ -25,17 +25,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: ics2101.c,v 1.3 1994/08/02 07:40:05 davidg Exp $
*/
#include "sound_config.h"
#if defined(CONFIGURE_SOUNDCARD) && !defined(EXCLUDE_GUS)
#ifdef __FreeBSD__
#include <machine/ultrasound.h>
#else
#include "ultrasound.h"
#endif
#include "gus_hw.h"
#define MIX_DEVS (SOUND_MASK_MIC|SOUND_MASK_LINE| \

View File

@ -1,6 +1,6 @@
/* for FreeBSD */
/*
* $Id: local.h,v 1.10 1994/10/01 02:16:44 swallace Exp $
* local.h,v 1.11 1994/11/01 17:26:50 ache Exp
*/
#include "snd.h"
@ -21,9 +21,94 @@
#endif
#define DSP_BUFFSIZE 65536
#define SELECTED_SOUND_OPTIONS 0xffffffff
#define SELECTED_SOUND_OPTIONS 0xffffffff
#define SOUND_VERSION_STRING "2.90-2"
#define SOUND_CONFIG_DATE "Thu Sep 29 15:33:39 PDT 1994"
#define SOUND_CONFIG_BY "swallace"
#define SOUND_CONFIG_HOST "pal-r32-a07b.slip.nts.uci.edu"
#define SOUND_CONFIG_DOMAIN ""
#define SOUND_CONFIG_DATE "Sun Feb 5 14:38:12 EST 1995"
#define SOUND_CONFIG_BY "smpatel"
#define SOUND_CONFIG_HOST "xi.dorm.umd.edu"
#define SOUND_CONFIG_DOMAIN "dorm.umd.edu"
/* Reversed the VoxWare EXCLUDE options -Sujal Patel (smpatel@wam.umd.edu) */
#ifndef EXCLUDE_PAS
#define EXCLUDE_PAS
#endif
#ifndef EXCLUDE_SB
#define EXCLUDE_SB
#endif
#ifndef EXCLUDE_ADLIB
#define EXCLUDE_ADLIB
#endif
#ifndef EXCLUDE_GUS
#define EXCLUDE_GUS
#endif
#ifndef EXCLUDE_MPU401
#define EXCLUDE_MPU401
#endif
#ifndef EXCLUDE_UART6850
#define EXCLUDE_UART6850
#endif
#ifndef EXCLUDE_PSS
#define EXCLUDE_PSS
#endif
#ifndef EXCLUDE_GUS16
#define EXCLUDE_GUS16
#endif
#ifndef EXCLUDE_GUSMAX
#define EXCLUDE_GUSMAX
#endif
#ifndef EXCLUDE_MSS
#define EXCLUDE_MSS
#endif
#ifndef EXCLUDE_SBPRO
#define EXCLUDE_SBPRO
#endif
#ifndef EXCLUDE_SB16
#define EXCLUDE_SB16
#endif
#ifndef EXCLUDE_YM3812
#define EXCLUDE_YM3812
#endif
#ifdef AUDIO_PAS
#undef EXCLUDE_PAS
#endif
#ifdef AUDIO_SB
#undef EXCLUDE_SB
#endif
#ifdef AUDIO_ADLIB
#undef EXCLUDE_ADLIB
#endif
#ifdef AUDIO_GUS
#undef EXCLUDE_GUS
#endif
#ifdef AUDIO_MPU401
#undef EXCLUDE_MPU401
#endif
#ifdef AUDIO_UART6850
#undef EXCLUDE_UART6850
#endif
#ifdef AUDIO_PSS
#undef EXCLUDE_PSS
#endif
#ifdef AUDIO_GUS16
#undef EXCLUDE_GUS16
#endif
#ifdef AUDIO_GUSMAX
#undef EXCLUDE_GUSMAX
#endif
#ifdef AUDIO_MSS
#undef EXCLUDE_MSS
#endif
#ifdef AUDIO_SBPRO
#undef EXCLUDE_SBPRO
#undef EXCLUDE_SB
#endif
#ifdef AUDIO_SB16
#undef EXCLUDE_SB16
#undef EXCLUDE_SB
#endif
#ifdef AUDIO_YM3812
#undef EXCLUDE_YM3812
#endif

View File

@ -1,6 +1,3 @@
/*
* $Id: midi_ctrl.c,v 1.7 1994/09/27 17:58:24 davidg Exp $
*/
static unsigned char ctrl_def_values[128] =
{
0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, /* 0 to 7 */

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: $
*/
#include "sound_config.h"

View File

@ -1,6 +1,3 @@
/*
* $Id: $
*/
int midi_synth_ioctl (int dev,
unsigned int cmd, unsigned int arg);
int midi_synth_kill_note (int dev, int channel, int note, int velocity);

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: midibuf.c,v 1.5 1994/08/02 07:40:10 davidg Exp $
*/
#include "sound_config.h"

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: mpu401.c,v 1.8 1994/08/02 07:40:12 davidg Exp $
*/
#define USE_SEQ_MACROS
@ -1049,11 +1048,7 @@ attach_mpu401 (long mem_start, struct address_info *hw_config)
MPU_CAP_CLS | MPU_CAP_2PORT;
revision_char = (devc->revision == 0x7f) ? 'M' : ' ';
#ifdef __FreeBSD__
printk ("snd5: <MQX-%d%c MIDI Interface>",
#else
printk (" <MQX-%d%c MIDI Interface>",
#endif
ports,
revision_char);
#ifndef SCO
@ -1073,11 +1068,7 @@ attach_mpu401 (long mem_start, struct address_info *hw_config)
devc->capabilities |= MPU_CAP_SYNC | MPU_CAP_FSK;
#ifdef __FreeBSD__
printk ("snd5: <MPU-401 MIDI Interface %d.%d%c>",
#else
printk (" <MPU-401 MIDI Interface %d.%d%c>",
#endif
(devc->version & 0xf0) >> 4,
devc->version & 0x0f,
revision_char);

View File

@ -25,11 +25,12 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: opl3.c,v 1.6 1994/08/02 07:40:13 davidg Exp $
*/
/*
* Major improvements to the FM handling 30AUG92 by Rob Hooft,
*/
/*
* hooft@chem.ruu.nl
*/
@ -1174,11 +1175,7 @@ opl3_init (long mem_start)
opl3_ok = 1;
if (opl3_enabled)
{
#ifdef __FreeBSD__
printk ("snd1: <Yamaha OPL-3 FM>");
#else
printk (" <Yamaha OPL-3 FM>");
#endif
fm_model = 2;
voice_alloc->max_voice = nr_voices = 18;
fm_info.nr_drums = 0;
@ -1193,19 +1190,23 @@ opl3_init (long mem_start)
else
physical_voices[i].ioaddr = right_address;
/* Enable OPL-3 mode */
opl3_command (right_address, OPL3_MODE_REGISTER, OPL3_ENABLE);
/* Select all 2-OP voices */
opl3_command (right_address, CONNECTION_SELECT_REGISTER, 0x00);
opl3_command (right_address, OPL3_MODE_REGISTER, OPL3_ENABLE); /*
* Enable
* OPL-3
* mode
*/
opl3_command (right_address, CONNECTION_SELECT_REGISTER, 0x00); /*
* Select
* all
* 2-OP
* *
* voices
*/
}
else
{
#ifdef __FreeBSD__
printk ("snd1: <Yamaha 2-OP FM>");
#else
printk (" <Yamaha 2-OP FM>");
#endif
fm_model = 1;
voice_alloc->max_voice = nr_voices = 9;
fm_info.nr_drums = 0;

View File

@ -35,7 +35,7 @@
*
* The percussive mode is implemented in the left side only.
*
* With the above exeptions the both sides can be operated independently.
* With the above exceptions the both sides can be operated independently.
*
* A 4 OP voice can be created by setting the corresponding
* bit at offset 4 of the right side.

View File

@ -37,7 +37,7 @@
* before making the changes. It's possible that I have already made the
* change.
*
* $Id: os.h,v 1.12 1994/09/27 17:58:21 davidg Exp $
* os.h,v 1.13 1994/10/01 02:16:53 swallace Exp
*/
/*

View File

@ -1,6 +1,3 @@
/*
* $Id: pas.h,v 1.5 1994/10/01 02:16:54 swallace Exp $
*/
/* */
/* Port addresses and bit fields for the Media Vision Pro AudioSpectrum second generation sound cards. */
/* */
@ -83,7 +80,7 @@
#define OPERATION_MODE_1 0xEF8B /* R Control */
#define O_M_1_CDROM_TYPE 0x03 /* R CD-ROM 3=SCSI, 2=Sony, 0=no CD-ROM interface */
#define O_M_1_FM_TYPE 0x04 /* R FM 1=sterero, 0=mono FM chip */
#define O_M_1_FM_TYPE 0x04 /* R FM 1=stereo, 0=mono FM chip */
#define O_M_1_PCM_TYPE 0x08 /* R PCM 1=16-bit Codec, 0=8-bit DAC */
#define OPERATION_MODE_2 0xFF8B /* R Control */
#define O_M_2_PCS_ENABLED 0x02 /* R PC speaker PC speaker emulation 1=enabled, 0=disabled */
@ -131,7 +128,6 @@
#define F_F_PCM_RATE_COUNTER 0x40 /* R W PCM 1=enable, 0=disable sample rate counter */
#define F_F_PCM_BUFFER_COUNTER 0x80 /* R W PCM 1=enable, 0=disable sample buffer counter */
#define CHIP_REV 0xFF88 /* R Control 0=PAS, 1=PAS+, 2=CDPC, 3=PAS16C, 4=PAS16D */
#define PAS_NONE 0
#define PAS_PLUS 1
#define PAS_CDPC 2

View File

@ -26,7 +26,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: pas2_card.c,v 1.10 1994/10/01 02:16:55 swallace Exp $
*/
#include "sound_config.h"
@ -46,7 +45,6 @@ static int pas_intr_mask = 0;
static int pas_irq = 0;
static char pas_model;
static unsigned char board_rev_id;
static char *pas_model_names[] =
{"", "Pro AudioSpectrum+", "CDPC", "Pro AudioSpectrum 16", "Pro AudioSpectrum 16D"};
@ -72,23 +70,6 @@ pas_write (unsigned char data, int ioaddr)
OUTB (data, ioaddr ^ translat_code);
}
/*
* The Revision D cards have a problem with their MVA508 interface. The
* kludge-o-rama fix is to make a 16-bit quantity with identical LSB and
* MSBs out of the output byte and to do a 16-bit out to the mixer port -
* 1.
*/
void
mix_write (unsigned char data, int ioaddr)
{
if (pas_model == PAS_16D) {
outw ((ioaddr ^ translat_code) - 1, data | (data << 8));
outb (0, 0x80);
} else
OUTB (data, ioaddr ^ translat_code);
}
void
pas2_msg (char *foo)
{
@ -272,8 +253,8 @@ config_pas_hw (struct address_info *hw_config)
else
pas_write (0, PRESCALE_DIVIDER);
mix_write (P_M_MV508_ADDRESS | 5, PARALLEL_MIXER);
mix_write (5, PARALLEL_MIXER);
pas_write (P_M_MV508_ADDRESS | 5, PARALLEL_MIXER);
pas_write (5, PARALLEL_MIXER);
#if !defined(EXCLUDE_SB_EMULATION) || !defined(EXCLUDE_SB)
@ -367,7 +348,7 @@ detect_pas_hw (struct address_info *hw_config)
*/
return 0;
pas_model = pas_read (CHIP_REV);
pas_model = O_M_1_to_card[pas_read (OPERATION_MODE_1) & 0x0f];
return pas_model;
}
@ -380,14 +361,9 @@ attach_pas_card (long mem_start, struct address_info *hw_config)
if (detect_pas_hw (hw_config))
{
board_rev_id = pas_read (BOARD_REV_ID);
if (pas_model = pas_read (CHIP_REV))
if ((pas_model = O_M_1_to_card[pas_read (OPERATION_MODE_1) & 0x0f]))
{
#ifdef __FreeBSD__
printk ("snd3: <%s rev %d>", pas_model_names[(int) pas_model], board_rev_id);
#else /* __FreeBSD__ */
printk (" <%s rev %d>", pas_model_names[(int) pas_model], pas_read (BOARD_REV_ID));
#endif /* __FreeBSD__ */
}
if (config_pas_hw (hw_config))

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: pas2_midi.c,v 1.5 1994/08/02 07:40:22 davidg Exp $
*/
#include "sound_config.h"

View File

@ -27,7 +27,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: pas2_mixer.c,v 1.6 1994/08/02 07:40:24 davidg Exp $
*/
#include "sound_config.h"
@ -107,6 +106,14 @@ mixer_output (int right_vol, int left_vol, int div, int bits,
int left = left_vol * div / 100;
int right = right_vol * div / 100;
/*
* The Revision D cards have a problem with their MVA508 interface. The
* kludge-o-rama fix is to make a 16-bit quantity with identical LSB and
* MSBs out of the output byte and to do a 16-bit out to the mixer port -
* 1. We don't need to do this because the call to pas_write more than
* compensates for the timing problems.
*/
if (bits & P_M_MV508_MIXER)
{ /*
* Select input or output mixer
@ -117,18 +124,18 @@ mixer_output (int right_vol, int left_vol, int div, int bits,
if (bits == P_M_MV508_BASS || bits == P_M_MV508_TREBLE)
{ /*
* Bass and trebble are mono devices
* Bass and treble are mono devices
*/
mix_write (P_M_MV508_ADDRESS | bits, PARALLEL_MIXER);
mix_write (left, PARALLEL_MIXER);
pas_write (P_M_MV508_ADDRESS | bits, PARALLEL_MIXER);
pas_write (left, PARALLEL_MIXER);
right_vol = left_vol;
}
else
{
mix_write (P_M_MV508_ADDRESS | P_M_MV508_LEFT | bits, PARALLEL_MIXER);
mix_write (left, PARALLEL_MIXER);
mix_write (P_M_MV508_ADDRESS | P_M_MV508_RIGHT | bits, PARALLEL_MIXER);
mix_write (right, PARALLEL_MIXER);
pas_write (P_M_MV508_ADDRESS | P_M_MV508_LEFT | bits, PARALLEL_MIXER);
pas_write (left, PARALLEL_MIXER);
pas_write (P_M_MV508_ADDRESS | P_M_MV508_RIGHT | bits, PARALLEL_MIXER);
pas_write (right, PARALLEL_MIXER);
}
return (left_vol | (right_vol << 8));
@ -137,8 +144,8 @@ mixer_output (int right_vol, int left_vol, int div, int bits,
void
set_mode (int new_mode)
{
mix_write (P_M_MV508_ADDRESS | P_M_MV508_MODE, PARALLEL_MIXER);
mix_write (new_mode, PARALLEL_MIXER);
pas_write (P_M_MV508_ADDRESS | P_M_MV508_MODE, PARALLEL_MIXER);
pas_write (new_mode, PARALLEL_MIXER);
mode_control = new_mode;
}
@ -282,19 +289,6 @@ pas_mixer_set (int whichDev, unsigned int level)
/*****/
static int
getmixer (int dev, int chn)
{
if (chn == P_M_MV508_RIGHT)
{
return (levels[dev] >> 8) & 0x7f;
}
else
{
return levels[dev] & 0x7f;
}
}
static void
pas_mixer_reset (void)
{

View File

@ -26,7 +26,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: pas2_pcm.c,v 1.6 1994/08/02 07:40:28 davidg Exp $
*/
#include "sound_config.h"
@ -80,7 +79,7 @@ pcm_set_speed (int arg)
tmp = pas_read (FILTER_FREQUENCY);
/*
* Set anti-aliasing filters according to sample rate. You reall *NEED*
* Set anti-aliasing filters according to sample rate. You really *NEED*
* to enable this feature for all normal recording unless you want to
* experiment with aliasing effects.
* These filters apply to the selected "recording" source.
@ -405,12 +404,7 @@ pas_pcm_init (long mem_start, struct address_info *hw_config)
{
audio_devs[my_devnum = num_audiodevs++] = &pas_pcm_operations;
audio_devs[my_devnum]->dmachan = hw_config->dma;
#ifndef NO_AUTODMA
audio_devs[my_devnum]->buffcount = 1;
#else
audio_devs[my_devnum]->flags &= ~DMA_AUTOMODE;
audio_devs[my_devnum]->buffcount = DSP_BUFFCOUNT;
#endif
audio_devs[my_devnum]->buffsize = 2 * DSP_BUFFSIZE;
}
else

View File

@ -1,7 +1,7 @@
/*
* sound/patmgr.c
*
* The patch maneger interface for the /dev/sequencer
* The patch manager interface for the /dev/sequencer
*
* Copyright by Hannu Savolainen 1993
*
@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: patmgr.c,v 1.6 1994/09/27 17:58:22 davidg Exp $
*/
#define PATMGR_C
@ -132,7 +131,7 @@ pmgr_write (int dev, struct fileinfo *file, snd_rw_buf * buf, int count)
return RET_ERROR (EIO);
}
COPY_FROM_USER ((caddr_t)mbox[dev], buf, 0, 4);
COPY_FROM_USER (mbox[dev], buf, 0, 4);
if (*(unsigned char *) mbox[dev] == SEQ_FULLSIZE)
{

View File

@ -8,7 +8,7 @@
make the pss card to emulate the SB stuff.
I have provided a simple interface to the PSS unlike the
DOG version. to download a new algorithim just cat it to
DOG version. to download a new algorithm just cat it to
/dev/pss 14,9.
You really need to rebuild this with the synth.ld file
@ -27,7 +27,7 @@
and everything will be okay.
At first I was going to wory about applications that were using
At first I was going to worry about applications that were using
the sound stuff and disallow the use of /dev/pss. But for
now I figured it doesn't matter.
@ -39,13 +39,12 @@
Probably everything else can be done via mmap
Oh if you want to develope code for the ADSP-21xx or Program the
Oh if you want to develop code for the ADSP-21xx or Program the
1848 just send me mail and I will hook you up.
marc.hoffman@analog.com
* $Id: $
*/
*/
#include "sound_config.h"
#if defined(CONFIGURE_SOUNDCARD) && !defined(EXCLUDE_PSS)
@ -124,7 +123,7 @@ PSS_write (int data)
{
int i, limit;
limit = GET_TIME () + 10; /* The timeout is 0.1 secods */
limit = GET_TIME () + 10; /* The timeout is 0.1 seconds */
/*
* Note! the i<5000000 is an emergency exit. The dsp_command() is sometimes
* called while interrupts are disabled. This means that the timer is
@ -159,7 +158,7 @@ pss_setaddr (int addr, int configAddr)
/*_____ pss_checkint
This function tests an interrupt number to see if
it is availible. It takes the interrupt button
it is available. It takes the interrupt button
as it's argument and returns TRUE if the interrupt
is ok.
*/
@ -216,7 +215,7 @@ pss_checkint (int intNum)
pss_outpw (pss_base + PSS_CONFIG, val);
break;
default:
printk ("unknown interupt selected. %d\n", intNum);
printk ("unknown interrupt selected. %d\n", intNum);
return 0;
}
@ -305,7 +304,7 @@ pss_setint (int intNum, int configAddress)
pss_outpw (configAddress, val);
break;
default:
printk ("pss_setint unkown int\n");
printk ("pss_setint unknown int\n");
}
}
@ -724,10 +723,10 @@ pss_download_boot (unsigned char *block, int size)
/* The following is a simple device driver for the pss.
All I really care about is comunication to and from the pss.
All I really care about is communication to and from the pss.
The ability to reinitialize the <synth.ld> This will be
default when release is choosen.
default when release is chosen.
SNDCTL_PSS_DOWNLOAD:
@ -739,9 +738,9 @@ pss_download_boot (unsigned char *block, int size)
where a write operation would effectively
download a new ld.
14,0x09 -- /dev/psecho would open up a comunication path to the
14,0x09 -- /dev/psecho would open up a communication path to the
esc614 asic. Given the ability to send
messages to the asic and recive messages too.
messages to the asic and receive messages too.
All messages would get read and written in the
same manner. It would be up to the application
@ -875,13 +874,13 @@ pss_ioctl (int dev, struct fileinfo *file,
/* This is going to be used to implement
waiting on messages sent from the DSP and to the
DSP when comunication is used via the pss directly.
DSP when communication is used via the pss directly.
We need to find out if the pss can generate a diffrent
interupt other than the one it has been setup for.
We need to find out if the pss can generate a different
interrupt other than the one it has been setup for.
This way we can carry on a conversation with the pss
on a seprate chanel. This would be usefull for debugging. */
on a separate channel. This would be useful for debugging. */
pss_select (int dev, struct fileinfo * file, int sel_type, select_table * wait)
{

View File

@ -7,9 +7,6 @@
Copyright (c) 1993 Analog Devices Inc. All rights reserved
******************************************************************************/
/*
* $Id: $
*/
/* Port offsets from base port for Sound Blaster DSP */
#define DSP_PORT_CMSD0 0x00 /* C/MS music voice 1-6 data port, write only */
#define DSP_PORT_CMSR0 0x01 /* C/MS music voice 1-6 register port, write only */

View File

@ -1,6 +1,3 @@
/*
* $Id$
*/
#define DSP_RESET (sbc_base + 0x6)
#define DSP_READ (sbc_base + 0xA)
#define DSP_WRITE (sbc_base + 0xC)

View File

@ -27,7 +27,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: sb16_dsp.c,v 1.7 1994/09/27 17:58:24 davidg Exp $
*/
#define DEB(x)
@ -39,7 +38,7 @@
#include "sb.h"
#include "sb_mixer.h"
#if defined(CONFIGURE_SOUNDCARD) && !defined(EXCLUDE_SB16) && !defined(EXCLUDE_SB) && !defined(EXCLUDE_AUDIO) && !defined(EXCLUDE_SBPRO)
#if defined(CONFIGURE_SOUNDCARD) && !defined(EXCLUDE_SB16) && !defined(EXCLUDE_SB) && !defined(EXCLUDE_AUDIO)
extern int sbc_base;
@ -79,6 +78,7 @@ static void sb16_dsp_halt (int dev);
static int dsp_set_speed (int);
static int dsp_set_stereo (int);
static void dsp_cleanup (void);
int sb_reset_dsp (void);
static struct audio_operations sb16_dsp_operations =
{
@ -476,22 +476,13 @@ sb16_dsp_init (long mem_start, struct address_info *hw_config)
sprintf (sb16_dsp_operations.name, "SoundBlaster 16 %d.%d", sbc_major, sbc_minor);
#endif
#ifdef __FreeBSD__
printk ("snd6: <%s>", sb16_dsp_operations.name);
#else
printk (" <%s>", sb16_dsp_operations.name);
#endif
if (num_audiodevs < MAX_AUDIO_DEV)
{
audio_devs[my_dev = num_audiodevs++] = &sb16_dsp_operations;
audio_devs[my_dev]->dmachan = hw_config->dma;
#ifndef NO_AUTODMA
audio_devs[my_dev]->buffcount = 1;
#else
audio_devs[my_dev]->flags &= ~DMA_AUTOMODE;
audio_devs[my_dev]->buffcount = DSP_BUFFCOUNT;
#endif
audio_devs[my_dev]->buffsize = DSP_BUFFSIZE;
}
else

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: sb16_midi.c,v 1.3 1994/08/02 07:40:38 davidg Exp $
*/
#include "sound_config.h"
@ -225,11 +224,7 @@ attach_sb16midi (long mem_start, struct address_info *hw_config)
return mem_start;
}
#ifdef __FreeBSD__
printk ("snd7: <SoundBlaster MPU-401>");
#else
printk (" <SoundBlaster MPU-401>");
#endif
std_midi_synth.midi_dev = my_dev = num_midis;
midi_devs[num_midis++] = &sb16midi_operations;
@ -287,7 +282,6 @@ int
probe_sb16midi (struct address_info *hw_config)
{
int ok = 0;
int i;
extern int sbc_major;
if (sbc_major < 4)

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id$
*/
#include "sound_config.h"

View File

@ -29,7 +29,6 @@
* Hunyue Yau Jan 6 1994
* Added code to support Sound Galaxy NX Pro
*
* $Id: sb_dsp.c,v 1.21 1994/10/01 02:17:04 swallace Exp $
*/
#include "sound_config.h"
@ -91,6 +90,7 @@ volatile int sb_intr_active = 0;
static int dsp_speed (int);
static int dsp_set_stereo (int mode);
int sb_dsp_command (unsigned char val);
#if !defined(EXCLUDE_MIDI) || !defined(EXCLUDE_AUDIO)
@ -105,7 +105,7 @@ sb_dsp_command (unsigned char val)
unsigned long limit;
limit = GET_TIME () + HZ / 10;/*
* The timeout is 0.1 secods
* The timeout is 0.1 seconds
*/
/*
@ -160,7 +160,7 @@ sbintr (int unit)
if (!(src & 1))
return; /*
* Not a DSP interupt
* Not a DSP interrupt
*/
}
#endif
@ -737,7 +737,7 @@ sb_dsp_detect (struct address_info *hw_config)
#ifndef EXCLUDE_AUDIO
static struct audio_operations sb_dsp_operations =
{
"SoundBlaster ",
"SoundBlaster",
NOTHING_SPECIAL,
AFMT_U8, /* Just 8 bits. Poor old SB */
NULL,
@ -803,7 +803,7 @@ sb_dsp_init (long mem_start, struct address_info *hw_config)
if (sbc_major >= 3)
{
#ifndef SCO
#if !defined(SCO) && !defined(EXCLUDE_AUDIO)
# ifdef __SGNXPRO__
if (mixer_type == 2)
{
@ -823,11 +823,7 @@ sb_dsp_init (long mem_start, struct address_info *hw_config)
#endif
}
#ifdef __FreeBSD__
printk ("snd2: <%s>", sb_dsp_operations.name);
#else
printk (" <%s>", sb_dsp_operations.name);
#endif
#ifndef EXCLUDE_AUDIO
#if !defined(EXCLUDE_SB16) && !defined(EXCLUDE_SBPRO)

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: sb_midi.c,v 1.3 1994/08/02 07:40:43 davidg Exp $
*/
#include "sound_config.h"
@ -43,7 +42,7 @@
* future version of this driver.
*/
extern int sb_dsp_ok; /* Set to 1 atfer successful initialization */
extern int sb_dsp_ok; /* Set to 1 after successful initialization */
extern int sbc_base;
extern int sb_midi_mode;

View File

@ -30,12 +30,11 @@
* Hunyue Yau Jan 6 1994
* Added code to support the Sound Galaxy NX Pro mixer.
*
* $Id: sb_mixer.c,v 1.3 1994/08/02 07:40:46 davidg Exp $
*/
#include "sound_config.h"
#if defined(CONFIGURE_SOUNDCARD) && !defined(EXCLUDE_SB) && !defined(EXCLUDE_SBPRO)
#if defined(CONFIGURE_SOUNDCARD) && !defined(EXCLUDE_SB)
#define __SB_MIXER_C__
#include "sb.h"

View File

@ -29,7 +29,6 @@
* Hunyue Yau Jan 6 1994
* Added defines for the Sound Galaxy NX Pro mixer.
*
* $Id: sb_mixer.h,v 1.3 1994/08/02 07:40:48 davidg Exp $
*/
#define SBPRO_RECORDING_DEVICES (SOUND_MASK_LINE | SOUND_MASK_MIC | SOUND_MASK_CD)

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: sequencer.c,v 1.6 1994/08/02 07:40:49 davidg Exp $
*/
#define SEQUENCER_C
@ -50,7 +49,7 @@ static int max_synthdev = 0;
/*
* The seq_mode gives the operating mode of the sequencer:
* 1 = level1 (the default)
* 2 = level2 (extended capabilites)
* 2 = level2 (extended capabilities)
*/
#define SEQ_1 1
@ -484,19 +483,21 @@ seq_chn_voice_event (unsigned char *event)
return;
if (seq_mode == SEQ_2)
if (synth_devs[dev]->alloc_voice)
voice = find_voice (dev, chn, note);
if (cmd == MIDI_NOTEON && parm == 0)
{
cmd = MIDI_NOTEOFF;
parm = 64;
if (synth_devs[dev]->alloc_voice)
voice = find_voice (dev, chn, note);
if (cmd == MIDI_NOTEON && parm == 0)
{
cmd = MIDI_NOTEOFF;
parm = 64;
}
}
switch (cmd)
{
case MIDI_NOTEON:
if (note > 127)
if (note > 127 && note != 255)
return;
if (voice == -1 && seq_mode == SEQ_2 && synth_devs[dev]->alloc_voice)
@ -1852,7 +1853,8 @@ sequencer_init (long mem_start)
}
int
sequencer_select (int dev, struct fileinfo *file, int sel_type, select_table * wait)
/* sequencer_select (int dev, struct fileinfo *file, int sel_type, select_table * wait) -SMP */
sequencer_select (int dev, struct fileinfo *file, int sel_type, void * wait)
{
return RET_ERROR (EIO);
}

View File

@ -0,0 +1,87 @@
Instructions on using audio on a FreeBSD 2.1 (or 2.0-current) system.
See also /sys/i386/conf/LINT.
You may add one or more of the following depending on what you do and don't
want compiled into your kernel. Note: Excluding things with EXCLUDE_...
is NOT recommended unless you really know what you're doing.
options "AUDIO_MPU401" # INCLUDE MPU401 support
options AUDIO_GUS # INCLUDE GUS support
options AUDIO_SBPRO # INCLUDE SB Pro support
options "AUDIO_SB16" # INCLUDE SB 16 support
options "AUDIO_YM3812" # INCLUDE AdLib support
options AUDIO_PAS # INCLUDE Pro Audio Studio support
options AUDIO_SB # INCLUDE SB support
options AUDIO_MSS # INCLUDE MSS support
options EXCLUDE_AUDIO # NO digital audio support
options EXCLUDE_SEQUENCER # NO sequencer support
options EXCLUDE_GUS_IODETECT # NO GUS io detection
options EXCLUDE_SB_EMULATION # NO PAS SB emulation support
options "EXCLUDE_OPL3" # NO OPL3 chip support
options EXCLUDE_PRO_MIDI # NO PAS MIDI support
options EXCLUDE_CHIP_MIDI # NO MIDI chip support
options EXCLUDE_MIDI # NO MIDI support whatsoever
To enable sound card support, you need to uncomment and add one or more of
the following lines to your kernel configuration file according to the
directions below:
#device snd5 at isa? port 0x330 irq 6 vector mpuintr
#device snd4 at isa? port 0x220 irq 15 drq 6 vector gusintr
#device snd3 at isa? port 0x388 irq 10 drq 6 vector pasintr
#device snd2 at isa? port 0x220 irq 7 drq 1 vector sbintr
#device snd6 at isa? port 0x220 irq 7 drq 5 vector sbintr
#device snd10 at isa? port 0x530 irq 10 drq 1 vector adintr
#device snd7 at isa? port 0x300
#device snd1 at isa? port 0x388
Note for PAS user: you should change snd1 line to
#device snd1 at isa? port 0x38a
(next stereo port) to avoid conflict with snd3
Unit numbers are:
1 for Yamaha FM synth
2 for SB/SB Pro DSP
3 for PAS PCM and Midi
4 for GUS
5 for MPU-401 (there is separate driver for the SB16)
6 for SB16 (DSP)
7 for SB16 Midi (MPU-401 emulation)
10 for Microsoft Windows Sound System (AD1846)
If you have ProAudioSpectrum, uncomment units 3, 2 and 1
If you have SoundBlaster 1.0 to 2.0 or SB Pro, uncomment 2 and 1.
If you have SoundBlaster 16, uncomment 2, 1, 6 and 7.
(use the same IRQ for the cards 2, 6 and 7. The DMA of the
card 2 is the 8 bit one and the DMA of the card 6 is the 16 bit one.
the port address of the card 7 is the Midi I/O address of the SB16.
If you have GravisUltrasound, uncomment 4
If you have MPU-401, uncomment 5
NOTE: The MPU-401 driver may or may not work, and is unfortunately
unverifiable since no one I know has one. If you can test this,
please let me know! Also note that you will have to change these
settings if your soundcard is set for a non-standard address or IRQ.
Please check your documentation (or verify with any provided DOS utilities
that may have come with your card) and set the IRQ or address fields
accordingly.
Also: Some systems with the OPTI chipset will require you to #define
BROKEN_BUS_CLOCK in /sys/i386/sound/pas2_card.c. Symptoms are that
you will hear a lot of clicking and popping sounds, like a geiger counter,
coming out of the PAS even when is not playing anything.
Also: You can configure more then one card on a single DMA using
ALLOW_CONFLICT_DMA.
Probing problems: Since the SB16 uses the same IRQ and addresses for
the different drivers, some of the snd dirvers will not be probed because
the kernel thinks there is a conflict. This can be worked-around by
setting the ALLOW_CONFLICT_IOADDR or ALLOW_CONFLICT_IRQ options.
Warning: Setting the ALLOW_* options will will bypass checks for ALL drivers,
so be careful when you use them!
- Jordan Hubbard (jkh@freefall.cdrom.com)
- Steven Wallace (swallace@freefall.cdrom.com)
- Sujal Patel (smpatel@wam.umd.edu)

View File

@ -1,12 +1,7 @@
/*
* DMA buffer calls
*
* $Id: sound_calls.h,v 1.6 1994/09/27 17:58:28 davidg Exp $
*/
#ifndef _MACHINE_ISA_SOUND_H_
#define _MACHINE_ISA_SOUND_H_
int DMAbuf_open(int dev, int mode);
int DMAbuf_release(int dev, int mode);
int DMAbuf_getwrbuffer(int dev, char **buf, int *size);
@ -100,6 +95,7 @@ int pro_midi_write(int dev, snd_rw_buf *uio);
int pro_midi_read(int dev, snd_rw_buf *uio);
/* From soundcard.c */
long soundcard_init(long mem_start);
void tenmicrosec(void);
void request_sound_timer (int count);
void sound_stop_timer(void);
@ -229,7 +225,7 @@ void sound_timer_interrupt(void);
/* From ad1848.c */
void ad1848_init (char *name, int io_base, int irq, int dma_playback, int dma_capture);
int ad1848_detect (int io_base);
void ad1848_interrupt (int dev);
void adintr (int dev);
long attach_ms_sound(long mem_start, struct address_info * hw_config);
int probe_ms_sound(struct address_info *hw_config);
@ -245,5 +241,3 @@ int pss_ioctl (int dev, struct fileinfo *file,
unsigned int cmd, unsigned int arg);
int pss_lseek (int dev, struct fileinfo *file, off_t offset, int orig);
long pss_init(long mem_start);
#endif /* _MACHINE_ISA_SOUND_H_ */

View File

@ -26,7 +26,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: sound_config.h,v 1.5 1994/08/02 07:40:53 davidg Exp $
*/
#include "local.h"
@ -53,16 +52,10 @@
#endif
#ifdef EXCLUDE_SEQUENCER
#ifndef EXCLUDE_MIDI
#define EXCLUDE_MIDI
#endif
#ifndef EXCLUDE_YM3812
#define EXCLUDE_YM3812
#endif
#ifndef EXCLUDE_OPL3
#define EXCLUDE_OPL3
#endif
#endif
#ifndef SND_DEFAULT_ENABLE
#define SND_DEFAULT_ENABLE 1
@ -123,18 +116,6 @@ If your card has nonstandard I/O address or IRQ number, change defines
#define GUS_DMA 6
#endif
#ifndef GUS16_BASE
#define GUS16_BASE 0x530
#endif
#ifndef GUS16_IRQ
#define GUS16_IRQ 7
#endif
#ifndef GUS16_DMA
#define GUS16_DMA 3
#endif
#ifndef MPU_BASE
#define MPU_BASE 0x330
#endif
@ -156,20 +137,20 @@ If your card has nonstandard I/O address or IRQ number, change defines
#define PSS_DMA 1
#endif
#ifndef MSS_BASE
#define MSS_BASE 0x530
#ifndef MAX_REALTIME_FACTOR
#define MAX_REALTIME_FACTOR 4
#endif
#ifndef MSS_IRQ
#define MSS_IRQ 10
#ifndef MSS_BASE
#define MSS_BASE 0x530
#endif
#ifndef MSS_IRQ
#define MSS_IRQ 10
#endif
#ifndef MSS_DMA
#define MSS_DMA 3
#endif
#ifndef MAX_REALTIME_FACTOR
#define MAX_REALTIME_FACTOR 4
#define MSS_DMA 1
#endif
/************* PCM DMA buffer sizes *******************/
@ -221,7 +202,7 @@ If your card has nonstandard I/O address or IRQ number, change defines
#define SND_DEV_DSP16 5 /* Like /dev/dsp but 16 bits/sample */
#define SND_DEV_STATUS 6 /* /dev/sndstat */
/* #7 not in use now. Was in 2.4. Free for use after v3.0. */
#define SND_DEV_SEQ2 8 /* /dev/sequecer, level 2 interface */
#define SND_DEV_SEQ2 8 /* /dev/sequencer, level 2 interface */
#define SND_DEV_SNDPROC 9 /* /dev/sndproc for programmable devices */
#define SND_DEV_PSS SND_DEV_SNDPROC

View File

@ -25,7 +25,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: sound_switch.c,v 1.3 1994/08/02 07:40:55 davidg Exp $
*/
#include "sound_config.h"

View File

@ -26,7 +26,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: sb16_dsp.c,v 1.7 1994/09/27 17:58:24 davidg Exp $
*/
#define SEQUENCER_C

View File

@ -26,7 +26,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: soundcard.c,v 1.20 1994/10/01 02:17:14 swallace Exp $
* soundcard.c,v 1.20 1994/10/01 02:17:14 swallace Exp
*/
#include "sound_config.h"
@ -54,7 +54,6 @@ static int soundcards_installed = 0; /* Number of installed
static int soundcard_configured = 0;
static struct fileinfo files[SND_NDEVS];
struct selinfo selinfo[SND_NDEVS >> 4];
int sndprobe (struct isa_device *dev);
int sndattach (struct isa_device *dev);
@ -63,7 +62,7 @@ int sndclose (dev_t dev, int flags);
int sndioctl (dev_t dev, int cmd, caddr_t arg, int mode);
int sndread (int dev, struct uio *uio);
int sndwrite (int dev, struct uio *uio);
int sndselect (int dev, int rw, struct proc *p);
int sndselect (int dev, int rw);
static void sound_mem_init(void);
unsigned
@ -123,9 +122,6 @@ sndopen (dev_t dev, int flags)
else if (flags & FWRITE)
files[dev].mode = OPEN_WRITE;
selinfo[dev >> 4].si_pid = 0;
selinfo[dev >> 4].si_flags = 0;
FIX_RETURN(sound_open_sw (dev, &files[dev]));
}
@ -148,33 +144,13 @@ sndioctl (dev_t dev, int cmd, caddr_t arg, int mode)
}
int
sndselect (int dev, int rw, struct proc *p)
sndselect (int dev, int rw)
{
int r,s;
dev = minor (dev);
DEB (printk ("sound_ioctl(dev=%d, cmd=0x%x, arg=0x%x)\n", dev, cmd, arg));
r = 0;
DISABLE_INTR(s);
switch (rw) {
case FREAD: /* record */
if(DMAbuf_input_ready(dev >> 4))
r = 1;
else
selrecord(p, &selinfo[dev >> 4]);
break;
case FWRITE: /* play */
if(DMAbuf_output_ready(dev >> 4))
r = 1;
else
selrecord(p, &selinfo[dev >> 4]);
break;
}
RESTORE_INTR(s);
return r;
FIX_RETURN (0);
}
static unsigned short

View File

@ -26,7 +26,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: sys_timer.c,v 1.7 1994/09/27 17:58:24 davidg Exp $
*/
#define SEQUENCER_C

View File

@ -1,6 +1,3 @@
/*
* $Id$
*/
#ifdef SEQUENCER_C
unsigned short semitone_tuning[24] =

View File

@ -26,7 +26,6 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Id: uart6850.c,v 1.7 1994/09/27 17:58:24 davidg Exp $
*/
#include "sound_config.h"

View File

@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $Header: audioio.h,v 1.3 93/07/18 14:07:07 mccanne Exp $ (LBL)
* /home/ncvs/src/sys/i386/isa/sound/vat_audioio.h,v 1.1 1994/12/16 04:59:18 pst Exp (LBL)
*/
#ifndef _BSD_AUDIOIO_H_