Commit d56b9b9c authored by Adrian Bunk's avatar Adrian Bunk Committed by Linus Torvalds

[PATCH] The scheduled removal of some OSS drivers

This patch contains the scheduled removal of OSS drivers that:
- have ALSA drivers for the same hardware without known regressions and
- whose Kconfig options have been removed in 2.6.17.

[ build fix]
Signed-off-by: default avatarAdrian Bunk <>
Signed-off-by: default avatarMichal Piotrowski <>
Cc: David Woodhouse <>
Signed-off-by: default avatarAndrew Morton <>
Signed-off-by: default avatarLinus Torvalds <>
parent 595182bc
......@@ -29,14 +29,6 @@ Who: Adrian Bunk <>
What: drivers that were depending on OBSOLETE_OSS_DRIVER
(config options already removed)
When: before 2.6.19
Why: OSS drivers with ALSA replacements
Who: Adrian Bunk <>
What: raw1394: requests of type RAW1394_REQ_ISO_SEND, RAW1394_REQ_ISO_LISTEN
When: November 2006
Why: Deprecated in favour of the new ioctl-based rawiso interface, which is
......@@ -289,9 +289,6 @@ and is between 256 and 4096 characters. It is defined in the file
autotest [IA64]
awe= [HW,OSS] AWE32/SB32/AWE64 wave table synth
Format: <io>,<memsize>,<isapnp>
aztcd= [HW,CD] Aztech CD268 CDROM driver
Format: <io>,0x79 (?)
......@@ -536,10 +533,6 @@ and is between 256 and 4096 characters. It is defined in the file
Default value is 0.
Value can be changed at runtime via /selinux/enforce.
es1370= [HW,OSS]
Format: <lineout>[,<micbias>]
See also header of sound/oss/es1370.c.
es1371= [HW,OSS]
Format: <spdif>,[<nomix>,[<amplifier>]]
See also header of sound/oss/es1371.c.
......@@ -580,9 +573,6 @@ and is between 256 and 4096 characters. It is defined in the file
gscd= [HW,CD]
Format: <io>
gus= [HW,OSS]
Format: <io>,<irq>,<dma>,<dma16>
gvp11= [HW,SCSI]
hashdist= [KNL,NUMA] Large hashes allocated during boot
......@@ -841,12 +831,6 @@ and is between 256 and 4096 characters. It is defined in the file
(machvec) in a generic kernel.
Example: machvec=hpzx1_swiotlb
mad16= [HW,OSS] Format:
maui= [HW,OSS]
Format: <io>,<irq>
max_loop= [LOOP] Maximum number of loopback devices that can
be mounted
Format: <1-256>
......@@ -1114,9 +1098,6 @@ and is between 256 and 4096 characters. It is defined in the file
opl3= [HW,OSS]
Format: <io>
opl3sa= [HW,OSS]
Format: <io>,<irq>,<dma>,<dma2>,<mpu_io>,<mpu_irq>
opl3sa2= [HW,OSS] Format:
......@@ -1451,9 +1432,6 @@ and is between 256 and 4096 characters. It is defined in the file
sg_def_reserved_size= [SCSI]
sgalaxy= [HW,OSS]
Format: <io>,<irq>,<dma>,<dma2>,<sgbase>
shapers= [NET]
Maximal number of shapers.
......@@ -1594,9 +1572,6 @@ and is between 256 and 4096 characters. It is defined in the file
snd-ymfpci= [HW,ALSA]
sonicvibes= [HW,OSS]
Format: <reverb>
sonycd535= [HW,CD]
Format: <io>[,<irq>]
Installing and using Creative AWE midi sound under Linux.
This documentation is devoted to the Creative Sound Blaster AWE32, AWE64 and
1) Make sure you have an ORIGINAL Creative SB32, AWE32 or AWE64 card. This
is important, because the driver works only with real Creative cards.
2) The first thing you need to do is re-compile your kernel with support for
your sound card. Run your favourite tool to configure the kernel and when
you get to the "Sound" menu you should enable support for the following:
Sound card support,
OSS sound modules,
100% Sound Blaster compatibles (SB16/32/64, ESS, Jazz16) support,
AWE32 synth
If your card is "Plug and Play" you will also need to enable these two
options, found under the "Plug and Play configuration" menu:
Plug and Play support
ISA Plug and Play support
Now compile and install the kernel in normal fashion. If you don't know
how to do this you can find instructions for this in the README file
located in the root directory of the kernel source.
3) Before you can start playing midi files you will have to load a sound
bank file. The utility needed for doing this is called "sfxload", and it
is one of the utilities found in a package called "awesfx". If this
package is not available in your distribution you can download the AWE
snapshot from Creative Labs Open Source website:
Once you have unpacked the AWE snapshot you will see a "awesfx"
directory. Follow the instructions in awesfx/docs/INSTALL to install the
utilities in this package. After doing this, sfxload should be installed
To enable AWE general midi synthesis you should also get the sound bank
file for general midi from:
Copy it to a directory of your choice, and unpack it there.
4) Edit /etc/modprobe.conf, and insert the following lines at the end of the
alias sound-slot-0 sb
alias sound-service-0-1 awe_wave
install awe_wave /sbin/modprobe --first-time -i awe_wave && /usr/local/bin/sfxload PATH_TO_SOUND_BANK_FILE
You will of course have to change "PATH_TO_SOUND_BANK_FILE" to the full
path of the sound bank file. That will enable the Sound Blaster and AWE
wave synthesis. To play midi files you should get one of these programs if
you don't already have them:
AWEMidi Player (drvmidi) Included in the previously mentioned AWE
You will probably have to pass the "-e" switch to playmidi to have it use
your midi device. drvmidi should work without switches.
If something goes wrong please e-mail me. All comments and suggestions are
Yaroslav Rosomakho (
Last Updated: Feb 3 2001
Audio driver for CM8338/CM8738 chips by Chen-Li Tien
C-Media CMI8338
C-Media CMI8738
On-board C-Media chips
1. Backup the and Makefile in the sound driver directory
The provide help when you config driver in step
4, please backup the original one (/usr/src/linux/Document) and
copy this file.
The cmpci is document for the driver in detail, please copy it
to /usr/src/linux/Document/sound so you can refer it. Backup if
there is already one.
2. Extract the tar file by 'tar xvzf cmpci-xx.tar.gz' in the above
3. Change directory to /usr/src/linux
4. Config cm8338 driver by 'make menuconfig', 'make config' or
'make xconfig' command.
5. Please select Sound Card (CONFIG_SOUND=m) support and CMPCI
driver (CONFIG_SOUND_CMPCI=m) as modules. Resident mode not tested.
For driver option, please refer 'DRIVER PARAMETER'
6. Compile the kernel if necessary.
7. Compile the modules by 'make modules'.
8. Install the modules by 'make modules_install'
1. Before first time to run the driver, create module dependency by
'depmod -a'
2. To install the driver manually, enter 'modprobe cmpci'.
3. Driver installation for various distributions:
a. Slackware 4.0
Add the 'modprobe cmpci' command in your /etc/rc.d/rc.modules you can start the driver automatically each time booting.
b. Caldera OpenLinux 2.2
Use LISA to load the cmpci module.
c. RedHat 6.0 and S.u.S.E. 6.1
Add following command in /etc/conf.modules:
alias sound cmpci
also visit for installation instruction.
Some functions for the cm8738 can be configured in Kernel Configuration
or modules parameters. Set these parameters to 1 to enable.
mpuio: I/O ports base for MPU-401, 0 if disabled.
fmio: I/O ports base for OPL-3, 0 if disabled.
spdif_inverse:Inverse the S/PDIF-in signal, this depends on your
spdif_loop: Enable S/PDIF loop, this route S/PDIF-in to S/PDIF-out
speakers: Number of speakers used.
use_line_as_rear:Enable this if you want to use line-in as
use_line_as_bass:Enable this if you want to use line-in as
joystick: Enable joystick. You will need to install Linux joystick
Takashi Iwai <>
* Attention to SB-PnP Card Users
If you're using PnP cards, the initialization of PnP is required
before loading this driver. You have now three options:
1. Use isapnptools.
2. Use in-kernel isapnp support.
3. Initialize PnP on DOS/Windows, then boot linux by loadlin.
In this document, only the case 1 case is treated.
* Installation on Red Hat 5.0 Sound Driver
Please use under RedHat5.0 directory.
DO NOT USE below.
See INSTALL.RH for more details.
* Installation/Update by Shell Script
1. Become root
% su
2. If you have never configured the kernel tree yet, run make config
once (to make dependencies and symlinks).
# cd /usr/src/linux
# make xconfig
3. Run script
# sh ./
4. Configure your kernel
(for Linux 2.[01].x user)
# cd /usr/src/linux
# make xconfig (or make menuconfig)
(for Linux 1.2.x user)
# cd /usr/src/linux
# make config
Answer YES to both "lowlevel drivers" and "AWE32 wave synth" items
in Sound menu. ("lowlevel drivers" will appear only in 2.x
5. Make your kernel (and modules), and install them as usual.
5a. make kernel image
# make zImage
5b. make modules and install them
# make modules && make modules_install
5c. If you're using lilo, copy the kernel image and run lilo.
Otherwise, copy the kernel image to suitable directory or
media for your system.
6. Reboot the kernel if necessary.
- If you updated only the modules, you don't have to reboot
the system. Just remove the old sound modules here.
# rmmod sound.o (linux-2.0 or OSS/Free)
# rmmod awe_wave.o (linux-2.1)
7. If your AWE card is a PnP and not initialized yet, you'll have to
do it by isapnp tools. Otherwise, skip to 8.
This section described only a brief explanation. For more
details, please see the AWE64-Mini-HOWTO or isapnp tools FAQ.
7a. If you have no isapnp.conf file, generate it by pnpdump.
Otherwise, skip to 7d.
# pnpdump > /etc/isapnp.conf
7b. Edit isapnp.conf file. Comment out the appropriate
lines containing desirable I/O ports, DMA and IRQs.
Don't forget to enable (ACT Y) line.
7c. Add two i/o ports (0xA20 and 0xE20) in WaveTable part.
(CONFIGURE CTL0048/58128 (LD 2
# ANSI string -->WaveTable<--
(IO 0 (BASE 0x0620))
(IO 1 (BASE 0x0A20))
(IO 2 (BASE 0x0E20))
7d. Load the config file.
CAUTION: This will reset all PnP cards!
# isapnp /etc/isapnp.conf
8. Load the sound module (if you configured it as a module):
for 2.0 kernel or OSS/Free monolithic module:
# modprobe sound.o
for 2.1 kernel:
# modprobe sound
# insmod uart401
# insmod sb io=0x220 irq=5 dma=1 dma16=5 mpu_io=0x330
(These values depend on your settings.)
# insmod awe_wave
(Be sure to load awe_wave after sb!)
See Documentation/sound/oss/AWE32 for
more details.
9. (only for obsolete systems) If you don't have /dev/sequencer
device file, make it according to Readme.linux file on
/usr/src/linux/drivers/sound. (Run a shell script included in
that file). <-- This file no longer exists in the recent kernels!
10. OK, load your own soundfont file, and enjoy MIDI!
% sfxload synthgm.sbk
% drvmidi foo.mid
11. For more advanced use (eg. dynamic loading, virtual bank and
etc.), please read the awedrv FAQ or the instructions in awesfx
and awemidi packages.
Good luck!
(This recipe has been edited to update the configuration symbols,
and change over to modprobe.conf for 2.6)
From: Shaw Carruthers <>
I have been using mad16 sound for some time now with no problems, current
kernel 2.1.89
lsmod shows:
mad16 5176 0
sb 22044 0 [mad16]
uart401 5576 0 [mad16 sb]
ad1848 14176 1 [mad16]
sound 61928 0 [mad16 sb uart401 ad1848]
.config has:
modprobe.conf has:
alias char-major-14-* mad16
options sb mad16=1
options mad16 io=0x530 irq=7 dma=0 dma16=1 && /usr/local/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
To get the built in mixer to work this needs to be:
options adlib_card io=0x388 # FM synthesizer
options sb mad16=1
options mad16 io=0x530 irq=7 dma=0 dma16=1 mpu_io=816 mpu_irq=5 && /usr/local/bin/aumix -w 15 -p 20 -m 0 -1 0 -2 0 -3 0 -i 0
The addition of the "mpu_io=816 mpu_irq=5" to the mad16 options line is
The mad16 module in addition supports the following options:
option: meaning: default:
joystick=0,1 disabled, enabled disabled
cdtype=0x00,0x02,0x04, disabled, Sony CDU31A, disabled
0x06,0x08,0x0a Mitsumi, Panasonic,
Secondary IDE, Primary IDE
cdport=0x340,0x320, 0x340
cdirq=0,3,5,7,9,10,11 disabled, IRQ3, ... disabled
cddma=0,5,6,7 disabled, DMA5, ... DMA5 for Mitsumi or IDE
cddma=0,1,2,3 disabled, DMA1, ... DMA3 for Sony or Panasonic
opl4=0,1 OPL3, OPL4 OPL3
for more details see linux/drivers/sound/mad16.c
Rui Sousa
An OSS/Lite Driver for the ESS Maestro family of sound cards
Zach Brown, December 1999
Driver Status and Availability
The most recent version of this driver will hopefully always be available at
I will try and maintain the most recent stable version of the driver
in both the stable and development kernel lines.
ESS Maestro Chip Family
There are 3 main variants of the ESS Maestro PCI sound chip. The first
is the Maestro 1. It was originally produced by Platform Tech as the
'AGOGO'. It can be recognized by Platform Tech's PCI ID 0x1285 with
0x0100 as the device ID. It was put on some sound boards and a few laptops.
ESS bought the design and cleaned it up as the Maestro 2. This starts
their marking with the ESS vendor ID 0x125D and the 'year' device IDs.
The Maestro 2 claims 0x1968 while the Maestro 2e has 0x1978.
The various families of Maestro are mostly identical as far as this
driver is concerned. It doesn't touch the DSP parts that differ (though
it could for FM synthesis).
Driver OSS Behavior
This OSS driver exports /dev/mixer and /dev/dsp to applications, which
mostly adhere to the OSS spec. This driver doesn't register itself
with /dev/sndstat, so don't expect information to appear there.
The /dev/dsp device exported behaves almost as expected. Playback is
supported in all the various lovely formats. 8/16bit stereo/mono from
8khz to 48khz, and mmap()ing for playback behaves. Capture/recording
is limited due to oddities with the Maestro hardware. One can only
record in 16bit stereo. For recording the maestro uses non interleaved
stereo buffers so that mmap()ing the incoming data does not result in
a ring buffer of LRLR data. mmap()ing of the read buffers is therefore
disallowed until this can be cleaned up.
/dev/mixer is an interface to the AC'97 codec on the Maestro. It is
worth noting that there are a variety of AC'97s that can be wired to
the Maestro. Which is used is entirely up to the hardware implementor.
This should only be visible to the user by the presence, or lack, of
'Bass' and 'Treble' sliders in the mixer. Not all AC'97s have them.
The driver doesn't support MIDI or FM playback at the moment. Typically
the Maestro is wired to an MPU MIDI chip, but some hardware implementations
don't. We need to assemble a white list of hardware implementations that
have MIDI wired properly before we can claim to support it safely.
Compiling and Installing
With the drivers inclusion into the kernel, compiling and installing
is the same as most OSS/Lite modular sound drivers. Compilation
of the driver is enabled through the CONFIG_SOUND_MAESTRO variable
in the config system.
It may be modular or statically linked. If it is modular it should be
installed with the rest of the modules for the kernel on the system.
Typically this will be in /lib/modules/ somewhere. 'alias sound maestro'
should also be added to your module configs (typically /etc/conf.modules)
if you're using modular OSS/Lite sound and want to default to using a
maestro chip.
As this is a PCI device, the module does not need to be informed of
any IO or IRQ resources it should use, it devines these from the
system. Sometimes, on sucky PCs, the BIOS fails to allocated resources
for the maestro. This will result in a message like:
maestro: PCI subsystem reports IRQ 0, this might not be correct.
from the kernel. Should this happen the sound chip most likely will
not operate correctly. To solve this one has to dig through their BIOS
(typically entered by hitting a hot key at boot time) and figure out
what magic needs to happen so that the BIOS will reward the maestro with
an IRQ. This operation is incredibly system specific, so you're on your
own. Sometimes the magic lies in 'PNP Capable Operating System' settings.
There are very few options to the driver. One is 'debug' which will
tell the driver to print minimal debugging information as it runs. This
can be collected with 'dmesg' or through the klogd daemon.
The other, more interesting option, is 'dsps_order'. Typically at
install time the driver will only register one available /dev/dsp device
for its use. The 'dsps_order' module parameter allows for more devices
to be allocated, as a power of two. Up to 4 devices can be registered
( dsps_order=2 ). These devices act as fully distinct units and use
separate channels in the maestro.
Power Management
As of version 0.14, this driver has a minimal understanding of PCI
Power Management. If it finds a valid power management capability
on the PCI device it will attempt to use the power management
functions of the maestro. It will only do this on Maestro 2Es and
only on machines that are known to function well. You can
force the use of power management by setting the 'use_pm' module
option to 1, or can disable it entirely by setting it to 0.
When using power management, the driver does a few things
differently. It will keep the chip in a lower power mode
when the module is inserted but /dev/dsp is not open. This
allows the mixer to function but turns off the clocks
on other parts of the chip. When /dev/dsp is opened the chip
is brought into full power mode, and brought back down
when it is closed. It also powers down the chip entirely
when the module is removed or the machine is shutdown. This
can have nonobvious consequences. CD audio may not work
after a power managing driver is removed. Also, software that
doesn't understand power management may not be able to talk
to the powered down chip until the machine goes through a hard
reboot to bring it back.
.. more details ..
drivers/sound/maestro.c contains comments that hopefully explain
the maestro implementation.
An OSS/Lite Driver for the ESS Maestro3 family of sound chips
Zach Brown, January 2001
Driver Status and Availability
The most recent version of this driver will hopefully always be available at
I will try and maintain the most recent stable version of the driver
in both the stable and development kernel lines.
Historically I've sucked pretty hard at actually doing that, however.
ESS Maestro3 Chip Family
The 'Maestro3' is much like the Maestro2 chip. The noted improvement
is the removal of the silicon in the '2' that did PCM mixing. All that
work is now done through a custom DSP called the ASSP, the Asynchronus
Specific Signal Processor.
The 'Allegro' is a baby version of the Maestro3. I'm not entirely clear
on the extent of the differences, but the driver supports them both :)
The 'Allegro' shows up as PCI ID 0x1988 and the Maestro3 as 0x1998,
both under ESS's vendor ID of 0x125D. The Maestro3 can also show up as
0x199a when hardware strapping is used.
The chip can also act as a multi function device. The modem IDs follow
the audio multimedia device IDs. (so the modem part of an Allegro shows
up as 0x1989)
Driver OSS Behavior
This OSS driver exports /dev/mixer and /dev/dsp to applications, which
mostly adhere to the OSS spec. This driver doesn't register itself
with /dev/sndstat, so don't expect information to appear there.
The /dev/dsp device exported behaves as expected. Playback is
supported in all the various lovely formats. 8/16bit stereo/mono from
8khz to 48khz, with both read()/write(), and mmap().
/dev/mixer is an interface to the AC'97 codec on the Maestro3. It is