Initial commit
This commit is contained in:
commit
169c65d57e
51358 changed files with 23120455 additions and 0 deletions
66
Documentation/sound/oss/ALS
Normal file
66
Documentation/sound/oss/ALS
Normal file
|
@ -0,0 +1,66 @@
|
|||
ALS-007/ALS-100/ALS-200 based sound cards
|
||||
=========================================
|
||||
|
||||
Support for sound cards based around the Avance Logic
|
||||
ALS-007/ALS-100/ALS-200 chip is included. These chips are a single
|
||||
chip PnP sound solution which is mostly hardware compatible with the
|
||||
Sound Blaster 16 card, with most differences occurring in the use of
|
||||
the mixer registers. For this reason the ALS code is integrated
|
||||
as part of the Sound Blaster 16 driver (adding only 800 bytes to the
|
||||
SB16 driver).
|
||||
|
||||
To use an ALS sound card under Linux, enable the following options as
|
||||
modules in the sound configuration section of the kernel config:
|
||||
- 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
|
||||
- FM synthesizer (YM3812/OPL-3) support
|
||||
- standalone MPU401 support may be required for some cards; for the
|
||||
ALS-007, when using isapnptools, it is required
|
||||
Since the ALS-007/100/200 are PnP cards, ISAPnP support should probably be
|
||||
compiled in. If kernel level PnP support is not included, isapnptools will
|
||||
be required to configure the card before the sound modules are loaded.
|
||||
|
||||
When using kernel level ISAPnP, the kernel should correctly identify and
|
||||
configure all resources required by the card when the "sb" module is
|
||||
inserted. Note that the ALS-007 does not have a 16 bit DMA channel and that
|
||||
the MPU401 interface on this card uses a different interrupt to the audio
|
||||
section. This should all be correctly configured by the kernel; if problems
|
||||
with the MPU401 interface surface, try using the standalone MPU401 module,
|
||||
passing "0" as the "sb" module's "mpu_io" module parameter to prevent the
|
||||
soundblaster driver attempting to register the MPU401 itself. The onboard
|
||||
synth device can be accessed using the "opl3" module.
|
||||
|
||||
If isapnptools is used to wake up the sound card (as in 2.2.x), the settings
|
||||
of the card's resources should be passed to the kernel modules ("sb", "opl3"
|
||||
and "mpu401") using the module parameters. When configuring an ALS-007, be
|
||||
sure to specify different IRQs for the audio and MPU401 sections - this card
|
||||
requires they be different. For "sb", "io", "irq" and "dma" should be set
|
||||
to the same values used to configure the audio section of the card with
|
||||
isapnp. "dma16" should be explicitly set to "-1" for an ALS-007 since this
|
||||
card does not have a 16 bit dma channel; if not specified the kernel will
|
||||
default to using channel 5 anyway which will cause audio not to work.
|
||||
"mpu_io" should be set to 0. The "io" parameter of the "opl3" module should
|
||||
also agree with the setting used by isapnp. To get the MPU401 interface
|
||||
working on an ALS-007 card, the "mpu401" module will be required since this
|
||||
card uses separate IRQs for the audio and MPU401 sections and there is no
|
||||
parameter available to pass a different IRQ to the "sb" driver (whose
|
||||
inbuilt MPU401 driver would otherwise be fine). Insert the mpu401 module
|
||||
passing appropriate values using the "io" and "irq" parameters.
|
||||
|
||||
The resulting sound driver will provide the following capabilities:
|
||||
- 8 and 16 bit audio playback
|
||||
- 8 and 16 bit audio recording
|
||||
- Software selection of record source (line in, CD, FM, mic, master)
|
||||
- Record and playback of midi data via the external MPU-401
|
||||
- Playback of midi data using inbuilt FM synthesizer
|
||||
- Control of the ALS-007 mixer via any OSS-compatible mixer programs.
|
||||
Controls available are Master (L&R), Line in (L&R), CD (L&R),
|
||||
DSP/PCM/audio out (L&R), FM (L&R) and Mic in (mono).
|
||||
|
||||
Jonathan Woithe
|
||||
jwoithe@just42.net
|
||||
30 March 1998
|
||||
|
||||
Modified 2000-02-26 by Dave Forrest, drf5n@virginia.edu to add ALS100/ALS200
|
||||
Modified 2000-04-10 by Paul Laufer, pelaufer@csupomona.edu to add ISAPnP info.
|
||||
Modified 2000-11-19 by Jonathan Woithe, jwoithe@just42.net
|
||||
- updated information for kernel 2.4.x.
|
101
Documentation/sound/oss/AudioExcelDSP16
Normal file
101
Documentation/sound/oss/AudioExcelDSP16
Normal file
|
@ -0,0 +1,101 @@
|
|||
Driver
|
||||
------
|
||||
|
||||
Information about Audio Excel DSP 16 driver can be found in the source
|
||||
file aedsp16.c
|
||||
Please, read the head of the source before using it. It contain useful
|
||||
information.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
The Audio Excel configuration, is now done with the standard Linux setup.
|
||||
You have to configure the sound card (Sound Blaster or Microsoft Sound System)
|
||||
and, if you want it, the Roland MPU-401 (do not use the Sound Blaster MPU-401,
|
||||
SB-MPU401) in the main driver menu. Activate the lowlevel drivers then select
|
||||
the Audio Excel hardware that you want to initialize. Check the IRQ/DMA/MIRQ
|
||||
of the Audio Excel initialization: it must be the same as the SBPRO (or MSS)
|
||||
setup. If the parameters are different, correct it.
|
||||
I you own a Gallant's audio card based on SC-6600, activate the SC-6600 support.
|
||||
If you want to change the configuration of the sound board, be sure to
|
||||
check off all the configuration items before re-configure it.
|
||||
|
||||
Module parameters
|
||||
-----------------
|
||||
To use this driver as a module, you must configure some module parameters, to
|
||||
set up I/O addresses, IRQ lines and DMA channels. Some parameters are
|
||||
mandatory while some others are optional. Here a list of parameters you can
|
||||
use with this module:
|
||||
|
||||
Name Description
|
||||
==== ===========
|
||||
MANDATORY
|
||||
io I/O base address (0x220 or 0x240)
|
||||
irq irq line (5, 7, 9, 10 or 11)
|
||||
dma dma channel (0, 1 or 3)
|
||||
|
||||
OPTIONAL
|
||||
mss_base I/O base address for activate MSS mode (default SBPRO)
|
||||
(0x530 or 0xE80)
|
||||
mpu_base I/O base address for activate MPU-401 mode
|
||||
(0x300, 0x310, 0x320 or 0x330)
|
||||
mpu_irq MPU-401 irq line (5, 7, 9, 10 or 0)
|
||||
|
||||
A configuration file in /etc/modprobe.d/ directory will have lines like this:
|
||||
|
||||
options opl3 io=0x388
|
||||
options ad1848 io=0x530 irq=11 dma=3
|
||||
options aedsp16 io=0x220 irq=11 dma=3 mss_base=0x530
|
||||
|
||||
Where the aedsp16 options are the options for this driver while opl3 and
|
||||
ad1848 are the corresponding options for the MSS and OPL3 modules.
|
||||
|
||||
Loading MSS and OPL3 needs to pre load the aedsp16 module to set up correctly
|
||||
the sound card. Installation dependencies must be written in configuration
|
||||
files under /etc/modprobe.d/ directory:
|
||||
|
||||
softdep ad1848 pre: aedsp16
|
||||
softdep opl3 pre: aedsp16
|
||||
|
||||
Then you must load the sound modules stack in this order:
|
||||
sound -> aedsp16 -> [ ad1848, opl3 ]
|
||||
|
||||
With the above configuration, loading ad1848 or opl3 modules, will
|
||||
automatically load all the sound stack.
|
||||
|
||||
Sound cards supported
|
||||
---------------------
|
||||
This driver supports the SC-6000 and SC-6600 based Gallant's sound card.
|
||||
It don't support the Audio Excel DSP 16 III (try the SC-6600 code).
|
||||
I'm working on the III version of the card: if someone have useful
|
||||
information about it, please let me know.
|
||||
For all the non-supported audio cards, you have to boot MS-DOS (or WIN95)
|
||||
activating the audio card with the MS-DOS device driver, then you have to
|
||||
<ctrl>-<alt>-<del> and boot Linux.
|
||||
Follow these steps:
|
||||
|
||||
1) Compile Linux kernel with standard sound driver, using the emulation
|
||||
you want, with the parameters of your audio card,
|
||||
e.g. Microsoft Sound System irq10 dma3
|
||||
2) Install your new kernel as the default boot kernel.
|
||||
3) Boot MS-DOS and configure the audio card with the boot time device
|
||||
driver, for MSS irq10 dma3 in our example.
|
||||
4) <ctrl>-<alt>-<del> and boot Linux. This will maintain the DOS configuration
|
||||
and will boot the new kernel with sound driver. The sound driver will find
|
||||
the audio card and will recognize and attach it.
|
||||
|
||||
Reports on User successes
|
||||
-------------------------
|
||||
|
||||
> Date: Mon, 29 Jul 1996 08:35:40 +0100
|
||||
> From: Mr S J Greenaway <sjg95@unixfe.rl.ac.uk>
|
||||
> To: riccardo@cdc8g5.cdc.polimi.it (Riccardo Facchetti)
|
||||
> Subject: Re: Audio Excel DSP 16 initialization code
|
||||
>
|
||||
> Just to let you know got my Audio Excel (emulating a MSS) working
|
||||
> with my original SB16, thanks for the driver!
|
||||
|
||||
|
||||
Last revised: 20 August 1998
|
||||
Riccardo Facchetti
|
||||
fizban@tin.it
|
152
Documentation/sound/oss/CMI8330
Normal file
152
Documentation/sound/oss/CMI8330
Normal file
|
@ -0,0 +1,152 @@
|
|||
Documentation for CMI 8330 (SoundPRO)
|
||||
-------------------------------------
|
||||
Alessandro Zummo <azummo@ita.flashnet.it>
|
||||
|
||||
( Be sure to read Documentation/sound/oss/SoundPro too )
|
||||
|
||||
|
||||
This adapter is now directly supported by the sb driver.
|
||||
|
||||
The only thing you have to do is to compile the kernel sound
|
||||
support as a module and to enable kernel ISAPnP support,
|
||||
as shown below.
|
||||
|
||||
|
||||
CONFIG_SOUND=m
|
||||
CONFIG_SOUND_SB=m
|
||||
|
||||
CONFIG_PNP=y
|
||||
CONFIG_ISAPNP=y
|
||||
|
||||
|
||||
and optionally:
|
||||
|
||||
|
||||
CONFIG_SOUND_MPU401=m
|
||||
|
||||
for MPU401 support.
|
||||
|
||||
|
||||
(I suggest you to use "make menuconfig" or "make xconfig"
|
||||
for a more comfortable configuration editing)
|
||||
|
||||
|
||||
|
||||
Then you can do
|
||||
|
||||
modprobe sb
|
||||
|
||||
and everything will be (hopefully) configured.
|
||||
|
||||
You should get something similar in syslog:
|
||||
|
||||
sb: CMI8330 detected.
|
||||
sb: CMI8330 sb base located at 0x220
|
||||
sb: CMI8330 mpu base located at 0x330
|
||||
sb: CMI8330 mail reports to Alessandro Zummo <azummo@ita.flashnet.it>
|
||||
sb: ISAPnP reports CMI 8330 SoundPRO at i/o 0x220, irq 7, dma 1,5
|
||||
|
||||
|
||||
|
||||
|
||||
The old documentation file follows for reference
|
||||
purposes.
|
||||
|
||||
|
||||
How to enable CMI 8330 (SOUNDPRO) soundchip on Linux
|
||||
------------------------------------------
|
||||
Stefan Laudat <Stefan.Laudat@asit.ro>
|
||||
|
||||
[Note: The CMI 8338 is unrelated and is supported by cmpci.o]
|
||||
|
||||
|
||||
In order to use CMI8330 under Linux you just have to use a proper isapnp.conf, a good isapnp and a little bit of patience. I use isapnp 1.17, but
|
||||
you may get a better one I guess at http://www.roestock.demon.co.uk/isapnptools/.
|
||||
|
||||
Of course you will have to compile kernel sound support as module, as shown below:
|
||||
|
||||
CONFIG_SOUND=m
|
||||
CONFIG_SOUND_OSS=m
|
||||
CONFIG_SOUND_SB=m
|
||||
CONFIG_SOUND_ADLIB=m
|
||||
CONFIG_SOUND_MPU401=m
|
||||
# Mikro$chaft sound system (kinda useful here ;))
|
||||
CONFIG_SOUND_MSS=m
|
||||
|
||||
The /etc/isapnp.conf file will be:
|
||||
|
||||
<snip below>
|
||||
|
||||
|
||||
(READPORT 0x0203)
|
||||
(ISOLATE PRESERVE)
|
||||
(IDENTIFY *)
|
||||
(VERBOSITY 2)
|
||||
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
|
||||
(VERIFYLD N)
|
||||
|
||||
|
||||
# WSS
|
||||
|
||||
(CONFIGURE CMI0001/16777472 (LD 0
|
||||
(IO 0 (SIZE 8) (BASE 0x0530))
|
||||
(IO 1 (SIZE 8) (BASE 0x0388))
|
||||
(INT 0 (IRQ 7 (MODE +E)))
|
||||
(DMA 0 (CHANNEL 0))
|
||||
(NAME "CMI0001/16777472[0]{CMI8330/C3D Audio Adapter}")
|
||||
(ACT Y)
|
||||
))
|
||||
|
||||
# MPU
|
||||
|
||||
(CONFIGURE CMI0001/16777472 (LD 1
|
||||
(IO 0 (SIZE 2) (BASE 0x0330))
|
||||
(INT 0 (IRQ 11 (MODE +E)))
|
||||
(NAME "CMI0001/16777472[1]{CMI8330/C3D Audio Adapter}")
|
||||
(ACT Y)
|
||||
))
|
||||
|
||||
# Joystick
|
||||
|
||||
(CONFIGURE CMI0001/16777472 (LD 2
|
||||
(IO 0 (SIZE 8) (BASE 0x0200))
|
||||
(NAME "CMI0001/16777472[2]{CMI8330/C3D Audio Adapter}")
|
||||
(ACT Y)
|
||||
))
|
||||
|
||||
# SoundBlaster
|
||||
|
||||
(CONFIGURE CMI0001/16777472 (LD 3
|
||||
(IO 0 (SIZE 16) (BASE 0x0220))
|
||||
(INT 0 (IRQ 5 (MODE +E)))
|
||||
(DMA 0 (CHANNEL 1))
|
||||
(DMA 1 (CHANNEL 5))
|
||||
(NAME "CMI0001/16777472[3]{CMI8330/C3D Audio Adapter}")
|
||||
(ACT Y)
|
||||
))
|
||||
|
||||
|
||||
(WAITFORKEY)
|
||||
|
||||
<end of snip>
|
||||
|
||||
The module sequence is trivial:
|
||||
|
||||
/sbin/insmod soundcore
|
||||
/sbin/insmod sound
|
||||
/sbin/insmod uart401
|
||||
# insert this first
|
||||
/sbin/insmod ad1848 io=0x530 irq=7 dma=0 soundpro=1
|
||||
# The sb module is an alternative to the ad1848 (Microsoft Sound System)
|
||||
# Anyhow, this is full duplex and has MIDI
|
||||
/sbin/insmod sb io=0x220 dma=1 dma16=5 irq=5 mpu_io=0x330
|
||||
|
||||
|
||||
|
||||
Alma Chao <elysian@ethereal.torsion.org> suggests the following in
|
||||
a /etc/modprobe.d/*conf file:
|
||||
|
||||
alias sound ad1848
|
||||
alias synth0 opl3
|
||||
options ad1848 io=0x530 irq=7 dma=0 soundpro=1
|
||||
options opl3 io=0x388
|
34
Documentation/sound/oss/ESS
Normal file
34
Documentation/sound/oss/ESS
Normal file
|
@ -0,0 +1,34 @@
|
|||
Documentation for the ESS AudioDrive chips
|
||||
|
||||
In 2.4 kernels the SoundBlaster driver not only tries to detect an ESS chip, it
|
||||
tries to detect the type of ESS chip too. The correct detection of the chip
|
||||
doesn't always succeed however, so unless you use the kernel isapnp facilities
|
||||
(and you chip is pnp capable) the default behaviour is 2.0 behaviour which
|
||||
means: only detect ES688 and ES1688.
|
||||
|
||||
All ESS chips now have a recording level setting. This is a need-to-have for
|
||||
people who want to use their ESS for recording sound.
|
||||
|
||||
Every chip that's detected as a later-than-es1688 chip has a 6 bits logarithmic
|
||||
master volume control.
|
||||
|
||||
Every chip that's detected as a ES1887 now has Full Duplex support. Made a
|
||||
little testprogram that shows that is works, haven't seen a real program that
|
||||
needs this however.
|
||||
|
||||
For ESS chips an additional parameter "esstype" can be specified. This controls
|
||||
the (auto) detection of the ESS chips. It can have 3 kinds of values:
|
||||
|
||||
-1 Act like 2.0 kernels: only detect ES688 or ES1688.
|
||||
0 Try to auto-detect the chip (may fail for ES1688)
|
||||
688 The chip will be treated as ES688
|
||||
1688 ,, ,, ,, ,, ,, ,, ES1688
|
||||
1868 ,, ,, ,, ,, ,, ,, ES1868
|
||||
1869 ,, ,, ,, ,, ,, ,, ES1869
|
||||
1788 ,, ,, ,, ,, ,, ,, ES1788
|
||||
1887 ,, ,, ,, ,, ,, ,, ES1887
|
||||
1888 ,, ,, ,, ,, ,, ,, ES1888
|
||||
|
||||
Because Full Duplex is supported for ES1887 you can specify a second DMA
|
||||
channel by specifying module parameter dma16. It can be one of: 0, 1, 3 or 5.
|
||||
|
55
Documentation/sound/oss/ESS1868
Normal file
55
Documentation/sound/oss/ESS1868
Normal file
|
@ -0,0 +1,55 @@
|
|||
Documentation for the ESS1868F AudioDrive PnP sound card
|
||||
|
||||
The ESS1868 sound card is a PnP ESS1688-compatible 16-bit sound card.
|
||||
|
||||
It should be automatically detected by the Linux Kernel isapnp support when you
|
||||
load the sb.o module. Otherwise you should take care of:
|
||||
|
||||
* The ESS1868 does not allow use of a 16-bit DMA, thus DMA 0, 1, 2, and 3
|
||||
may only be used.
|
||||
|
||||
* isapnptools version 1.14 does work with ESS1868. Earlier versions might
|
||||
not.
|
||||
|
||||
* Sound support MUST be compiled as MODULES, not statically linked
|
||||
into the kernel.
|
||||
|
||||
|
||||
NOTE: this is only needed when not using the kernel isapnp support!
|
||||
|
||||
For configuring the sound card's I/O addresses, IRQ and DMA, here is a
|
||||
sample copy of the isapnp.conf directives regarding the ESS1868:
|
||||
|
||||
(CONFIGURE ESS1868/-1 (LD 1
|
||||
(IO 0 (BASE 0x0220))
|
||||
(IO 1 (BASE 0x0388))
|
||||
(IO 2 (BASE 0x0330))
|
||||
(DMA 0 (CHANNEL 1))
|
||||
(INT 0 (IRQ 5 (MODE +E)))
|
||||
(ACT Y)
|
||||
))
|
||||
|
||||
(for a full working isapnp.conf file, remember the
|
||||
(ISOLATE)
|
||||
(IDENTIFY *)
|
||||
at the beginning and the
|
||||
(WAITFORKEY)
|
||||
at the end.)
|
||||
|
||||
In this setup, the main card I/O is 0x0220, FM synthesizer is 0x0388, and
|
||||
the MPU-401 MIDI port is located at 0x0330. IRQ is IRQ 5, DMA is channel 1.
|
||||
|
||||
After configuring the sound card via isapnp, to use the card you must load
|
||||
the sound modules with the proper I/O information. Here is my setup:
|
||||
|
||||
# ESS1868F AudioDrive initialization
|
||||
|
||||
/sbin/modprobe sound
|
||||
/sbin/insmod uart401
|
||||
/sbin/insmod sb io=0x220 irq=5 dma=1 dma16=-1
|
||||
/sbin/insmod mpu401 io=0x330
|
||||
/sbin/insmod opl3 io=0x388
|
||||
/sbin/insmod v_midi
|
||||
|
||||
opl3 is the FM synthesizer
|
||||
/sbin/insmod opl3 io=0x388
|
459
Documentation/sound/oss/Introduction
Normal file
459
Documentation/sound/oss/Introduction
Normal file
|
@ -0,0 +1,459 @@
|
|||
Introduction Notes on Modular Sound Drivers and Soundcore
|
||||
Wade Hampton
|
||||
2/14/2001
|
||||
|
||||
Purpose:
|
||||
========
|
||||
This document provides some general notes on the modular
|
||||
sound drivers and their configuration, along with the
|
||||
support modules sound.o and soundcore.o.
|
||||
|
||||
Note, some of this probably should be added to the Sound-HOWTO!
|
||||
|
||||
Note, soundlow.o was present with 2.2 kernels but is not
|
||||
required for 2.4.x kernels. References have been removed
|
||||
to this.
|
||||
|
||||
|
||||
Copying:
|
||||
========
|
||||
none
|
||||
|
||||
|
||||
History:
|
||||
========
|
||||
0.1.0 11/20/1998 First version, draft
|
||||
1.0.0 11/1998 Alan Cox changes, incorporation in 2.2.0
|
||||
as Documentation/sound/oss/Introduction
|
||||
1.1.0 6/30/1999 Second version, added notes on making the drivers,
|
||||
added info on multiple sound cards of similar types,]
|
||||
added more diagnostics info, added info about esd.
|
||||
added info on OSS and ALSA.
|
||||
1.1.1 19991031 Added notes on sound-slot- and sound-service.
|
||||
(Alan Cox)
|
||||
1.1.2 20000920 Modified for Kernel 2.4 (Christoph Hellwig)
|
||||
1.1.3 20010214 Minor notes and corrections (Wade Hampton)
|
||||
Added examples of sound-slot-0, etc.
|
||||
|
||||
|
||||
Modular Sound Drivers:
|
||||
======================
|
||||
|
||||
Thanks to the GREAT work by Alan Cox (alan@lxorguk.ukuu.org.uk),
|
||||
|
||||
[And Oleg Drokin, Thomas Sailer, Andrew Veliath and more than a few
|
||||
others - not to mention Hannu's original code being designed well
|
||||
enough to cope with that kind of chopping up](Alan)
|
||||
|
||||
the standard Linux kernels support a modular sound driver. From
|
||||
Alan's comments in linux/drivers/sound/README.FIRST:
|
||||
|
||||
The modular sound driver patches were funded by Red Hat Software
|
||||
(www.redhat.com). The sound driver here is thus a modified version of
|
||||
Hannu's code. Please bear that in mind when considering the appropriate
|
||||
forums for bug reporting.
|
||||
|
||||
The modular sound drivers may be loaded via insmod or modprobe.
|
||||
To support all the various sound modules, there are two general
|
||||
support modules that must be loaded first:
|
||||
|
||||
soundcore.o: Top level handler for the sound system, provides
|
||||
a set of functions for registration of devices
|
||||
by type.
|
||||
|
||||
sound.o: Common sound functions required by all modules.
|
||||
|
||||
For the specific sound modules (e.g., sb.o for the Soundblaster),
|
||||
read the documentation on that module to determine what options
|
||||
are available, for example IRQ, address, DMA.
|
||||
|
||||
Warning, the options for different cards sometime use different names
|
||||
for the same or a similar feature (dma1= versus dma16=). As a last
|
||||
resort, inspect the code (search for module_param).
|
||||
|
||||
Notes:
|
||||
|
||||
1. There is a new OpenSource sound driver called ALSA which is
|
||||
currently under development: http://www.alsa-project.org/
|
||||
The ALSA drivers support some newer hardware that may not
|
||||
be supported by this sound driver and also provide some
|
||||
additional features.
|
||||
|
||||
2. The commercial OSS driver may be obtained from the site:
|
||||
http://www.opensound.com. This may be used for cards that
|
||||
are unsupported by the kernel driver, or may be used
|
||||
by other operating systems.
|
||||
|
||||
3. The enlightenment sound daemon may be used for playing
|
||||
multiple sounds at the same time via a single card, eliminating
|
||||
some of the requirements for multiple sound card systems. For
|
||||
more information, see: http://www.tux.org/~ricdude/EsounD.html
|
||||
The "esd" program may be used with the real-player and mpeg
|
||||
players like mpg123 and x11amp. The newer real-player
|
||||
and some games even include built-in support for ESD!
|
||||
|
||||
|
||||
Building the Modules:
|
||||
=====================
|
||||
|
||||
This document does not provide full details on building the
|
||||
kernel, etc. The notes below apply only to making the kernel
|
||||
sound modules. If this conflicts with the kernel's README,
|
||||
the README takes precedence.
|
||||
|
||||
1. To make the kernel sound modules, cd to your /usr/src/linux
|
||||
directory (typically) and type make config, make menuconfig,
|
||||
or make xconfig (to start the command line, dialog, or x-based
|
||||
configuration tool).
|
||||
|
||||
2. Select the Sound option and a dialog will be displayed.
|
||||
|
||||
3. Select M (module) for "Sound card support".
|
||||
|
||||
4. Select your sound driver(s) as a module. For ProAudio, Sound
|
||||
Blaster, etc., select M (module) for OSS sound modules.
|
||||
[thanks to Marvin Stodolsky <stodolsk@erols.com>]A
|
||||
|
||||
5. Make the kernel (e.g., make bzImage), and install the kernel.
|
||||
|
||||
6. Make the modules and install them (make modules; make modules_install).
|
||||
|
||||
Note, for 2.5.x kernels, make sure you have the newer module-init-tools
|
||||
installed or modules will not be loaded properly. 2.5.x requires an
|
||||
updated module-init-tools.
|
||||
|
||||
|
||||
Plug and Play (PnP:
|
||||
===================
|
||||
|
||||
If the sound card is an ISA PnP card, isapnp may be used
|
||||
to configure the card. See the file isapnp.txt in the
|
||||
directory one level up (e.g., /usr/src/linux/Documentation).
|
||||
|
||||
Also the 2.4.x kernels provide PnP capabilities, see the
|
||||
file NEWS in this directory.
|
||||
|
||||
PCI sound cards are highly recommended, as they are far
|
||||
easier to configure and from what I have read, they use
|
||||
less resources and are more CPU efficient.
|
||||
|
||||
|
||||
INSMOD:
|
||||
=======
|
||||
|
||||
If loading via insmod, the common modules must be loaded in the
|
||||
order below BEFORE loading the other sound modules. The card-specific
|
||||
modules may then be loaded (most require parameters). For example,
|
||||
I use the following via a shell script to load my SoundBlaster:
|
||||
|
||||
SB_BASE=0x240
|
||||
SB_IRQ=9
|
||||
SB_DMA=3
|
||||
SB_DMA2=5
|
||||
SB_MPU=0x300
|
||||
#
|
||||
echo Starting sound
|
||||
/sbin/insmod soundcore
|
||||
/sbin/insmod sound
|
||||
#
|
||||
echo Starting sound blaster....
|
||||
/sbin/insmod uart401
|
||||
/sbin/insmod sb io=$SB_BASE irq=$SB_IRQ dma=$SB_DMA dma16=$SB_DMA2 mpu_io=$SB_MP
|
||||
|
||||
When using sound as a module, I typically put these commands
|
||||
in a file such as /root/soundon.sh.
|
||||
|
||||
|
||||
MODPROBE:
|
||||
=========
|
||||
|
||||
If loading via modprobe, these common files are automatically loaded when
|
||||
requested by modprobe. For example, my /etc/modprobe.d/oss.conf contains:
|
||||
|
||||
alias sound sb
|
||||
options sb io=0x240 irq=9 dma=3 dma16=5 mpu_io=0x300
|
||||
|
||||
All you need to do to load the module is:
|
||||
|
||||
/sbin/modprobe sb
|
||||
|
||||
|
||||
Sound Status:
|
||||
=============
|
||||
|
||||
The status of sound may be read/checked by:
|
||||
cat (anyfile).au >/dev/audio
|
||||
|
||||
[WWH: This may not work properly for SoundBlaster PCI 128 cards
|
||||
such as the es1370/1 (see the es1370/1 files in this directory)
|
||||
as they do not automatically support uLaw on /dev/audio.]
|
||||
|
||||
The status of the modules and which modules depend on
|
||||
which other modules may be checked by:
|
||||
/sbin/lsmod
|
||||
|
||||
/sbin/lsmod should show something like the following:
|
||||
sb 26280 0
|
||||
uart401 5640 0 [sb]
|
||||
sound 57112 0 [sb uart401]
|
||||
soundcore 1968 8 [sb sound]
|
||||
|
||||
|
||||
Removing Sound:
|
||||
===============
|
||||
|
||||
Sound may be removed by using /sbin/rmmod in the reverse order
|
||||
in which you load the modules. Note, if a program has a sound device
|
||||
open (e.g., xmixer), that module (and the modules on which it
|
||||
depends) may not be unloaded.
|
||||
|
||||
For example, I use the following to remove my Soundblaster (rmmod
|
||||
in the reverse order in which I loaded the modules):
|
||||
|
||||
/sbin/rmmod sb
|
||||
/sbin/rmmod uart401
|
||||
/sbin/rmmod sound
|
||||
/sbin/rmmod soundcore
|
||||
|
||||
When using sound as a module, I typically put these commands
|
||||
in a script such as /root/soundoff.sh.
|
||||
|
||||
|
||||
Removing Sound for use with OSS:
|
||||
================================
|
||||
|
||||
If you get really stuck or have a card that the kernel modules
|
||||
will not support, you can get a commercial sound driver from
|
||||
http://www.opensound.com. Before loading the commercial sound
|
||||
driver, you should do the following:
|
||||
|
||||
1. remove sound modules (detailed above)
|
||||
2. remove the sound modules from /etc/modprobe.d/*.conf
|
||||
3. move the sound modules from /lib/modules/<kernel>/misc
|
||||
(for example, I make a /lib/modules/<kernel>/misc/tmp
|
||||
directory and copy the sound module files to that
|
||||
directory).
|
||||
|
||||
|
||||
Multiple Sound Cards:
|
||||
=====================
|
||||
|
||||
The sound drivers will support multiple sound cards and there
|
||||
are some great applications like multitrack that support them.
|
||||
Typically, you need two sound cards of different types. Note, this
|
||||
uses more precious interrupts and DMA channels and sometimes
|
||||
can be a configuration nightmare. I have heard reports of 3-4
|
||||
sound cards (typically I only use 2). You can sometimes use
|
||||
multiple PCI sound cards of the same type.
|
||||
|
||||
On my machine I have two sound cards (cs4232 and Soundblaster Vibra
|
||||
16). By loading sound as modules, I can control which is the first
|
||||
sound device (/dev/dsp, /dev/audio, /dev/mixer) and which is
|
||||
the second. Normally, the cs4232 (Dell sound on the motherboard)
|
||||
would be the first sound device, but I prefer the Soundblaster.
|
||||
All you have to do is to load the one you want as /dev/dsp
|
||||
first (in my case "sb") and then load the other one
|
||||
(in my case "cs4232").
|
||||
|
||||
If you have two cards of the same type that are jumpered
|
||||
cards or different PnP revisions, you may load the same
|
||||
module twice. For example, I have a SoundBlaster vibra 16
|
||||
and an older SoundBlaster 16 (jumpers). To load the module
|
||||
twice, you need to do the following:
|
||||
|
||||
1. Copy the sound modules to a new name. For example
|
||||
sb.o could be copied (or symlinked) to sb1.o for the
|
||||
second SoundBlaster.
|
||||
|
||||
2. Make a second entry in /etc/modprobe.d/*conf, for example,
|
||||
sound1 or sb1. This second entry should refer to the
|
||||
new module names for example sb1, and should include
|
||||
the I/O, etc. for the second sound card.
|
||||
|
||||
3. Update your soundon.sh script, etc.
|
||||
|
||||
Warning: I have never been able to get two PnP sound cards of the
|
||||
same type to load at the same time. I have tried this several times
|
||||
with the Soundblaster Vibra 16 cards. OSS has indicated that this
|
||||
is a PnP problem.... If anyone has any luck doing this, please
|
||||
send me an E-MAIL. PCI sound cards should not have this problem.a
|
||||
Since this was originally release, I have received a couple of
|
||||
mails from people who have accomplished this!
|
||||
|
||||
NOTE: In Linux 2.4 the Sound Blaster driver (and only this one yet)
|
||||
supports multiple cards with one module by default.
|
||||
Read the file 'Soundblaster' in this directory for details.
|
||||
|
||||
|
||||
Sound Problems:
|
||||
===============
|
||||
|
||||
First RTFM (including the troubleshooting section
|
||||
in the Sound-HOWTO).
|
||||
|
||||
1) If you are having problems loading the modules (for
|
||||
example, if you get device conflict errors) try the
|
||||
following:
|
||||
|
||||
A) If you have Win95 or NT on the same computer,
|
||||
write down what addresses, IRQ, and DMA channels
|
||||
those were using for the same hardware. You probably
|
||||
can use these addresses, IRQs, and DMA channels.
|
||||
You should really do this BEFORE attempting to get
|
||||
sound working!
|
||||
|
||||
B) Check (cat) /proc/interrupts, /proc/ioports,
|
||||
and /proc/dma. Are you trying to use an address,
|
||||
IRQ or DMA port that another device is using?
|
||||
|
||||
C) Check (cat) /proc/isapnp
|
||||
|
||||
D) Inspect your /var/log/messages file. Often that will
|
||||
indicate what IRQ or IO port could not be obtained.
|
||||
|
||||
E) Try another port or IRQ. Note this may involve
|
||||
using the PnP tools to move the sound card to
|
||||
another location. Sometimes this is the only way
|
||||
and it is more or less trial and error.
|
||||
|
||||
2) If you get motor-boating (the same sound or part of a
|
||||
sound clip repeated), you probably have either an IRQ
|
||||
or DMA conflict. Move the card to another IRQ or DMA
|
||||
port. This has happened to me when playing long files
|
||||
when I had an IRQ conflict.
|
||||
|
||||
3. If you get dropouts or pauses when playing high sample
|
||||
rate files such as using mpg123 or x11amp/xmms, you may
|
||||
have too slow of a CPU and may have to use the options to
|
||||
play the files at 1/2 speed. For example, you may use
|
||||
the -2 or -4 option on mpg123. You may also get this
|
||||
when trying to play mpeg files stored on a CD-ROM
|
||||
(my Toshiba T8000 PII/366 sometimes has this problem).
|
||||
|
||||
4. If you get "cannot access device" errors, your /dev/dsp
|
||||
files, etc. may be set to owner root, mode 600. You
|
||||
may have to use the command:
|
||||
chmod 666 /dev/dsp /dev/mixer /dev/audio
|
||||
|
||||
5. If you get "device busy" errors, another program has the
|
||||
sound device open. For example, if using the Enlightenment
|
||||
sound daemon "esd", the "esd" program has the sound device.
|
||||
If using "esd", please RTFM the docs on ESD. For example,
|
||||
esddsp <program> may be used to play files via a non-esd
|
||||
aware program.
|
||||
|
||||
6) Ask for help on the sound list or send E-MAIL to the
|
||||
sound driver author/maintainer.
|
||||
|
||||
7) Turn on debug in drivers/sound/sound_config.h (DEB, DDB, MDB).
|
||||
|
||||
8) If the system reports insufficient DMA memory then you may want to
|
||||
load sound with the "dmabufs=1" option. Or in /etc/conf.modules add
|
||||
|
||||
preinstall sound dmabufs=1
|
||||
|
||||
This makes the sound system allocate its buffers and hang onto them.
|
||||
|
||||
You may also set persistent DMA when building a 2.4.x kernel.
|
||||
|
||||
|
||||
Configuring Sound:
|
||||
==================
|
||||
|
||||
There are several ways of configuring your sound:
|
||||
|
||||
1) On the kernel command line (when using the sound driver(s)
|
||||
compiled in the kernel). Check the driver source and
|
||||
documentation for details.
|
||||
|
||||
2) On the command line when using insmod or in a bash script
|
||||
using command line calls to load sound.
|
||||
|
||||
3) In /etc/modprobe.d/*conf when using modprobe.
|
||||
|
||||
4) Via Red Hat's GPL'd /usr/sbin/sndconfig program (text based).
|
||||
|
||||
5) Via the OSS soundconf program (with the commercial version
|
||||
of the OSS driver.
|
||||
|
||||
6) By just loading the module and let isapnp do everything relevant
|
||||
for you. This works only with a few drivers yet and - of course -
|
||||
only with isapnp hardware.
|
||||
|
||||
And I am sure, several other ways.
|
||||
|
||||
Anyone want to write a linuxconf module for configuring sound?
|
||||
|
||||
|
||||
Module Loading:
|
||||
===============
|
||||
|
||||
When a sound card is first referenced and sound is modular, the sound system
|
||||
will ask for the sound devices to be loaded. Initially it requests that
|
||||
the driver for the sound system is loaded. It then will ask for
|
||||
sound-slot-0, where 0 is the first sound card. (sound-slot-1 the second and
|
||||
so on). Thus you can do
|
||||
|
||||
alias sound-slot-0 sb
|
||||
|
||||
To load a soundblaster at this point. If the slot loading does not provide
|
||||
the desired device - for example a soundblaster does not directly provide
|
||||
a midi synth in all cases then it will request "sound-service-0-n" where n
|
||||
is
|
||||
|
||||
0 Mixer
|
||||
|
||||
2 MIDI
|
||||
|
||||
3, 4 DSP audio
|
||||
|
||||
|
||||
For example, I use the following to load my Soundblaster PCI 128
|
||||
(ES 1371) card first, followed by my SoundBlaster Vibra 16 card,
|
||||
then by my TV card:
|
||||
|
||||
# Load the Soundblaster PCI 128 as /dev/dsp, /dev/dsp1, /dev/mixer
|
||||
alias sound-slot-0 es1371
|
||||
|
||||
# Load the Soundblaster Vibra 16 as /dev/dsp2, /dev/mixer1
|
||||
alias sound-slot-1 sb
|
||||
options sb io=0x240 irq=5 dma=1 dma16=5 mpu_io=0x330
|
||||
|
||||
# Load the BTTV (TV card) as /dev/mixer2
|
||||
alias sound-slot-2 bttv
|
||||
alias sound-service-2-0 tvmixer
|
||||
|
||||
pre-install bttv modprobe tuner ; modprobe tvmixer
|
||||
pre-install tvmixer modprobe msp3400; modprobe tvaudio
|
||||
options tuner debug=0 type=8
|
||||
options bttv card=0 radio=0 pll=0
|
||||
|
||||
|
||||
For More Information (RTFM):
|
||||
============================
|
||||
1) Information on kernel modules: manual pages for insmod and modprobe.
|
||||
|
||||
2) Information on PnP, RTFM manual pages for isapnp.
|
||||
|
||||
3) Sound-HOWTO and Sound-Playing-HOWTO.
|
||||
|
||||
4) OSS's WWW site at http://www.opensound.com.
|
||||
|
||||
5) All the files in Documentation/sound.
|
||||
|
||||
6) The comments and code in linux/drivers/sound.
|
||||
|
||||
7) The sndconfig and rhsound documentation from Red Hat.
|
||||
|
||||
8) The Linux-sound mailing list: sound-list@redhat.com.
|
||||
|
||||
9) Enlightenment documentation (for info on esd)
|
||||
http://www.tux.org/~ricdude/EsounD.html.
|
||||
|
||||
10) ALSA home page: http://www.alsa-project.org/
|
||||
|
||||
|
||||
Contact Information:
|
||||
====================
|
||||
Wade Hampton: (whampton@staffnet.com)
|
||||
|
1137
Documentation/sound/oss/MultiSound
Normal file
1137
Documentation/sound/oss/MultiSound
Normal file
File diff suppressed because it is too large
Load diff
6
Documentation/sound/oss/OPL3
Normal file
6
Documentation/sound/oss/OPL3
Normal file
|
@ -0,0 +1,6 @@
|
|||
A pure OPL3 card is nice and easy to configure. Simply do
|
||||
|
||||
insmod opl3 io=0x388
|
||||
|
||||
Change the I/O address in the very unlikely case this card is differently
|
||||
configured
|
218
Documentation/sound/oss/Opti
Normal file
218
Documentation/sound/oss/Opti
Normal file
|
@ -0,0 +1,218 @@
|
|||
Support for the OPTi 82C931 chip
|
||||
--------------------------------
|
||||
Note: parts of this README file apply also to other
|
||||
cards that use the mad16 driver.
|
||||
|
||||
Some items in this README file are based on features
|
||||
added to the sound driver after Linux-2.1.91 was out.
|
||||
By the time of writing this I do not know which official
|
||||
kernel release will include these features.
|
||||
Please do not report inconsistencies on older Linux
|
||||
kernels.
|
||||
|
||||
The OPTi 82C931 is supported in its non-PnP mode.
|
||||
Usually you do not need to set jumpers, etc. The sound driver
|
||||
will check the card status and if it is required it will
|
||||
force the card into a mode in which it can be programmed.
|
||||
|
||||
If you have another OS installed on your computer it is recommended
|
||||
that Linux and the other OS use the same resources.
|
||||
|
||||
Also, it is recommended that resources specified in /etc/modprobe.d/*.conf
|
||||
and resources specified in /etc/isapnp.conf agree.
|
||||
|
||||
Compiling the sound driver
|
||||
--------------------------
|
||||
I highly recommend that you build a modularized sound driver.
|
||||
This document does not cover a sound-driver which is built in
|
||||
the kernel.
|
||||
|
||||
Sound card support should be enabled as a module (chose m).
|
||||
Answer 'm' for these items:
|
||||
Generic OPL2/OPL3 FM synthesizer support (CONFIG_SOUND_ADLIB)
|
||||
Microsoft Sound System support (CONFIG_SOUND_MSS)
|
||||
Support for OPTi MAD16 and/or Mozart based cards (CONFIG_SOUND_MAD16)
|
||||
FM synthesizer (YM3812/OPL-3) support (CONFIG_SOUND_YM3812)
|
||||
|
||||
The configuration menu may ask for addresses, IRQ lines or DMA
|
||||
channels. If the card is used as a module the module loading
|
||||
options will override these values.
|
||||
|
||||
For the OPTi 931 you can answer 'n' to:
|
||||
Support MIDI in older MAD16 based cards (requires SB) (CONFIG_SOUND_MAD16_OLDCARD)
|
||||
If you do need MIDI support in a Mozart or C928 based card you
|
||||
need to answer 'm' to the above question. In that case you will
|
||||
also need to answer 'm' to:
|
||||
'100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support' (CONFIG_SOUND_SB)
|
||||
|
||||
Go on and compile your kernel and modules. Install the modules. Run depmod -a.
|
||||
|
||||
Using isapnptools
|
||||
-----------------
|
||||
In most systems with a PnP BIOS you do not need to use isapnp. The
|
||||
initialization provided by the BIOS is sufficient for the driver
|
||||
to pick up the card and continue initialization.
|
||||
|
||||
If that fails, or if you have other PnP cards, you need to use isapnp
|
||||
to initialize the card.
|
||||
This was tested with isapnptools-1.11 but I recommend that you use
|
||||
isapnptools-1.13 (or newer). Run pnpdump to dump the information
|
||||
about your PnP cards. Then edit the resulting file and select
|
||||
the options of your choice. This file is normally installed as
|
||||
/etc/isapnp.conf.
|
||||
|
||||
The driver has one limitation with respect to I/O port resources:
|
||||
IO3 base must be 0x0E0C. Although isapnp allows other ports, this
|
||||
address is hard-coded into the driver.
|
||||
|
||||
Using kmod and autoloading the sound driver
|
||||
-------------------------------------------
|
||||
Config files in '/etc/modprobe.d/' are used as below:
|
||||
|
||||
alias mixer0 mad16
|
||||
alias audio0 mad16
|
||||
alias midi0 mad16
|
||||
alias synth0 opl3
|
||||
options sb mad16=1
|
||||
options mad16 irq=10 dma=0 dma16=1 io=0x530 joystick=1 cdtype=0
|
||||
options opl3 io=0x388
|
||||
install mad16 /sbin/modprobe -i mad16 && /sbin/ad1848_mixer_reroute 14 8 15 3 16 6
|
||||
|
||||
If you have an MPU daughtercard or onboard MPU you will want to add to the
|
||||
"options mad16" line - eg
|
||||
|
||||
options mad16 irq=5 dma=0 dma16=3 io=0x530 mpu_io=0x330 mpu_irq=9
|
||||
|
||||
To set the I/O and IRQ of the MPU.
|
||||
|
||||
|
||||
Explain:
|
||||
|
||||
alias mixer0 mad16
|
||||
alias audio0 mad16
|
||||
alias midi0 mad16
|
||||
alias synth0 opl3
|
||||
|
||||
When any sound device is opened the kernel requests auto-loading
|
||||
of char-major-14. There is a built-in alias that translates this
|
||||
request to loading the main sound module.
|
||||
|
||||
The sound module in its turn will request loading of a sub-driver
|
||||
for mixer, audio, midi or synthesizer device. The first 3 are
|
||||
supported by the mad16 driver. The synth device is supported
|
||||
by the opl3 driver.
|
||||
|
||||
There is currently no way to autoload the sound device driver
|
||||
if more than one card is installed.
|
||||
|
||||
options sb mad16=1
|
||||
|
||||
This is left for historical reasons. If you enable the
|
||||
config option 'Support MIDI in older MAD16 based cards (requires SB)'
|
||||
or if you use an older mad16 driver it will force loading of the
|
||||
SoundBlaster driver. This option tells the SB driver not to look
|
||||
for a SB card but to wait for the mad16 driver.
|
||||
|
||||
options mad16 irq=10 dma=0 dma16=1 io=0x530 joystick=1 cdtype=0
|
||||
options opl3 io=0x388
|
||||
|
||||
post-install mad16 /sbin/ad1848_mixer_reroute 14 8 15 3 16 6
|
||||
|
||||
This sets resources and options for the mad16 and opl3 drivers.
|
||||
I use two DMA channels (only one is required) to enable full duplex.
|
||||
joystick=1 enables the joystick port. cdtype=0 disables the cd port.
|
||||
You can also set mpu_io and mpu_irq in the mad16 options for the
|
||||
uart401 driver.
|
||||
|
||||
This tells modprobe to run /sbin/ad1848_mixer_reroute after
|
||||
mad16 is successfully loaded and initialized. The source
|
||||
for ad1848_mixer_reroute is appended to the end of this readme
|
||||
file. It is impossible for the sound driver to know the actual
|
||||
connections to the mixer. The 3 inputs intended for cd, synth
|
||||
and line-in are mapped to the generic inputs line1, line2 and
|
||||
line3. This program reroutes these mixer channels to their
|
||||
right names (note the right mapping depends on the actual sound
|
||||
card that you use).
|
||||
The numeric parameters mean:
|
||||
14=line1 8=cd - reroute line1 to the CD input.
|
||||
15=line2 3=synth - reroute line2 to the synthesizer input.
|
||||
16=line3 6=line - reroute line3 to the line input.
|
||||
For reference on other input names look at the file
|
||||
/usr/include/linux/soundcard.h.
|
||||
|
||||
Using a joystick
|
||||
-----------------
|
||||
You must enable a joystick in the mad16 options. (also
|
||||
in /etc/isapnp.conf if you use it).
|
||||
Tested with regular analog joysticks.
|
||||
|
||||
A CDROM drive connected to the sound card
|
||||
-----------------------------------------
|
||||
The 82C931 chip has support only for secondary ATAPI cdrom.
|
||||
(cdtype=8). Loading the mad16 driver resets the C931 chip
|
||||
and if a cdrom was already mounted it may cause a complete
|
||||
system hang. Do not use the sound card if you have an alternative.
|
||||
If you do use the sound card it is important that you load
|
||||
the mad16 driver (use "modprobe mad16" to prevent auto-unloading)
|
||||
before the cdrom is accessed the first time.
|
||||
|
||||
Using the sound driver built-in to the kernel may help here, but...
|
||||
Most new systems have a PnP BIOS and also two IDE controllers.
|
||||
The IDE controller on the sound card may be needed only on older
|
||||
systems (which have only one IDE controller) but these systems
|
||||
also do not have a PnP BIOS - requiring isapnptools and a modularized
|
||||
driver.
|
||||
|
||||
Known problems
|
||||
--------------
|
||||
1. See the section on "A CDROM drive connected to the sound card".
|
||||
|
||||
2. On my system the codec cannot capture companded sound samples.
|
||||
(eg., recording from /dev/audio). When any companded capture is
|
||||
requested I get stereo-16 bit samples instead. Playback of
|
||||
companded samples works well. Apparently this problem is not common
|
||||
to all C931 based cards. I do not know how to identify cards that
|
||||
have this problem.
|
||||
|
||||
Source for ad1848_mixer_reroute.c
|
||||
---------------------------------
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <linux/soundcard.h>
|
||||
|
||||
static char *mixer_names[SOUND_MIXER_NRDEVICES] =
|
||||
SOUND_DEVICE_LABELS;
|
||||
|
||||
int
|
||||
main(int argc, char **argv) {
|
||||
int val, from, to;
|
||||
int i, fd;
|
||||
|
||||
fd = open("/dev/mixer", O_RDWR);
|
||||
if(fd < 0) {
|
||||
perror("/dev/mixer");
|
||||
return 1;
|
||||
}
|
||||
|
||||
for(i = 2; i < argc; i += 2) {
|
||||
from = atoi(argv[i-1]);
|
||||
to = atoi(argv[i]);
|
||||
|
||||
if(to == SOUND_MIXER_NONE)
|
||||
fprintf(stderr, "%s: turning off mixer %s\n",
|
||||
argv[0], mixer_names[to]);
|
||||
else
|
||||
fprintf(stderr, "%s: rerouting mixer %s to %s\n",
|
||||
argv[0], mixer_names[from], mixer_names[to]);
|
||||
|
||||
val = from << 8 | to;
|
||||
|
||||
if(ioctl(fd, SOUND_MIXER_PRIVATE2, &val)) {
|
||||
perror("AD1848 mixer reroute");
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
162
Documentation/sound/oss/PAS16
Normal file
162
Documentation/sound/oss/PAS16
Normal file
|
@ -0,0 +1,162 @@
|
|||
Pro Audio Spectrum 16 for 2.3.99 and later
|
||||
=========================================
|
||||
by Thomas Molina (tmolina@home.com)
|
||||
last modified 3 Mar 2001
|
||||
Acknowledgement to Axel Boldt (boldt@math.ucsb.edu) for stuff taken
|
||||
from Configure.help, Riccardo Facchetti for stuff from README.OSS,
|
||||
and others whose names I could not find.
|
||||
|
||||
This documentation is relevant for the PAS16 driver (pas2_card.c and
|
||||
friends) under kernel version 2.3.99 and later. If you are
|
||||
unfamiliar with configuring sound under Linux, please read the
|
||||
Sound-HOWTO, Documentation/sound/oss/Introduction and other
|
||||
relevant docs first.
|
||||
|
||||
The following information is relevant information from README.OSS
|
||||
and legacy docs for the Pro Audio Spectrum 16 (PAS16):
|
||||
==================================================================
|
||||
|
||||
The pas2_card.c driver supports the following cards --
|
||||
Pro Audio Spectrum 16 (PAS16) and compatibles:
|
||||
Pro Audio Spectrum 16
|
||||
Pro Audio Studio 16
|
||||
Logitech Sound Man 16
|
||||
NOTE! The original Pro Audio Spectrum as well as the PAS+ are not
|
||||
and will not be supported by the driver.
|
||||
|
||||
The sound driver configuration dialog
|
||||
-------------------------------------
|
||||
|
||||
Sound configuration starts by making some yes/no questions. Be careful
|
||||
when answering to these questions since answering y to a question may
|
||||
prevent some later ones from being asked. For example don't answer y to
|
||||
the question about (PAS16) if you don't really have a PAS16. Sound
|
||||
configuration may also be made modular by answering m to configuration
|
||||
options presented.
|
||||
|
||||
Note also that all questions may not be asked. The configuration program
|
||||
may disable some questions depending on the earlier choices. It may also
|
||||
select some options automatically as well.
|
||||
|
||||
"ProAudioSpectrum 16 support",
|
||||
- Answer 'y'_ONLY_ if you have a Pro Audio Spectrum _16_,
|
||||
Pro Audio Studio 16 or Logitech SoundMan 16 (be sure that
|
||||
you read the above list correctly). Don't answer 'y' if you
|
||||
have some other card made by Media Vision or Logitech since they
|
||||
are not PAS16 compatible.
|
||||
NOTE! Since 3.5-beta10 you need to enable SB support (next question)
|
||||
if you want to use the SB emulation of PAS16. It's also possible to
|
||||
the emulation if you want to use a true SB card together with PAS16
|
||||
(there is another question about this that is asked later).
|
||||
|
||||
"Generic OPL2/OPL3 FM synthesizer support",
|
||||
- Answer 'y' if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
|
||||
The PAS16 has an OPL3-compatible FM chip.
|
||||
|
||||
With PAS16 you can use two audio device files at the same time. /dev/dsp (and
|
||||
/dev/audio) is connected to the 8/16 bit native codec and the /dev/dsp1 (and
|
||||
/dev/audio1) is connected to the SB emulation (8 bit mono only).
|
||||
|
||||
|
||||
The new stuff for 2.3.99 and later
|
||||
============================================================================
|
||||
The following configuration options are relevant to configuring the PAS16:
|
||||
|
||||
Sound card support
|
||||
CONFIG_SOUND
|
||||
If you have a sound card in your computer, i.e. if it can say more
|
||||
than an occasional beep, say Y. Be sure to have all the information
|
||||
about your sound card and its configuration down (I/O port,
|
||||
interrupt and DMA channel), because you will be asked for it.
|
||||
|
||||
You want to read the Sound-HOWTO, available from
|
||||
http://www.tldp.org/docs.html#howto . General information
|
||||
about the modular sound system is contained in the files
|
||||
Documentation/sound/oss/Introduction. The file
|
||||
Documentation/sound/oss/README.OSS contains some slightly outdated but
|
||||
still useful information as well.
|
||||
|
||||
OSS sound modules
|
||||
CONFIG_SOUND_OSS
|
||||
OSS is the Open Sound System suite of sound card drivers. They make
|
||||
sound programming easier since they provide a common API. Say Y or M
|
||||
here (the module will be called sound.o) if you haven't found a
|
||||
driver for your sound card above, then pick your driver from the
|
||||
list below.
|
||||
|
||||
Persistent DMA buffers
|
||||
CONFIG_SOUND_DMAP
|
||||
Linux can often have problems allocating DMA buffers for ISA sound
|
||||
cards on machines with more than 16MB of RAM. This is because ISA
|
||||
DMA buffers must exist below the 16MB boundary and it is quite
|
||||
possible that a large enough free block in this region cannot be
|
||||
found after the machine has been running for a while. If you say Y
|
||||
here the DMA buffers (64Kb) will be allocated at boot time and kept
|
||||
until the shutdown. This option is only useful if you said Y to
|
||||
"OSS sound modules", above. If you said M to "OSS sound modules"
|
||||
then you can get the persistent DMA buffer functionality by passing
|
||||
the command-line argument "dmabuf=1" to the sound.o module.
|
||||
|
||||
Say y here for PAS16.
|
||||
|
||||
ProAudioSpectrum 16 support
|
||||
CONFIG_SOUND_PAS
|
||||
Answer Y only if you have a Pro Audio Spectrum 16, ProAudio Studio
|
||||
16 or Logitech SoundMan 16 sound card. Don't answer Y if you have
|
||||
some other card made by Media Vision or Logitech since they are not
|
||||
PAS16 compatible. It is not necessary to enable the separate
|
||||
Sound Blaster support; it is included in the PAS driver.
|
||||
|
||||
If you compile the driver into the kernel, you have to add
|
||||
"pas2=<io>,<irq>,<dma>,<dma2>,<sbio>,<sbirq>,<sbdma>,<sbdma2>
|
||||
to the kernel command line.
|
||||
|
||||
FM Synthesizer (YM3812/OPL-3) support
|
||||
CONFIG_SOUND_YM3812
|
||||
Answer Y if your card has a FM chip made by Yamaha (OPL2/OPL3/OPL4).
|
||||
Answering Y is usually a safe and recommended choice, however some
|
||||
cards may have software (TSR) FM emulation. Enabling FM support with
|
||||
these cards may cause trouble (I don't currently know of any such
|
||||
cards, however).
|
||||
Please read the file Documentation/sound/oss/OPL3 if your card has an
|
||||
OPL3 chip.
|
||||
If you compile the driver into the kernel, you have to add
|
||||
"opl3=<io>" to the kernel command line.
|
||||
|
||||
If you compile your drivers into the kernel, you MUST configure
|
||||
OPL3 support as a module for PAS16 support to work properly.
|
||||
You can then get OPL3 functionality by issuing the command:
|
||||
insmod opl3
|
||||
In addition, you must either add the following line to
|
||||
/etc/modprobe.d/*.conf:
|
||||
options opl3 io=0x388
|
||||
or else add the following line to /etc/lilo.conf:
|
||||
opl3=0x388
|
||||
|
||||
|
||||
EXAMPLES
|
||||
===================================================================
|
||||
To use the PAS16 in my computer I have enabled the following sound
|
||||
configuration options:
|
||||
|
||||
CONFIG_SOUND=y
|
||||
CONFIG_SOUND_OSS=y
|
||||
CONFIG_SOUND_TRACEINIT=y
|
||||
CONFIG_SOUND_DMAP=y
|
||||
CONFIG_SOUND_PAS=y
|
||||
CONFIG_SOUND_SB=n
|
||||
CONFIG_SOUND_YM3812=m
|
||||
|
||||
I have also included the following append line in /etc/lilo.conf:
|
||||
append="pas2=0x388,10,3,-1,0x220,5,1,-1 sb=0x220,5,1,-1 opl3=0x388"
|
||||
|
||||
The io address of 0x388 is default configuration on the PAS16. The
|
||||
irq of 10 and dma of 3 may not match your installation. The above
|
||||
configuration enables PAS16, 8-bit Soundblaster and OPL3
|
||||
functionality. If Soundblaster functionality is not desired, the
|
||||
following line would be appropriate:
|
||||
append="pas2=0x388,10,3,-1,0,-1,-1,-1 opl3=0x388"
|
||||
|
||||
If sound is built totally modular, the above options may be
|
||||
specified in /etc/modprobe.d/*.conf for pas2, sb and opl3
|
||||
respectively.
|
41
Documentation/sound/oss/PSS
Normal file
41
Documentation/sound/oss/PSS
Normal file
|
@ -0,0 +1,41 @@
|
|||
The PSS cards and other ECHO based cards provide an onboard DSP with
|
||||
downloadable programs and also has an AD1848 "Microsoft Sound System"
|
||||
device. The PSS driver enables MSS and MPU401 modes of the card. SB
|
||||
is not enabled since it doesn't work concurrently with MSS.
|
||||
|
||||
If you build this driver as a module then the driver takes the following
|
||||
parameters
|
||||
|
||||
pss_io. The I/O base the PSS card is configured at (normally 0x220
|
||||
or 0x240)
|
||||
|
||||
mss_io The base address of the Microsoft Sound System interface.
|
||||
This is normally 0x530, but may be 0x604 or other addresses.
|
||||
|
||||
mss_irq The interrupt assigned to the Microsoft Sound System
|
||||
emulation. IRQ's 3,5,7,9,10,11 and 12 are available. If you
|
||||
get IRQ errors be sure to check the interrupt is set to
|
||||
"ISA/Legacy" in the BIOS on modern machines.
|
||||
|
||||
mss_dma The DMA channel used by the Microsoft Sound System.
|
||||
This can be 0, 1, or 3. DMA 0 is not available on older
|
||||
machines and will cause a crash on them.
|
||||
|
||||
mpu_io The MPU emulation base address. This sets the base of the
|
||||
synthesizer. It is typically 0x330 but can be altered.
|
||||
|
||||
mpu_irq The interrupt to use for the synthesizer. It must differ
|
||||
from the IRQ used by the Microsoft Sound System port.
|
||||
|
||||
|
||||
The mpu_io/mpu_irq fields are optional. If they are not specified the
|
||||
synthesizer parts are not configured.
|
||||
|
||||
When the module is loaded it looks for a file called
|
||||
/etc/sound/pss_synth. This is the firmware file from the DOS install disks.
|
||||
This fil holds a general MIDI emulation. The file expected is called
|
||||
genmidi.ld on newer DOS driver install disks and synth.ld on older ones.
|
||||
|
||||
You can also load alternative DSP algorithms into the card if you wish. One
|
||||
alternative driver can be found at http://www.mpg123.de/
|
||||
|
88
Documentation/sound/oss/PSS-updates
Normal file
88
Documentation/sound/oss/PSS-updates
Normal file
|
@ -0,0 +1,88 @@
|
|||
This file contains notes for users of PSS sound cards who wish to use the
|
||||
newly added features of the newest version of this driver.
|
||||
|
||||
The major enhancements present in this new revision of this driver is the
|
||||
addition of two new module parameters that allow you to take full advantage of
|
||||
all the features present on your PSS sound card. These features include the
|
||||
ability to enable both the builtin CDROM and joystick ports.
|
||||
|
||||
pss_enable_joystick
|
||||
|
||||
This parameter is basically a flag. A 0 will leave the joystick port
|
||||
disabled, while a non-zero value would enable the joystick port. The default
|
||||
setting is pss_enable_joystick=0 as this keeps this driver fully compatible
|
||||
with systems that were using previous versions of this driver. If you wish to
|
||||
enable the joystick port you will have to add pss_enable_joystick=1 as an
|
||||
argument to the driver. To actually use the joystick port you will then have
|
||||
to load the joystick driver itself. Just remember to load the joystick driver
|
||||
AFTER the pss sound driver.
|
||||
|
||||
pss_cdrom_port
|
||||
|
||||
This parameter takes a port address as its parameter. Any available port
|
||||
address can be specified to enable the CDROM port, except for 0x0 and -1 as
|
||||
these values would leave the port disabled. Like the joystick port, the cdrom
|
||||
port will require that an appropriate CDROM driver be loaded before you can make
|
||||
use of the newly enabled CDROM port. Like the joystick port option above,
|
||||
remember to load the CDROM driver AFTER the pss sound driver. While it may
|
||||
differ on some PSS sound cards, all the PSS sound cards that I have seen have a
|
||||
builtin Wearnes CDROM port. If this is the case with your PSS sound card you
|
||||
should load aztcd with the appropriate port option that matches the port you
|
||||
assigned to the CDROM port when you loaded your pss sound driver. (ex.
|
||||
modprobe pss pss_cdrom_port=0x340 && modprobe aztcd aztcd=0x340) The default
|
||||
setting of this parameter leaves the CDROM port disabled to maintain full
|
||||
compatibility with systems using previous versions of this driver.
|
||||
|
||||
Other options have also been added for the added convenience and utility
|
||||
of the user. These options are only available if this driver is loaded as a
|
||||
module.
|
||||
|
||||
pss_no_sound
|
||||
|
||||
This module parameter is a flag that can be used to tell the driver to
|
||||
just configure non-sound components. 0 configures all components, a non-0
|
||||
value will only attept to configure the CDROM and joystick ports. This
|
||||
parameter can be used by a user who only wished to use the builtin joystick
|
||||
and/or CDROM port(s) of his PSS sound card. If this driver is loaded with this
|
||||
parameter and with the parameter below set to true then a user can safely unload
|
||||
this driver with the following command "rmmod pss && rmmod ad1848 && rmmod
|
||||
mpu401 && rmmod sound && rmmod soundcore" and retain the full functionality of
|
||||
his CDROM and/or joystick port(s) while gaining back the memory previously used
|
||||
by the sound drivers. This default setting of this parameter is 0 to retain
|
||||
full behavioral compatibility with previous versions of this driver.
|
||||
|
||||
pss_keep_settings
|
||||
|
||||
This parameter can be used to specify whether you want the driver to reset
|
||||
all emulations whenever its unloaded. This can be useful for those who are
|
||||
sharing resources (io ports, IRQ's, DMA's) between different ISA cards. This
|
||||
flag can also be useful in that future versions of this driver may reset all
|
||||
emulations by default on the driver's unloading (as it probably should), so
|
||||
specifying it now will ensure that all future versions of this driver will
|
||||
continue to work as expected. The default value of this parameter is 1 to
|
||||
retain full behavioral compatibility with previous versions of this driver.
|
||||
|
||||
pss_firmware
|
||||
|
||||
This parameter can be used to specify the file containing the firmware
|
||||
code so that a user could tell the driver where that file is located instead
|
||||
of having to put it in a predefined location with a predefined name. The
|
||||
default setting of this parameter is "/etc/sound/pss_synth" as this was the
|
||||
path and filename the hardcoded value in the previous versions of this driver.
|
||||
|
||||
Examples:
|
||||
|
||||
# Normal PSS sound card system, loading of drivers.
|
||||
# Should be specified in an rc file (ex. Slackware uses /etc/rc.d/rc.modules).
|
||||
|
||||
/sbin/modprobe pss pss_io=0x220 mpu_io=0x338 mpu_irq=9 mss_io=0x530 mss_irq=10 mss_dma=1 pss_cdrom_port=0x340 pss_enable_joystick=1
|
||||
/sbin/modprobe aztcd aztcd=0x340
|
||||
/sbin/modprobe joystick
|
||||
|
||||
# System using the PSS sound card just for its CDROM and joystick ports.
|
||||
# Should be specified in an rc file (ex. Slackware uses /etc/rc.d/rc.modules).
|
||||
|
||||
/sbin/modprobe pss pss_io=0x220 pss_cdrom_port=0x340 pss_enable_joystick=1 pss_no_sound=1
|
||||
/sbin/rmmod pss && /sbin/rmmod ad1848 && /sbin/rmmod mpu401 && /sbin/rmmod sound && /sbin/rmmod soundcore # This line not needed, but saves memory.
|
||||
/sbin/modprobe aztcd aztcd=0x340
|
||||
/sbin/modprobe joystick
|
1455
Documentation/sound/oss/README.OSS
Normal file
1455
Documentation/sound/oss/README.OSS
Normal file
File diff suppressed because it is too large
Load diff
106
Documentation/sound/oss/README.modules
Normal file
106
Documentation/sound/oss/README.modules
Normal file
|
@ -0,0 +1,106 @@
|
|||
Building a modular sound driver
|
||||
================================
|
||||
|
||||
The following information is current as of linux-2.1.85. Check the other
|
||||
readme files, especially README.OSS, for information not specific to
|
||||
making sound modular.
|
||||
|
||||
First, configure your kernel. This is an idea of what you should be
|
||||
setting in the sound section:
|
||||
|
||||
<M> Sound card support
|
||||
|
||||
<M> 100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support
|
||||
|
||||
I have SoundBlaster. Select your card from the list.
|
||||
|
||||
<M> Generic OPL2/OPL3 FM synthesizer support
|
||||
<M> FM synthesizer (YM3812/OPL-3) support
|
||||
|
||||
If you don't set these, you will probably find you can play .wav files
|
||||
but not .midi. As the help for them says, set them unless you know your
|
||||
card does not use one of these chips for FM support.
|
||||
|
||||
Once you are configured, make zlilo, modules, modules_install; reboot.
|
||||
Note that it is no longer necessary or possible to configure sound in the
|
||||
drivers/sound dir. Now one simply configures and makes one's kernel and
|
||||
modules in the usual way.
|
||||
|
||||
Then, add to your /etc/modprobe.d/oss.conf something like:
|
||||
|
||||
alias char-major-14-* sb
|
||||
install sb /sbin/modprobe -i sb && /sbin/modprobe adlib_card
|
||||
options sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330
|
||||
options adlib_card io=0x388 # FM synthesizer
|
||||
|
||||
Alternatively, if you have compiled in kernel level ISAPnP support:
|
||||
|
||||
alias char-major-14 sb
|
||||
softdep sb post: adlib_card
|
||||
options adlib_card io=0x388
|
||||
|
||||
The effect of this is that the sound driver and all necessary bits and
|
||||
pieces autoload on demand, assuming you use kerneld (a sound choice) and
|
||||
autoclean when not in use. Also, options for the device drivers are
|
||||
set. They will not work without them. Change as appropriate for your card.
|
||||
If you are not yet using the very cool kerneld, you will have to "modprobe
|
||||
-k sb" yourself to get things going. Eventually things may be fixed so
|
||||
that this kludgery is not necessary; for the time being, it seems to work
|
||||
well.
|
||||
|
||||
Replace 'sb' with the driver for your card, and give it the right
|
||||
options. To find the filename of the driver, look in
|
||||
/lib/modules/<kernel-version>/misc. Mine looks like:
|
||||
|
||||
adlib_card.o # This is the generic OPLx driver
|
||||
opl3.o # The OPL3 driver
|
||||
sb.o # <<The SoundBlaster driver. Yours may differ.>>
|
||||
sound.o # The sound driver
|
||||
uart401.o # Used by sb, maybe other cards
|
||||
|
||||
Whichever card you have, try feeding it the options that would be the
|
||||
default if you were making the driver wired, not as modules. You can
|
||||
look at function referred to by module_init() for the card to see what
|
||||
args are expected.
|
||||
|
||||
Note that at present there is no way to configure the io, irq and other
|
||||
parameters for the modular drivers as one does for the wired drivers.. One
|
||||
needs to pass the modules the necessary parameters as arguments, either
|
||||
with /etc/modprobe.d/*.conf or with command-line args to modprobe, e.g.
|
||||
|
||||
modprobe sb io=0x220 irq=7 dma=1 dma16=5 mpu_io=0x330
|
||||
modprobe adlib_card io=0x388
|
||||
|
||||
recommend using /etc/modprobe.d/*.conf.
|
||||
|
||||
Persistent DMA Buffers:
|
||||
|
||||
The sound modules normally allocate DMA buffers during open() and
|
||||
deallocate them during close(). Linux can often have problems allocating
|
||||
DMA buffers for ISA cards on machines with more than 16MB RAM. This is
|
||||
because ISA DMA buffers must exist below the 16MB boundary and it is quite
|
||||
possible that we can't find a large enough free block in this region after
|
||||
the machine has been running for any amount of time. The way to avoid this
|
||||
problem is to allocate the DMA buffers during module load and deallocate
|
||||
them when the module is unloaded. For this to be effective we need to load
|
||||
the sound modules right after the kernel boots, either manually or by an
|
||||
init script, and keep them around until we shut down. This is a little
|
||||
wasteful of RAM, but it guarantees that sound always works.
|
||||
|
||||
To make the sound driver use persistent DMA buffers we need to pass the
|
||||
sound.o module a "dmabuf=1" command-line argument. This is normally done
|
||||
in /etc/modprobe.d/*.conf files like so:
|
||||
|
||||
options sound dmabuf=1
|
||||
|
||||
If you have 16MB or less RAM or a PCI sound card, this is wasteful and
|
||||
unnecessary. It is possible that machine with 16MB or less RAM will find
|
||||
this option useful, but if your machine is so memory-starved that it
|
||||
cannot find a 64K block free, you will be wasting even more RAM by keeping
|
||||
the sound modules loaded and the DMA buffers allocated when they are not
|
||||
needed. The proper solution is to upgrade your RAM. But you do also have
|
||||
this improper solution as well. Use it wisely.
|
||||
|
||||
I'm afraid I know nothing about anything but my setup, being more of a
|
||||
text-mode guy anyway. If you have options for other cards or other helpful
|
||||
hints, send them to me, Jim Bray, jb@as220.org, http://as220.org/jb.
|
107
Documentation/sound/oss/README.ymfsb
Normal file
107
Documentation/sound/oss/README.ymfsb
Normal file
|
@ -0,0 +1,107 @@
|
|||
Legacy audio driver for YMF7xx PCI cards.
|
||||
|
||||
|
||||
FIRST OF ALL
|
||||
============
|
||||
|
||||
This code references YAMAHA's sample codes and data sheets.
|
||||
I respect and thank for all people they made open the information
|
||||
about YMF7xx cards.
|
||||
|
||||
And this codes heavily based on Jeff Garzik <jgarzik@pobox.com>'s
|
||||
old VIA 82Cxxx driver (via82cxxx.c). I also respect him.
|
||||
|
||||
|
||||
DISCLIMER
|
||||
=========
|
||||
|
||||
This driver is currently at early ALPHA stage. It may cause serious
|
||||
damage to your computer when used.
|
||||
PLEASE USE IT AT YOUR OWN RISK.
|
||||
|
||||
|
||||
ABOUT THIS DRIVER
|
||||
=================
|
||||
|
||||
This code enables you to use your YMF724[A-F], YMF740[A-C], YMF744, YMF754
|
||||
cards. When enabled, your card acts as "SoundBlaster Pro" compatible card.
|
||||
It can only play 22.05kHz / 8bit / Stereo samples, control external MIDI
|
||||
port.
|
||||
If you want to use your card as recent "16-bit" card, you should use
|
||||
Alsa or OSS/Linux driver. Of course you can write native PCI driver for
|
||||
your cards :)
|
||||
|
||||
|
||||
USAGE
|
||||
=====
|
||||
|
||||
# modprobe ymfsb (options)
|
||||
|
||||
|
||||
OPTIONS FOR MODULE
|
||||
==================
|
||||
|
||||
io : SB base address (0x220, 0x240, 0x260, 0x280)
|
||||
synth_io : OPL3 base address (0x388, 0x398, 0x3a0, 0x3a8)
|
||||
dma : DMA number (0,1,3)
|
||||
master_volume: AC'97 PCM out Vol (0-100)
|
||||
spdif_out : SPDIF-out flag (0:disable 1:enable)
|
||||
|
||||
These options will change in future...
|
||||
|
||||
|
||||
FREQUENCY
|
||||
=========
|
||||
|
||||
When playing sounds via this driver, you will hear its pitch is slightly
|
||||
lower than original sounds. Since this driver recognizes your card acts
|
||||
with 21.739kHz sample rates rather than 22.050kHz (I think it must be
|
||||
hardware restriction). So many players become tone deafness.
|
||||
To prevent this, you should express some options to your sound player
|
||||
that specify correct sample frequency. For example, to play your MP3 file
|
||||
correctly with mpg123, specify the frequency like following:
|
||||
|
||||
% mpg123 -r 21739 foo.mp3
|
||||
|
||||
|
||||
SPDIF OUT
|
||||
=========
|
||||
|
||||
With installing modules with option 'spdif_out=1', you can enjoy your
|
||||
sounds from SPDIF-out of your card (if it had).
|
||||
Its Fs is fixed to 48kHz (It never means the sample frequency become
|
||||
up to 48kHz. All sounds via SPDIF-out also 22kHz samples). So your
|
||||
digital-in capable components has to be able to handle 48kHz Fs.
|
||||
|
||||
|
||||
COPYING
|
||||
=======
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful, but
|
||||
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
|
||||
TODO
|
||||
====
|
||||
* support for multiple cards
|
||||
(set the different SB_IO,MPU_IO,OPL_IO for each cards)
|
||||
|
||||
* support for OPL (dmfm) : There will be no requirements... :-<
|
||||
|
||||
|
||||
AUTHOR
|
||||
======
|
||||
|
||||
Daisuke Nagano <breeze.nagano@nifty.ne.jp>
|
||||
|
105
Documentation/sound/oss/SoundPro
Normal file
105
Documentation/sound/oss/SoundPro
Normal file
|
@ -0,0 +1,105 @@
|
|||
Documentation for the SoundPro CMI8330 extensions in the WSS driver (ad1848.o)
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
( Be sure to read Documentation/sound/oss/CMI8330 too )
|
||||
|
||||
Ion Badulescu, ionut@cs.columbia.edu
|
||||
February 24, 1999
|
||||
|
||||
(derived from the OPL3-SA2 documentation by Scott Murray)
|
||||
|
||||
The SoundPro CMI8330 (ISA) is a chip usually found on some Taiwanese
|
||||
motherboards. The official name in the documentation is CMI8330, SoundPro
|
||||
is the nickname and the big inscription on the chip itself.
|
||||
|
||||
The chip emulates a WSS as well as a SB16, but it has certain differences
|
||||
in the mixer section which require separate support. It also emulates an
|
||||
MPU401 and an OPL3 synthesizer, so you probably want to enable support
|
||||
for these, too.
|
||||
|
||||
The chip identifies itself as an AD1848, but its mixer is significantly
|
||||
more advanced than the original AD1848 one. If your system works with
|
||||
either WSS or SB16 and you are having problems with some mixer controls
|
||||
(no CD audio, no line-in, etc), you might want to give this driver a try.
|
||||
Detection should work, but it hasn't been widely tested, so it might still
|
||||
mis-identify the chip. You can still force soundpro=1 in the modprobe
|
||||
parameters for ad1848. Please let me know if it happens to you, so I can
|
||||
adjust the detection routine.
|
||||
|
||||
The chip is capable of doing full-duplex, but since the driver sees it as an
|
||||
AD1848, it cannot take advantage of this. Moreover, the full-duplex mode is
|
||||
not achievable through the WSS interface, b/c it needs a dma16 line which is
|
||||
assigned only to the SB16 subdevice (with isapnp). Windows documentation
|
||||
says the user must use WSS Playback and SB16 Recording for full-duplex, so
|
||||
it might be possible to do the same thing under Linux. You can try loading
|
||||
up both ad1848 and sb then use one for playback and the other for
|
||||
recording. I don't know if this works, b/c I haven't tested it. Anyway, if
|
||||
you try it, be very careful: the SB16 mixer *mostly* works, but certain
|
||||
settings can have unexpected effects. Use the WSS mixer for best results.
|
||||
|
||||
There is also a PCI SoundPro chip. I have not seen this chip, so I have
|
||||
no idea if the driver will work with it. I suspect it won't.
|
||||
|
||||
As with PnP cards, some configuration is required. There are two ways
|
||||
of doing this. The most common is to use the isapnptools package to
|
||||
initialize the card, and use the kernel module form of the sound
|
||||
subsystem and sound drivers. Alternatively, some BIOS's allow manual
|
||||
configuration of installed PnP devices in a BIOS menu, which should
|
||||
allow using the non-modular sound drivers, i.e. built into the kernel.
|
||||
Since in this latter case you cannot use module parameters, you will
|
||||
have to enable support for the SoundPro at compile time.
|
||||
|
||||
The IRQ and DMA values can be any that are considered acceptable for a
|
||||
WSS. Assuming you've got isapnp all happy, then you should be able to
|
||||
do something like the following (which *must* match the isapnp/BIOS
|
||||
configuration):
|
||||
|
||||
modprobe ad1848 io=0x530 irq=11 dma=0 soundpro=1
|
||||
-and maybe-
|
||||
modprobe sb io=0x220 irq=5 dma=1 dma16=5
|
||||
|
||||
-then-
|
||||
modprobe mpu401 io=0x330 irq=9
|
||||
modprobe opl3 io=0x388
|
||||
|
||||
If all goes well and you see no error messages, you should be able to
|
||||
start using the sound capabilities of your system. If you get an
|
||||
error message while trying to insert the module(s), then make
|
||||
sure that the values of the various arguments match what you specified
|
||||
in your isapnp configuration file, and that there is no conflict with
|
||||
another device for an I/O port or interrupt. Checking the contents of
|
||||
/proc/ioports and /proc/interrupts can be useful to see if you're
|
||||
butting heads with another device.
|
||||
|
||||
If you do not see the chipset version message, and none of the other
|
||||
messages present in the system log are helpful, try adding 'debug=1'
|
||||
to the ad1848 parameters, email me the syslog results and I'll do
|
||||
my best to help.
|
||||
|
||||
Lastly, if you're using modules and want to set up automatic module
|
||||
loading with kmod, the kernel module loader, here is the section I
|
||||
currently use in my conf.modules file:
|
||||
|
||||
# Sound
|
||||
post-install sound modprobe -k ad1848; modprobe -k mpu401; modprobe -k opl3
|
||||
options ad1848 io=0x530 irq=11 dma=0
|
||||
options sb io=0x220 irq=5 dma=1 dma16=5
|
||||
options mpu401 io=0x330 irq=9
|
||||
options opl3 io=0x388
|
||||
|
||||
The above ensures that ad1848 will be loaded whenever the sound system
|
||||
is being used.
|
||||
|
||||
Good luck.
|
||||
|
||||
Ion
|
||||
|
||||
NOT REALLY TESTED:
|
||||
- recording
|
||||
- recording device selection
|
||||
- full-duplex
|
||||
|
||||
TODO:
|
||||
- implement mixer support for surround, loud, digital CD switches.
|
||||
- come up with a scheme which allows recording volumes for each subdevice.
|
||||
This is a major OSS API change.
|
53
Documentation/sound/oss/Soundblaster
Normal file
53
Documentation/sound/oss/Soundblaster
Normal file
|
@ -0,0 +1,53 @@
|
|||
modprobe sound
|
||||
insmod uart401
|
||||
insmod sb ...
|
||||
|
||||
This loads the driver for the Sound Blaster and assorted clones. Cards that
|
||||
are covered by other drivers should not be using this driver.
|
||||
|
||||
The Sound Blaster module takes the following arguments
|
||||
|
||||
io I/O address of the Sound Blaster chip (0x220,0x240,0x260,0x280)
|
||||
irq IRQ of the Sound Blaster chip (5,7,9,10)
|
||||
dma 8-bit DMA channel for the Sound Blaster (0,1,3)
|
||||
dma16 16-bit DMA channel for SB16 and equivalent cards (5,6,7)
|
||||
mpu_io I/O for MPU chip if present (0x300,0x330)
|
||||
|
||||
sm_games=1 Set if you have a Logitech soundman games
|
||||
acer=1 Set this to detect cards in some ACER notebooks
|
||||
mwave_bug=1 Set if you are trying to use this driver with mwave (see on)
|
||||
type Use this to specify a specific card type
|
||||
|
||||
The following arguments are taken if ISAPnP support is compiled in
|
||||
|
||||
isapnp=0 Set this to disable ISAPnP detection (use io=0xXXX etc. above)
|
||||
multiple=0 Set to disable detection of multiple Soundblaster cards.
|
||||
Consider it a bug if this option is needed, and send in a
|
||||
report.
|
||||
pnplegacy=1 Set this to be able to use a PnP card(s) along with a single
|
||||
non-PnP (legacy) card. Above options for io, irq, etc. are
|
||||
needed, and will apply only to the legacy card.
|
||||
reverse=1 Reverses the order of the search in the PnP table.
|
||||
uart401=1 Set to enable detection of mpu devices on some clones.
|
||||
isapnpjump=n Jumps to slot n in the driver's PnP table. Use the source,
|
||||
Luke.
|
||||
|
||||
You may well want to load the opl3 driver for synth music on most SB and
|
||||
clone SB devices
|
||||
|
||||
insmod opl3 io=0x388
|
||||
|
||||
Using Mwave
|
||||
|
||||
To make this driver work with Mwave you must set mwave_bug. You also need
|
||||
to warm boot from DOS/Windows with the required firmware loaded under this
|
||||
OS. IBM are being difficult about documenting how to load this firmware.
|
||||
|
||||
Avance Logic ALS007
|
||||
|
||||
This card is supported; see the separate file ALS007 for full details.
|
||||
|
||||
Avance Logic ALS100
|
||||
|
||||
This card is supported; setup should be as for a standard Sound Blaster 16.
|
||||
The driver will identify the audio device as a "Sound Blaster 16 (ALS-100)".
|
26
Documentation/sound/oss/Tropez+
Normal file
26
Documentation/sound/oss/Tropez+
Normal file
|
@ -0,0 +1,26 @@
|
|||
From: Paul Barton-Davis <pbd@op.net>
|
||||
|
||||
Here is the configuration I use with a Tropez+ and my modular
|
||||
driver:
|
||||
|
||||
alias char-major-14 wavefront
|
||||
alias synth0 wavefront
|
||||
alias mixer0 cs4232
|
||||
alias audio0 cs4232
|
||||
pre-install wavefront modprobe "-k" "cs4232"
|
||||
post-install wavefront modprobe "-k" "opl3"
|
||||
options wavefront io=0x200 irq=9
|
||||
options cs4232 synthirq=9 synthio=0x200 io=0x530 irq=5 dma=1 dma2=0
|
||||
options opl3 io=0x388
|
||||
|
||||
Things to note:
|
||||
|
||||
the wavefront options "io" and "irq" ***MUST*** match the "synthio"
|
||||
and "synthirq" cs4232 options.
|
||||
|
||||
you can do without the opl3 module if you don't
|
||||
want to use the OPL/[34] synth on the soundcard
|
||||
|
||||
the opl3 io parameter is conventionally not adjustable.
|
||||
|
||||
Please see drivers/sound/README.wavefront for more details.
|
80
Documentation/sound/oss/VIBRA16
Normal file
80
Documentation/sound/oss/VIBRA16
Normal file
|
@ -0,0 +1,80 @@
|
|||
Sound Blaster 16X Vibra addendum
|
||||
--------------------------------
|
||||
by Marius Ilioaea <mariusi@protv.ro>
|
||||
Stefan Laudat <stefan@asit.ro>
|
||||
|
||||
Sat Mar 6 23:55:27 EET 1999
|
||||
|
||||
Hello again,
|
||||
|
||||
Playing with a SB Vibra 16x soundcard we found it very difficult
|
||||
to setup because the kernel reported a lot of DMA errors and wouldn't
|
||||
simply play any sound.
|
||||
A good starting point is that the vibra16x chip full-duplex facility
|
||||
is neither still exploited by the sb driver found in the linux kernel
|
||||
(tried it with a 2.2.2-ac7), nor in the commercial OSS package (it reports
|
||||
it as half-duplex soundcard). Oh, I almost forgot, the RedHat sndconfig
|
||||
failed detecting it ;)
|
||||
So, the big problem still remains, because the sb module wants a
|
||||
8-bit and a 16-bit dma, which we could not allocate for vibra... it supports
|
||||
only two 8-bit dma channels, the second one will be passed to the module
|
||||
as a 16 bit channel, the kernel will yield about that but everything will
|
||||
be okay, trust us.
|
||||
The only inconvenient you may find is that you will have
|
||||
some sound playing jitters if you have HDD dma support enabled - but this
|
||||
will happen with almost all soundcards...
|
||||
|
||||
A fully working isapnp.conf is just here:
|
||||
|
||||
<snip here>
|
||||
|
||||
(READPORT 0x0203)
|
||||
(ISOLATE PRESERVE)
|
||||
(IDENTIFY *)
|
||||
(VERBOSITY 2)
|
||||
(CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
|
||||
# SB 16 and OPL3 devices
|
||||
(CONFIGURE CTL00f0/-1 (LD 0
|
||||
(INT 0 (IRQ 5 (MODE +E)))
|
||||
(DMA 0 (CHANNEL 1))
|
||||
(DMA 1 (CHANNEL 3))
|
||||
(IO 0 (SIZE 16) (BASE 0x0220))
|
||||
(IO 2 (SIZE 4) (BASE 0x0388))
|
||||
(NAME "CTL00f0/-1[0]{Audio }")
|
||||
(ACT Y)
|
||||
))
|
||||
|
||||
# Joystick device - only if you need it :-/
|
||||
|
||||
(CONFIGURE CTL00f0/-1 (LD 1
|
||||
(IO 0 (SIZE 1) (BASE 0x0200))
|
||||
(NAME "CTL00f0/-1[1]{Game }")
|
||||
(ACT Y)
|
||||
))
|
||||
(WAITFORKEY)
|
||||
|
||||
<end of snipping>
|
||||
|
||||
So, after a good kernel modules compilation and a 'depmod -a kernel_ver'
|
||||
you may want to:
|
||||
|
||||
modprobe sb io=0x220 irq=5 dma=1 dma16=3
|
||||
|
||||
Or, take the hard way:
|
||||
|
||||
modprobe soundcore
|
||||
modprobe sound
|
||||
modprobe uart401
|
||||
modprobe sb io=0x220 irq=5 dma=1 dma16=3
|
||||
# do you need MIDI?
|
||||
modprobe opl3=0x388
|
||||
|
||||
Just in case, the kernel sound support should be:
|
||||
|
||||
CONFIG_SOUND=m
|
||||
CONFIG_SOUND_OSS=m
|
||||
CONFIG_SOUND_SB=m
|
||||
|
||||
Enjoy your new noisy Linux box! ;)
|
||||
|
||||
|
170
Documentation/sound/oss/WaveArtist
Normal file
170
Documentation/sound/oss/WaveArtist
Normal file
|
@ -0,0 +1,170 @@
|
|||
|
||||
(the following is from the armlinux CVS)
|
||||
|
||||
WaveArtist mixer and volume levels can be accessed via these commands:
|
||||
|
||||
nn30 read registers nn, where nn = 00 - 09 for mixer settings
|
||||
0a - 13 for channel volumes
|
||||
mm31 write the volume setting in pairs, where mm = (nn - 10) / 2
|
||||
rr32 write the mixer settings in pairs, where rr = nn/2
|
||||
xx33 reset all settings to default
|
||||
0y34 select mono source, y=0 = left, y=1 = right
|
||||
|
||||
bits
|
||||
nn 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
00 | 0 | 0 0 1 1 | left line mixer gain | left aux1 mixer gain |lmute|
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
01 | 0 | 0 1 0 1 | left aux2 mixer gain | right 2 left mic gain |mmute|
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
02 | 0 | 0 1 1 1 | left mic mixer gain | left mic | left mixer gain |dith |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
03 | 0 | 1 0 0 1 | left mixer input select |lrfg | left ADC gain |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
04 | 0 | 1 0 1 1 | right line mixer gain | right aux1 mixer gain |rmute|
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
05 | 0 | 1 1 0 1 | right aux2 mixer gain | left 2 right mic gain |test |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
06 | 0 | 1 1 1 1 | right mic mixer gain | right mic |right mixer gain |rbyps|
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
07 | 1 | 0 0 0 1 | right mixer select |rrfg | right ADC gain |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
08 | 1 | 0 0 1 1 | mono mixer gain |right ADC mux sel|left ADC mux sel |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
09 | 1 | 0 1 0 1 |loopb|left linout|loop|ADCch|TxFch|OffCD|test |loopb|loopb|osamp|
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
0a | 0 | left PCM channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
0b | 0 | right PCM channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
0c | 0 | left FM channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
0d | 0 | right FM channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
0e | 0 | left wavetable channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
0f | 0 | right wavetable channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
10 | 0 | left PCM expansion channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
11 | 0 | right PCM expansion channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
12 | 0 | left FM expansion channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
13 | 0 | right FM expansion channel volume |
|
||||
----+---+------------+-----+-----+-----+----+-----+-----+-----+-----+-----+-----+-----+
|
||||
|
||||
lmute: left mute
|
||||
mmute: mono mute
|
||||
dith: dithds
|
||||
lrfg:
|
||||
rmute: right mute
|
||||
rbyps: right bypass
|
||||
rrfg:
|
||||
ADCch:
|
||||
TxFch:
|
||||
OffCD:
|
||||
osamp:
|
||||
|
||||
And the following diagram is derived from the description in the CVS archive:
|
||||
|
||||
MIC L (mouthpiece)
|
||||
+------+
|
||||
-->PreAmp>-\
|
||||
+--^---+ |
|
||||
| |
|
||||
r2b4-5 | +--------+
|
||||
/----*-------------------------------->5 |
|
||||
| | |
|
||||
| /----------------------------------->4 |
|
||||
| | | |
|
||||
| | /--------------------------------->3 1of5 | +---+
|
||||
| | | | mux >-->AMP>--> ADC L
|
||||
| | | /------------------------------->2 | +-^-+
|
||||
| | | | | | |
|
||||
Line | | | | +----+ +------+ +---+ /---->1 | r3b3-0
|
||||
------------*->mute>--> Gain >--> | | | |
|
||||
L | | | +----+ +------+ | | | *->0 |
|
||||
| | | | | | +---^----+
|
||||
Aux2 | | | +----+ +------+ | | | |
|
||||
----------*--->mute>--> Gain >--> M | | r8b0-2
|
||||
L | | +----+ +------+ | | |
|
||||
| | | | \------\
|
||||
Aux1 | | +----+ +------+ | | |
|
||||
--------*----->mute>--> Gain >--> I | |
|
||||
L | +----+ +------+ | | |
|
||||
| | | |
|
||||
| +----+ +------+ | | +---+ |
|
||||
*------->mute>--> Gain >--> X >-->AMP>--*
|
||||
| +----+ +------+ | | +-^-+ |
|
||||
| | | | |
|
||||
| +----+ +------+ | | r2b1-3 |
|
||||
| /----->mute>--> Gain >--> E | |
|
||||
| | +----+ +------+ | | |
|
||||
| | | | |
|
||||
| | +----+ +------+ | | |
|
||||
| | /--->mute>--> Gain >--> R | |
|
||||
| | | +----+ +------+ | | |
|
||||
| | | | | | r9b8-9
|
||||
| | | +----+ +------+ | | | |
|
||||
| | | /->mute>--> Gain >--> | | +---v---+
|
||||
| | | | +----+ +------+ +---+ /-*->0 |
|
||||
DAC | | | | | | |
|
||||
------------*----------------------------------->? | +----+
|
||||
L | | | | | Mux >-->mute>--> L output
|
||||
| | | | /->? | +--^-+
|
||||
| | | | | | | |
|
||||
| | | /--------->? | r0b0
|
||||
| | | | | | +-------+
|
||||
| | | | | |
|
||||
Mono | | | | | | +-------+
|
||||
----------* | \---> | +----+
|
||||
| | | | | | Mix >-->mute>--> Mono output
|
||||
| | | | *-> | +--^-+
|
||||
| | | | | +-------+ |
|
||||
| | | | | r1b0
|
||||
DAC | | | | | +-------+
|
||||
------------*-------------------------*--------->1 | +----+
|
||||
R | | | | | | Mux >-->mute>--> R output
|
||||
| | | | +----+ +------+ +---+ *->0 | +--^-+
|
||||
| | | \->mute>--> Gain >--> | | +---^---+ |
|
||||
| | | +----+ +------+ | | | | r5b0
|
||||
| | | | | | r6b0
|
||||
| | | +----+ +------+ | | |
|
||||
| | \--->mute>--> Gain >--> M | |
|
||||
| | +----+ +------+ | | |
|
||||
| | | | |
|
||||
| | +----+ +------+ | | |
|
||||
| *----->mute>--> Gain >--> I | |
|
||||
| | +----+ +------+ | | |
|
||||
| | | | |
|
||||
| | +----+ +------+ | | +---+ |
|
||||
\------->mute>--> Gain >--> X >-->AMP>--*
|
||||
| +----+ +------+ | | +-^-+ |
|
||||
/--/ | | | |
|
||||
Aux1 | +----+ +------+ | | r6b1-3 |
|
||||
-------*------>mute>--> Gain >--> E | |
|
||||
R | | +----+ +------+ | | |
|
||||
| | | | |
|
||||
Aux2 | | +----+ +------+ | | /------/
|
||||
---------*---->mute>--> Gain >--> R | |
|
||||
R | | | +----+ +------+ | | |
|
||||
| | | | | | +--------+
|
||||
Line | | | +----+ +------+ | | | *->0 |
|
||||
-----------*-->mute>--> Gain >--> | | | |
|
||||
R | | | | +----+ +------+ +---+ \---->1 |
|
||||
| | | | | |
|
||||
| | | \-------------------------------->2 | +---+
|
||||
| | | | Mux >-->AMP>--> ADC R
|
||||
| | \---------------------------------->3 | +-^-+
|
||||
| | | | |
|
||||
| \------------------------------------>4 | r7b3-0
|
||||
| | |
|
||||
\-----*-------------------------------->5 |
|
||||
| +---^----+
|
||||
r6b4-5 | |
|
||||
| | r8b3-5
|
||||
+--v---+ |
|
||||
-->PreAmp>-/
|
||||
+------+
|
||||
MIC R (electret mic)
|
92
Documentation/sound/oss/btaudio
Normal file
92
Documentation/sound/oss/btaudio
Normal file
|
@ -0,0 +1,92 @@
|
|||
|
||||
Intro
|
||||
=====
|
||||
|
||||
people start bugging me about this with questions, looks like I
|
||||
should write up some documentation for this beast. That way I
|
||||
don't have to answer that much mails I hope. Yes, I'm lazy...
|
||||
|
||||
|
||||
You might have noticed that the bt878 grabber cards have actually
|
||||
_two_ PCI functions:
|
||||
|
||||
$ lspci
|
||||
[ ... ]
|
||||
00:0a.0 Multimedia video controller: Brooktree Corporation Bt878 (rev 02)
|
||||
00:0a.1 Multimedia controller: Brooktree Corporation Bt878 (rev 02)
|
||||
[ ... ]
|
||||
|
||||
The first does video, it is backward compatible to the bt848. The second
|
||||
does audio. btaudio is a driver for the second function. It's a sound
|
||||
driver which can be used for recording sound (and _only_ recording, no
|
||||
playback). As most TV cards come with a short cable which can be plugged
|
||||
into your sound card's line-in you probably don't need this driver if all
|
||||
you want to do is just watching TV...
|
||||
|
||||
|
||||
Driver Status
|
||||
=============
|
||||
|
||||
Still somewhat experimental. The driver should work stable, i.e. it
|
||||
should'nt crash your box. It might not work as expected, have bugs,
|
||||
not being fully OSS API compilant, ...
|
||||
|
||||
Latest versions are available from http://bytesex.org/bttv/, the
|
||||
driver is in the bttv tarball. Kernel patches might be available too,
|
||||
have a look at http://bytesex.org/bttv/listing.html.
|
||||
|
||||
The chip knows two different modes. btaudio registers two dsp
|
||||
devices, one for each mode. They can not be used at the same time.
|
||||
|
||||
|
||||
Digital audio mode
|
||||
==================
|
||||
|
||||
The chip gives you 16 bit stereo sound. The sample rate depends on
|
||||
the external source which feeds the bt878 with digital sound via I2S
|
||||
interface. There is a insmod option (rate) to tell the driver which
|
||||
sample rate the hardware uses (32000 is the default).
|
||||
|
||||
One possible source for digital sound is the msp34xx audio processor
|
||||
chip which provides digital sound via I2S with 32 kHz sample rate. My
|
||||
Hauppauge board works this way.
|
||||
|
||||
The Osprey-200 reportly gives you digital sound with 44100 Hz sample
|
||||
rate. It is also possible that you get no sound at all.
|
||||
|
||||
|
||||
analog mode (A/D)
|
||||
=================
|
||||
|
||||
You can tell the driver to use this mode with the insmod option "analog=1".
|
||||
The chip has three analog inputs. Consequently you'll get a mixer device
|
||||
to control these.
|
||||
|
||||
The analog mode supports mono only. Both 8 + 16 bit. Both are _signed_
|
||||
int, which is uncommon for the 8 bit case. Sample rate range is 119 kHz
|
||||
to 448 kHz. Yes, the number of digits is correct. The driver supports
|
||||
downsampling by powers of two, so you can ask for more usual sample rates
|
||||
like 44 kHz too.
|
||||
|
||||
With my Hauppauge I get noisy sound on the second input (mapped to line2
|
||||
by the mixer device). Others get a useable signal on line1.
|
||||
|
||||
|
||||
some examples
|
||||
=============
|
||||
|
||||
* read audio data from btaudio (dsp2), send to es1730 (dsp,dsp1):
|
||||
$ sox -w -r 32000 -t ossdsp /dev/dsp2 -t ossdsp /dev/dsp
|
||||
|
||||
* read audio data from btaudio, send to esound daemon (which might be
|
||||
running on another host):
|
||||
$ sox -c 2 -w -r 32000 -t ossdsp /dev/dsp2 -t sw - | esdcat -r 32000
|
||||
$ sox -c 1 -w -r 32000 -t ossdsp /dev/dsp2 -t sw - | esdcat -m -r 32000
|
||||
|
||||
|
||||
Have fun,
|
||||
|
||||
Gerd
|
||||
|
||||
--
|
||||
Gerd Knorr <kraxel@bytesex.org>
|
185
Documentation/sound/oss/mwave
Normal file
185
Documentation/sound/oss/mwave
Normal file
|
@ -0,0 +1,185 @@
|
|||
How to try to survive an IBM Mwave under Linux SB drivers
|
||||
|
||||
|
||||
+ IBM have now released documentation of sorts and Torsten is busy
|
||||
trying to make the Mwave work. This is not however a trivial task.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
OK, first thing - the IRQ problem IS a problem, whether the test is bypassed or
|
||||
not. It is NOT a Linux problem, but an MWAVE problem that is fixed with the
|
||||
latest MWAVE patches. So, in other words, don't bypass the test for MWAVES!
|
||||
|
||||
I have Windows 95 on /dev/hda1, swap on /dev/hda2, and Red Hat 5 on /dev/hda3.
|
||||
|
||||
The steps, then:
|
||||
|
||||
Boot to Linux.
|
||||
Mount Windows 95 file system (assume mount point = /dos95).
|
||||
mkdir /dos95/linux
|
||||
mkdir /dos95/linux/boot
|
||||
mkdir /dos95/linux/boot/parms
|
||||
|
||||
Copy the kernel, any initrd image, and loadlin to /dos95/linux/boot/.
|
||||
|
||||
Reboot to Windows 95.
|
||||
|
||||
Edit C:/msdos.sys and add or change the following:
|
||||
|
||||
Logo=0
|
||||
BootGUI=0
|
||||
|
||||
Note that msdos.sys is a text file but it needs to be made 'unhidden',
|
||||
readable and writable before it can be edited. This can be done with
|
||||
DOS' "attrib" command.
|
||||
|
||||
Edit config.sys to have multiple config menus. I have one for windows 95 and
|
||||
five for Linux, like this:
|
||||
------------
|
||||
[menu]
|
||||
menuitem=W95, Windows 95
|
||||
menuitem=LINTP, Linux - ThinkPad
|
||||
menuitem=LINTP3, Linux - ThinkPad Console
|
||||
menuitem=LINDOC, Linux - Docked
|
||||
menuitem=LINDOC3, Linux - Docked Console
|
||||
menuitem=LIN1, Linux - Single User Mode
|
||||
REM menudefault=W95,10
|
||||
|
||||
[W95]
|
||||
|
||||
[LINTP]
|
||||
|
||||
[LINDOC]
|
||||
|
||||
[LINTP3]
|
||||
|
||||
[LINDOC3]
|
||||
|
||||
[LIN1]
|
||||
|
||||
[COMMON]
|
||||
FILES=30
|
||||
REM Please read README.TXT in C:\MWW subdirectory before changing the DOS= statement.
|
||||
DOS=HIGH,UMB
|
||||
DEVICE=C:\MWW\MANAGER\MWD50430.EXE
|
||||
SHELL=c:\command.com /e:2048
|
||||
-------------------
|
||||
|
||||
The important things are the SHELL and DEVICE statements.
|
||||
|
||||
Then change autoexec.bat. Basically everything in there originally should be
|
||||
done ONLY when Windows 95 is booted. Then you add new things specifically
|
||||
for Linux. Mine is as follows
|
||||
|
||||
---------------
|
||||
@ECHO OFF
|
||||
if "%CONFIG%" == "W95" goto W95
|
||||
|
||||
REM
|
||||
REM Linux stuff
|
||||
REM
|
||||
SET MWPATH=C:\MWW\DLL;C:\MWW\MWGAMES;C:\MWW\DSP
|
||||
SET BLASTER=A220 I5 D1
|
||||
SET MWROOT=C:\MWW
|
||||
SET LIBPATH=C:\MWW\DLL
|
||||
SET PATH=C:\WINDOWS;C:\MWW\DLL;
|
||||
CALL MWAVE START NOSHOW
|
||||
c:\linux\boot\loadlin.exe @c:\linux\boot\parms\%CONFIG%.par
|
||||
|
||||
:W95
|
||||
REM
|
||||
REM Windows 95 stuff
|
||||
REM
|
||||
c:\toolkit\guard
|
||||
SET MSINPUT=C:\MSINPUT
|
||||
SET MWPATH=C:\MWW\DLL;C:\MWW\MWGAMES;C:\MWW\DSP
|
||||
REM The following is used by DOS games to recognize Sound Blaster hardware.
|
||||
REM If hardware settings are changed, please change this line as well.
|
||||
REM See the Mwave README file for instructions.
|
||||
SET BLASTER=A220 I5 D1
|
||||
SET MWROOT=C:\MWW
|
||||
SET LIBPATH=C:\MWW\DLL
|
||||
SET PATH=C:\WINDOWS;C:\WINDOWS\COMMAND;E:\ORAWIN95\BIN;f:\msdev\bin;e:\v30\bin.dbg;v:\devt\v30\bin;c:\JavaSDK\Bin;C:\MWW\DLL;
|
||||
SET INCLUDE=f:\MSDEV\INCLUDE;F:\MSDEV\MFC\INCLUDE
|
||||
SET LIB=F:\MSDEV\LIB;F:\MSDEV\MFC\LIB
|
||||
win
|
||||
|
||||
------------------------
|
||||
|
||||
Now build a file in c:\linux\boot\parms for each Linux config that you have.
|
||||
|
||||
For example, my LINDOC3 config is for a docked Thinkpad at runlevel 3 with no
|
||||
initrd image, and has a parameter file named LINDOC3.PAR in c:\linux\boot\parms:
|
||||
|
||||
-----------------------
|
||||
# LOADLIN @param_file image=other_image root=/dev/other
|
||||
#
|
||||
# Linux Console in docking station
|
||||
#
|
||||
c:\linux\boot\zImage.krn # First value must be filename of Linux kernel.
|
||||
root=/dev/hda3 # device which gets mounted as root FS
|
||||
ro # Other kernel arguments go here.
|
||||
apm=off
|
||||
doc=yes
|
||||
3
|
||||
-----------------------
|
||||
|
||||
The doc=yes parameter is an environment variable used by my init scripts, not
|
||||
a kernel argument.
|
||||
|
||||
However, the apm=off parameter IS a kernel argument! APM, at least in my setup,
|
||||
causes the kernel to crash when loaded via loadlin (but NOT when loaded via
|
||||
LILO). The APM stuff COULD be forced out of the kernel via the kernel compile
|
||||
options. Instead, I got an unofficial patch to the APM drivers that allows them
|
||||
to be dynamically deactivated via kernel arguments. Whatever you chose to
|
||||
document, APM, it seems, MUST be off for setups like mine.
|
||||
|
||||
Now make sure C:\MWW\MWCONFIG.REF looks like this:
|
||||
|
||||
----------------------
|
||||
[NativeDOS]
|
||||
Default=SB1.5
|
||||
SBInputSource=CD
|
||||
SYNTH=FM
|
||||
QSound=OFF
|
||||
Reverb=OFF
|
||||
Chorus=OFF
|
||||
ReverbDepth=5
|
||||
ChorusDepth=5
|
||||
SBInputVolume=5
|
||||
SBMainVolume=10
|
||||
SBWaveVolume=10
|
||||
SBSynthVolume=10
|
||||
WaveTableVolume=10
|
||||
AudioPowerDriver=ON
|
||||
|
||||
[FastCFG]
|
||||
Show=No
|
||||
HideOption=Off
|
||||
-----------------------------
|
||||
|
||||
OR the Default= line COULD be
|
||||
|
||||
Default=SBPRO
|
||||
|
||||
Reboot to Windows 95 and choose Linux. When booted, use sndconfig to configure
|
||||
the sound modules and voilà - ThinkPad sound with Linux.
|
||||
|
||||
Now the gotchas - you can either have CD sound OR Mixers but not both. That's a
|
||||
problem with the SB1.5 (CD sound) or SBPRO (Mixers) settings. No one knows why
|
||||
this is!
|
||||
|
||||
For some reason MPEG3 files, when played through mpg123, sound like they
|
||||
are playing at 1/8th speed - not very useful! If you have ANY insight
|
||||
on why this second thing might be happening, I would be grateful.
|
||||
|
||||
===========================================================
|
||||
_/ _/_/_/_/
|
||||
_/_/ _/_/ _/
|
||||
_/ _/_/ _/_/_/_/ Martin John Bartlett
|
||||
_/ _/ _/ _/ (martin@nitram.demon.co.uk)
|
||||
_/ _/_/_/_/
|
||||
_/
|
||||
_/ _/
|
||||
_/_/
|
||||
===========================================================
|
51
Documentation/sound/oss/oss-parameters.txt
Normal file
51
Documentation/sound/oss/oss-parameters.txt
Normal file
|
@ -0,0 +1,51 @@
|
|||
OSS Kernel Parameters
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
See Documentation/kernel-parameters.txt for general information on
|
||||
specifying module parameters.
|
||||
|
||||
This document may not be entirely up to date and comprehensive. The command
|
||||
"modinfo -p ${modulename}" shows a current list of all parameters of a loadable
|
||||
module. Loadable modules, after being loaded into the running kernel, also
|
||||
reveal their parameters in /sys/module/${modulename}/parameters/. Some of these
|
||||
parameters may be changed at runtime by the command
|
||||
"echo -n ${value} > /sys/module/${modulename}/parameters/${parm}".
|
||||
|
||||
|
||||
ad1848= [HW,OSS]
|
||||
Format: <io>,<irq>,<dma>,<dma2>,<type>
|
||||
|
||||
aedsp16= [HW,OSS] Audio Excel DSP 16
|
||||
Format: <io>,<irq>,<dma>,<mss_io>,<mpu_io>,<mpu_irq>
|
||||
See also header of sound/oss/aedsp16.c.
|
||||
|
||||
dmasound= [HW,OSS] Sound subsystem buffers
|
||||
|
||||
mpu401= [HW,OSS]
|
||||
Format: <io>,<irq>
|
||||
|
||||
opl3= [HW,OSS]
|
||||
Format: <io>
|
||||
|
||||
pas2= [HW,OSS] Format:
|
||||
<io>,<irq>,<dma>,<dma16>,<sb_io>,<sb_irq>,<sb_dma>,<sb_dma16>
|
||||
|
||||
pss= [HW,OSS] Personal Sound System (ECHO ESC614)
|
||||
Format:
|
||||
<io>,<mss_io>,<mss_irq>,<mss_dma>,<mpu_io>,<mpu_irq>
|
||||
|
||||
sscape= [HW,OSS]
|
||||
Format: <io>,<irq>,<dma>,<mpu_io>,<mpu_irq>
|
||||
|
||||
trix= [HW,OSS] MediaTrix AudioTrix Pro
|
||||
Format:
|
||||
<io>,<irq>,<dma>,<dma2>,<sb_io>,<sb_irq>,<sb_dma>,<mpu_io>,<mpu_irq>
|
||||
|
||||
uart401= [HW,OSS]
|
||||
Format: <io>,<irq>
|
||||
|
||||
uart6850= [HW,OSS]
|
||||
Format: <io>,<irq>
|
||||
|
||||
waveartist= [HW,OSS]
|
||||
Format: <io>,<irq>,<dma>,<dma2>
|
30
Documentation/sound/oss/ultrasound
Normal file
30
Documentation/sound/oss/ultrasound
Normal file
|
@ -0,0 +1,30 @@
|
|||
modprobe sound
|
||||
insmod ad1848
|
||||
insmod gus io=* irq=* dma=* ...
|
||||
|
||||
This loads the driver for the Gravis Ultrasound family of sound cards.
|
||||
|
||||
The gus module takes the following arguments
|
||||
|
||||
io I/O address of the Ultrasound card (eg. io=0x220)
|
||||
irq IRQ of the Sound Blaster card
|
||||
dma DMA channel for the Sound Blaster
|
||||
dma16 2nd DMA channel, only needed for full duplex operation
|
||||
type 1 for PnP card
|
||||
gus16 1 for using 16 bit sampling daughter board
|
||||
no_wave_dma Set to disable DMA usage for wavetable (see note)
|
||||
db16 ???
|
||||
|
||||
|
||||
no_wave_dma option
|
||||
|
||||
This option defaults to a value of 0, which allows the Ultrasound wavetable
|
||||
DSP to use DMA for playback and downloading samples. This is the same
|
||||
as the old behaviour. If set to 1, no DMA is needed for downloading samples,
|
||||
and allows owners of a GUS MAX to make use of simultaneous digital audio
|
||||
(/dev/dsp), MIDI, and wavetable playback.
|
||||
|
||||
|
||||
If you have problems in recording with GUS MAX, you could try to use
|
||||
just one 8 bit DMA channel. Recording will not work with one DMA
|
||||
channel if it's a 16 bit one.
|
293
Documentation/sound/oss/vwsnd
Normal file
293
Documentation/sound/oss/vwsnd
Normal file
|
@ -0,0 +1,293 @@
|
|||
vwsnd - Sound driver for the Silicon Graphics 320 and 540 Visual
|
||||
Workstations' onboard audio.
|
||||
|
||||
Copyright 1999 Silicon Graphics, Inc. All rights reserved.
|
||||
|
||||
|
||||
At the time of this writing, March 1999, there are two models of
|
||||
Visual Workstation, the 320 and the 540. This document only describes
|
||||
those models. Future Visual Workstation models may have different
|
||||
sound capabilities, and this driver will probably not work on those
|
||||
boxes.
|
||||
|
||||
The Visual Workstation has an Analog Devices AD1843 "SoundComm" audio
|
||||
codec chip. The AD1843 is accessed through the Cobalt I/O ASIC, also
|
||||
known as Lithium. This driver programs both chips.
|
||||
|
||||
==============================================================================
|
||||
QUICK CONFIGURATION
|
||||
|
||||
# insmod soundcore
|
||||
# insmod vwsnd
|
||||
|
||||
==============================================================================
|
||||
I/O CONNECTIONS
|
||||
|
||||
On the Visual Workstation, only three of the AD1843 inputs are hooked
|
||||
up. The analog line in jacks are connected to the AD1843's AUX1
|
||||
input. The CD audio lines are connected to the AD1843's AUX2 input.
|
||||
The microphone jack is connected to the AD1843's MIC input. The mic
|
||||
jack is mono, but the signal is delivered to both the left and right
|
||||
MIC inputs. You can record in stereo from the mic input, but you will
|
||||
get the same signal on both channels (within the limits of A/D
|
||||
accuracy). Full scale on the Line input is +/- 2.0 V. Full scale on
|
||||
the MIC input is 20 dB less, or +/- 0.2 V.
|
||||
|
||||
The AD1843's LOUT1 outputs are connected to the Line Out jacks. The
|
||||
AD1843's HPOUT outputs are connected to the speaker/headphone jack.
|
||||
LOUT2 is not connected. Line out's maximum level is +/- 2.0 V peak to
|
||||
peak. The speaker/headphone out's maximum is +/- 4.0 V peak to peak.
|
||||
|
||||
The AD1843's PCM input channel and one of its output channels (DAC1)
|
||||
are connected to Lithium. The other output channel (DAC2) is not
|
||||
connected.
|
||||
|
||||
==============================================================================
|
||||
CAPABILITIES
|
||||
|
||||
The AD1843 has PCM input and output (Pulse Code Modulation, also known
|
||||
as wavetable). PCM input and output can be mono or stereo in any of
|
||||
four formats. The formats are 16 bit signed and 8 bit unsigned,
|
||||
u-Law, and A-Law format. Any sample rate from 4 KHz to 49 KHz is
|
||||
available, in 1 Hz increments.
|
||||
|
||||
The AD1843 includes an analog mixer that can mix all three input
|
||||
signals (line, mic and CD) into the analog outputs. The mixer has a
|
||||
separate gain control and mute switch for each input.
|
||||
|
||||
There are two outputs, line out and speaker/headphone out. They
|
||||
always produce the same signal, and the speaker always has 3 dB more
|
||||
gain than the line out. The speaker/headphone output can be muted,
|
||||
but this driver does not export that function.
|
||||
|
||||
The hardware can sync audio to the video clock, but this driver does
|
||||
not have a way to specify syncing to video.
|
||||
|
||||
==============================================================================
|
||||
PROGRAMMING
|
||||
|
||||
This section explains the API supported by the driver. Also see the
|
||||
Open Sound Programming Guide at http://www.opensound.com/pguide/ .
|
||||
This section assumes familiarity with that document.
|
||||
|
||||
The driver has two interfaces, an I/O interface and a mixer interface.
|
||||
There is no MIDI or sequencer capability.
|
||||
|
||||
==============================================================================
|
||||
PROGRAMMING PCM I/O
|
||||
|
||||
The I/O interface is usually accessed as /dev/audio or /dev/dsp.
|
||||
Using the standard Open Sound System (OSS) ioctl calls, the sample
|
||||
rate, number of channels, and sample format may be set within the
|
||||
limitations described above. The driver supports triggering. It also
|
||||
supports getting the input and output pointers with one-sample
|
||||
accuracy.
|
||||
|
||||
The SNDCTL_DSP_GETCAP ioctl returns these capabilities.
|
||||
|
||||
DSP_CAP_DUPLEX - driver supports full duplex.
|
||||
|
||||
DSP_CAP_TRIGGER - driver supports triggering.
|
||||
|
||||
DSP_CAP_REALTIME - values returned by SNDCTL_DSP_GETIPTR
|
||||
and SNDCTL_DSP_GETOPTR are accurate to a few samples.
|
||||
|
||||
Memory mapping (mmap) is not implemented.
|
||||
|
||||
The driver permits subdivided fragment sizes from 64 to 4096 bytes.
|
||||
The number of fragments can be anything from 3 fragments to however
|
||||
many fragments fit into 124 kilobytes. It is up to the user to
|
||||
determine how few/small fragments can be used without introducing
|
||||
glitches with a given workload. Linux is not realtime, so we can't
|
||||
promise anything. (sigh...)
|
||||
|
||||
When this driver is switched into or out of mu-Law or A-Law mode on
|
||||
output, it may produce an audible click. This is unavoidable. To
|
||||
prevent clicking, use signed 16-bit mode instead, and convert from
|
||||
mu-Law or A-Law format in software.
|
||||
|
||||
==============================================================================
|
||||
PROGRAMMING THE MIXER INTERFACE
|
||||
|
||||
The mixer interface is usually accessed as /dev/mixer. It is accessed
|
||||
through ioctls. The mixer allows the application to control gain or
|
||||
mute several audio signal paths, and also allows selection of the
|
||||
recording source.
|
||||
|
||||
Each of the constants described here can be read using the
|
||||
MIXER_READ(SOUND_MIXER_xxx) ioctl. Those that are not read-only can
|
||||
also be written using the MIXER_WRITE(SOUND_MIXER_xxx) ioctl. In most
|
||||
cases, <sys/soundcard.h> defines constants SOUND_MIXER_READ_xxx and
|
||||
SOUND_MIXER_WRITE_xxx which work just as well.
|
||||
|
||||
SOUND_MIXER_CAPS Read-only
|
||||
|
||||
This is a mask of optional driver capabilities that are implemented.
|
||||
This driver's only capability is SOUND_CAP_EXCL_INPUT, which means
|
||||
that only one recording source can be active at a time.
|
||||
|
||||
SOUND_MIXER_DEVMASK Read-only
|
||||
|
||||
This is a mask of the sound channels. This driver's channels are PCM,
|
||||
LINE, MIC, CD, and RECLEV.
|
||||
|
||||
SOUND_MIXER_STEREODEVS Read-only
|
||||
|
||||
This is a mask of which sound channels are capable of stereo. All
|
||||
channels are capable of stereo. (But see caveat on MIC input in I/O
|
||||
CONNECTIONS section above).
|
||||
|
||||
SOUND_MIXER_OUTMASK Read-only
|
||||
|
||||
This is a mask of channels that route inputs through to outputs.
|
||||
Those are LINE, MIC, and CD.
|
||||
|
||||
SOUND_MIXER_RECMASK Read-only
|
||||
|
||||
This is a mask of channels that can be recording sources. Those are
|
||||
PCM, LINE, MIC, CD.
|
||||
|
||||
SOUND_MIXER_PCM Default: 0x5757 (0 dB)
|
||||
|
||||
This is the gain control for PCM output. The left and right channel
|
||||
gain are controlled independently. This gain control has 64 levels,
|
||||
which range from -82.5 dB to +12.0 dB in 1.5 dB steps. Those 64
|
||||
levels are mapped onto 100 levels at the ioctl, see below.
|
||||
|
||||
SOUND_MIXER_LINE Default: 0x4a4a (0 dB)
|
||||
|
||||
This is the gain control for mixing the Line In source into the
|
||||
outputs. The left and right channel gain are controlled
|
||||
independently. This gain control has 32 levels, which range from
|
||||
-34.5 dB to +12.0 dB in 1.5 dB steps. Those 32 levels are mapped onto
|
||||
100 levels at the ioctl, see below.
|
||||
|
||||
SOUND_MIXER_MIC Default: 0x4a4a (0 dB)
|
||||
|
||||
This is the gain control for mixing the MIC source into the outputs.
|
||||
The left and right channel gain are controlled independently. This
|
||||
gain control has 32 levels, which range from -34.5 dB to +12.0 dB in
|
||||
1.5 dB steps. Those 32 levels are mapped onto 100 levels at the
|
||||
ioctl, see below.
|
||||
|
||||
SOUND_MIXER_CD Default: 0x4a4a (0 dB)
|
||||
|
||||
This is the gain control for mixing the CD audio source into the
|
||||
outputs. The left and right channel gain are controlled
|
||||
independently. This gain control has 32 levels, which range from
|
||||
-34.5 dB to +12.0 dB in 1.5 dB steps. Those 32 levels are mapped onto
|
||||
100 levels at the ioctl, see below.
|
||||
|
||||
SOUND_MIXER_RECLEV Default: 0 (0 dB)
|
||||
|
||||
This is the gain control for PCM input (RECording LEVel). The left
|
||||
and right channel gain are controlled independently. This gain
|
||||
control has 16 levels, which range from 0 dB to +22.5 dB in 1.5 dB
|
||||
steps. Those 16 levels are mapped onto 100 levels at the ioctl, see
|
||||
below.
|
||||
|
||||
SOUND_MIXER_RECSRC Default: SOUND_MASK_LINE
|
||||
|
||||
This is a mask of currently selected PCM input sources (RECording
|
||||
SouRCes). Because the AD1843 can only have a single recording source
|
||||
at a time, only one bit at a time can be set in this mask. The
|
||||
allowable values are SOUND_MASK_PCM, SOUND_MASK_LINE, SOUND_MASK_MIC,
|
||||
or SOUND_MASK_CD. Selecting SOUND_MASK_PCM sets up internal
|
||||
resampling which is useful for loopback testing and for hardware
|
||||
sample rate conversion. But software sample rate conversion is
|
||||
probably faster, so I don't know how useful that is.
|
||||
|
||||
SOUND_MIXER_OUTSRC DEFAULT: SOUND_MASK_LINE|SOUND_MASK_MIC|SOUND_MASK_CD
|
||||
|
||||
This is a mask of sources that are currently passed through to the
|
||||
outputs. Those sources whose bits are not set are muted.
|
||||
|
||||
==============================================================================
|
||||
GAIN CONTROL
|
||||
|
||||
There are five gain controls listed above. Each has 16, 32, or 64
|
||||
steps. Each control has 1.5 dB of gain per step. Each control is
|
||||
stereo.
|
||||
|
||||
The OSS defines the argument to a channel gain ioctl as having two
|
||||
components, left and right, each of which ranges from 0 to 100. The
|
||||
two components are packed into the same word, with the left side gain
|
||||
in the least significant byte, and the right side gain in the second
|
||||
least significant byte. In C, we would say this.
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
...
|
||||
|
||||
assert(leftgain >= 0 && leftgain <= 100);
|
||||
assert(rightgain >= 0 && rightgain <= 100);
|
||||
arg = leftgain | rightgain << 8;
|
||||
|
||||
So each OSS gain control has 101 steps. But the hardware has 16, 32,
|
||||
or 64 steps. The hardware steps are spread across the 101 OSS steps
|
||||
nearly evenly. The conversion formulas are like this, given N equals
|
||||
16, 32, or 64.
|
||||
|
||||
int round = N/2 - 1;
|
||||
OSS_gain_steps = (hw_gain_steps * 100 + round) / (N - 1);
|
||||
hw_gain_steps = (OSS_gain_steps * (N - 1) + round) / 100;
|
||||
|
||||
Here is a snippet of C code that will return the left and right gain
|
||||
of any channel in dB. Pass it one of the predefined gain_desc_t
|
||||
structures to access any of the five channels' gains.
|
||||
|
||||
typedef struct gain_desc {
|
||||
float min_gain;
|
||||
float gain_step;
|
||||
int nbits;
|
||||
int chan;
|
||||
} gain_desc_t;
|
||||
|
||||
const gain_desc_t gain_pcm = { -82.5, 1.5, 6, SOUND_MIXER_PCM };
|
||||
const gain_desc_t gain_line = { -34.5, 1.5, 5, SOUND_MIXER_LINE };
|
||||
const gain_desc_t gain_mic = { -34.5, 1.5, 5, SOUND_MIXER_MIC };
|
||||
const gain_desc_t gain_cd = { -34.5, 1.5, 5, SOUND_MIXER_CD };
|
||||
const gain_desc_t gain_reclev = { 0.0, 1.5, 4, SOUND_MIXER_RECLEV };
|
||||
|
||||
int get_gain_dB(int fd, const gain_desc_t *gp,
|
||||
float *left, float *right)
|
||||
{
|
||||
int word;
|
||||
int lg, rg;
|
||||
int mask = (1 << gp->nbits) - 1;
|
||||
|
||||
if (ioctl(fd, MIXER_READ(gp->chan), &word) != 0)
|
||||
return -1; /* fail */
|
||||
lg = word & 0xFF;
|
||||
rg = word >> 8 & 0xFF;
|
||||
lg = (lg * mask + mask / 2) / 100;
|
||||
rg = (rg * mask + mask / 2) / 100;
|
||||
*left = gp->min_gain + gp->gain_step * lg;
|
||||
*right = gp->min_gain + gp->gain_step * rg;
|
||||
return 0;
|
||||
}
|
||||
|
||||
And here is the corresponding routine to set a channel's gain in dB.
|
||||
|
||||
int set_gain_dB(int fd, const gain_desc_t *gp, float left, float right)
|
||||
{
|
||||
float max_gain =
|
||||
gp->min_gain + (1 << gp->nbits) * gp->gain_step;
|
||||
float round = gp->gain_step / 2;
|
||||
int mask = (1 << gp->nbits) - 1;
|
||||
int word;
|
||||
int lg, rg;
|
||||
|
||||
if (left < gp->min_gain || right < gp->min_gain)
|
||||
return EINVAL;
|
||||
lg = (left - gp->min_gain + round) / gp->gain_step;
|
||||
rg = (right - gp->min_gain + round) / gp->gain_step;
|
||||
if (lg >= (1 << gp->nbits) || rg >= (1 << gp->nbits))
|
||||
return EINVAL;
|
||||
lg = (100 * lg + mask / 2) / mask;
|
||||
rg = (100 * rg + mask / 2) / mask;
|
||||
word = lg | rg << 8;
|
||||
|
||||
return ioctl(fd, MIXER_WRITE(gp->chan), &word);
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue