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:
parent
dd8723c2e3
commit
ca83dc2de1
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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).
|
||||
|
||||
|
@ -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.
|
||||
|
35
sys/i386/isa/sound/Readme.freebsd
Normal file
35
sys/i386/isa/sound/Readme.freebsd
Normal 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)
|
154
sys/i386/isa/sound/Readme.v30
Normal file
154
sys/i386/isa/sound/Readme.v30
Normal 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
|
@ -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;
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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_
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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] =
|
||||
|
@ -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,
|
||||
|
@ -1,6 +1,4 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* I/O addresses
|
||||
*/
|
||||
|
@ -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,
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
*/
|
||||
|
@ -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| \
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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"
|
||||
|
@ -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);
|
||||
|
@ -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"
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
*/
|
||||
|
||||
/*
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 */
|
||||
|
@ -1,6 +1,3 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
#define DSP_RESET (sbc_base + 0x6)
|
||||
#define DSP_READ (sbc_base + 0xA)
|
||||
#define DSP_WRITE (sbc_base + 0xC)
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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"
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
87
sys/i386/isa/sound/sound.doc
Normal file
87
sys/i386/isa/sound/sound.doc
Normal 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)
|
@ -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_ */
|
||||
|
@ -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
|
||||
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -1,6 +1,3 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
#ifdef SEQUENCER_C
|
||||
|
||||
unsigned short semitone_tuning[24] =
|
||||
|
@ -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"
|
||||
|
@ -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_
|
||||
|
Loading…
x
Reference in New Issue
Block a user