
		Advanced Linux Sound Architecture - Driver
		==========================================
			    Installation guide

The ALSA driver replaces the OSS/Lite driver. The OSS/Lite is present in
current Linux kernels. If you have got a 2.2+ kernel, you must compile
kernel with sound support (you need not select any other modules than
sound support). If you have got 2.0 or 2.1 kernels, check if the OSS/Lite
driver is active in your kernel. You must remove it before you are
trying to install the ALSA driver.

Before installation of this driver, please, you need carefully read
documentation  for insmod, modprobe, kerneld/kmod and even for the isapnp
module if you have the ISA PnP soundcard. If you do not understand how
these programs are working, you cannot be success with the installation.

Quick install
=============

1) If you have got 2.2 or later kernel, you must turn on sound support.
   If you have got 2.0 kernel or 2.1 kernel, you can silently skip this step.
2) Run './configure' script.
   If you have ISA Plug & Play soundcard, use --with-isapnp=yes switch.
   If you want sequencer support, use --with-sequencer=yes switch.
   If you do not want OSS/Lite emulation, use --with-oss=no switch.
   If you want turn on debug mode use --with-debug=full switch.
   If you want debug soundcard detection try --with-debug=detect switch.
   Example: ./configure --with-isapnp=yes --with-debug=full
3) Run 'make install'.
4) Run the './snddevices' script to create new sound devices in /dev directory.
5) Edit your /etc/conf.modules (look to kerneld/kmod support section).
6) Run 'modprobe snd-card' where the card is a name of your card.
   Note: If you have a ISA PnP soundcard you should need run the isapnp
         program from isapnptools package at first to initialize your
         soundcard. You can also use the native ISA PnP support with
         using the --with-isapnp=yes configuration switch.

You can also look to the utils/alsasound file. This script is designed for
the RedHat distribution, but it should be used with other distributions which
are using System V style rc init scripts.

Note: All mixer channels are muted by default. You must use some native
      mixer program to unmute appropriate channels (for example a mixer
      from the alsa-utils package).

Driver cannot be activated?
===========================

1) Is the OSS(/Lite) driver present? - remove it (2.0 and 2.1 kernels only)
2) You can check your soundcard setup again and read this install file
   (module parameters) carefully.
3) If you have got ISA PnP soundcard:
   - native ISA PnP support: is your setup in /proc/isapnp.conf correct?
   - isapnptools: is configuration on isapnp.conf same as for the driver?
4) The driver is not still working: remake driver with:
     ./configure --with-debug=detect; make clean; make
   Reinsert new driver modules to kernel and look to /var/log/messages if
   there are not some messages. If these messages do not help you, send us
   to <devel@alsa-project.org> mailing list:
	- soundcard name + chip names present on your soundcard
	- your /proc/isapnp or isapnp.conf if you have ISA PnP soundcard
	- your conf.modules or commands which you are using to activate
          the ALSA driver
	- all messages from /var/log/messages which could be relevant to
          the ALSA driver

Bug report
==========

We need know at least these things:

1) driver + kernel version: 'cat /proc/asound/version'
2) the soundcard info
   - the soundcard name provided by manufacture
   - list of chips which soundcard have onboard
   - contents of 'cat /proc/asound/cards'
3) ISA PnP configuration (only for the ISA PnP soundcards)
   - contents of 'cat /proc/isapnp' or the isapnp.conf file
4) all messages from /var/log/messages which could be relevant to
   the ALSA driver
5) a short problem description

Module parameters
=================

  An user can modify or set parameters at the load time of module. If
  the module supports more cards and you have got more than one card
  of same type, you may simply to specify more values for the parameter
  delimited with commas.
  
  Module snd.o
  ------------

    snd_major	- major # for sound driver
		- default is 14 - this value is compatible with OSS/Lite
    snd_cards_limit
		- specifies card limit # (1-8)
		- good for kerneld/kmod support if you do not want search
		  for soundcards which are not installed in your system
    snd_device_mode
		- specifies permission mask for dynamic sound device filesystem
		- default value = 0666
		- for example 'snd_device_mode=0660'
    snd_device_gid
		- specifies GID number for dynamic sound device filesystem
		- default value = 0 (root)
    snd_device_uid
		- specifies UID number for dynamic sound device filesystem
		- default value = 0 (root)

  Global parameters for top soundcard modules
  -------------------------------------------

    snd_index	- 1-8 - index for soundcard
                - if not set, first free index is assigned
    snd_id	- user identification for card (up to 15 chars)
		- default expression is 'card<snd_index>' (for example card1)
		- value is used for /proc/asound filesystem
		- this value can be used with application for identification
		  of card if user does not want identify card with index number

  Module snd-audiodrive1688.o
  ---------------------------

    Module for ESS AudioDrive ES-1688 and ES-688 soundcards.

    snd_port	- port # for ES-1688 chip (0x220,0x240,0x260)
    snd_mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default)
    snd_irq	- IRQ # for ES-1688 chip (5,7,9,10)
    snd_mpu_irq	- IRQ # for MPU-401 port (5,7,9,10)
    snd_dma8	- DMA # for ES-1688 chip (0,1,3)
    snd_dma8_size - max DMA size in kB (4-64kB)

    Module supports up to 8 cards and autoprobe (without MPU-401 port).

  Module snd-audiodrive18xx.o
  ---------------------------

    Module for ESS AudioDrive ES-18xx soundcards.

    snd_port	- port # for ES-18xx chip (0x220,0x240,0x260)
    snd_mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable (default)
    snd_fm_port - port # for FM (optional, not used)
    snd_irq	- IRQ # for ES-18xx chip (5,7,9,10)
    snd_dma1	- first DMA # for ES-18xx chip (0,1,3)
    snd_dma1_size - max first DMA size in kB (4-64kB)
    snd_dma2	- first DMA # for ES-18xx chip (0,1,3)
    snd_dma2_size - max second DMA size in kB (4-64kB)
    snd_skip_isapnp - skip ISA PnP detection - 0 = disable (default), 1 = enable

    Module supports up to 8 cards ISA PnP and autoprobe (without MPU-401 port
    if native ISA PnP routines are not used).

  Module snd-gusclassic.o
  -----------------------

    Module for Gravis UltraSound Classic soundcard.

    snd_port	- port # for GF1 chip (0x220,0x230,0x240,0x250,0x260)
    snd_irq	- IRQ # for GF1 chip (3,5,9,11,12,15)
    snd_dma1	- DMA # for GF1 chip (1,3,5,6,7)
    snd_dma1_size - max DMA1 size in kB (4-128kB)
    snd_dma2	- DMA # for GF1 chip (1,3,5,6,7,-1=disable)
    snd_dma2_size - max DMA2 size in kB (4-128kB)
    snd_joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V)

    Module supports up to 8 cards and autoprobe.

  Module snd-gusextreme.o
  -----------------------

    Module for Gravis UltraSound Extreme soundcard.

    snd_port	- port # for ES-1688 chip (0x220,0x230,0x240,0x250,0x260)
    snd_gf1_port - port # for GF1 chip (0x210,0x220,0x230,0x240,0x250,0x260,0x270)
    snd_mpu_port - port # for MPU-401 port (0x300,0x310,0x320,0x330), -1 = disable
    snd_irq	- IRQ # for ES-1688 chip (5,7,9,10)
    snd_mpu_irq	- IRQ # for MPU-401 port (5,7,9,10)
    snd_irq1	- IRQ # for GF1 chip (3,5,9,11,12,15)
    snd_dma8	- DMA # for ES-1688 chip (0,1,3)
    snd_dma8_size - max DMA8 size in kB (4-64kB)
    snd_dma1	- DMA # for GF1 chip (1,3,5,6,7)
    snd_dma1_size - max DMA1 size in kB (4-128kB)
    snd_joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V)

    Module supports up to 8 cards and autoprobe (without MPU-401 port).

  Module snd-gusmax.o
  -------------------

    Module for Gravis UltraSound MAX soundcard.

    snd_port	- port # for GF1 chip (0x220,0x230,0x240,0x250,0x260)
    snd_irq	- IRQ # for GF1 chip (3,5,9,11,12,15)
    snd_dma1	- DMA # for GF1 chip (1,3,5,6,7)
    snd_dma1_size - max DMA1 size in kB (4-128kB)
    snd_dma2	- DMA # for GF1 chip (1,3,5,6,7,-1=disable)
    snd_dma2_size - max DMA2 size in kB (4-128kB)
    snd_joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V)

    Module supports up to 8 cards and autoprobe.
    
  Module snd-interwave.o
  ----------------------

    Module for Gravis UltraSound PnP, Dynasonic 3-D/Pro, STB Sound Rage 32
    and other soundcards based on AMD InterWave (tm) chip.
  
    snd_port	- port # for InterWave chip (0x210,0x220,0x230,0x240,0x250,0x260)
    snd_irq	- IRQ # for InterWave chip (3,5,9,11,12,15)
    snd_dma1	- DMA # for InterWave chip (0,1,3,5,6,7)
    snd_dma1_size - max DMA1 size in kB (4-128kB)
    snd_dma2	- DMA # for InterWave chip (0,1,3,5,6,7,-1=disable)
    snd_dma2_size - max DMA2 size in kB (4-128kB)
    snd_joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V)
    snd_midi    - 1 = MIDI UART enable, 0 = MIDI UART disable (default)

    Module supports up to 8 cards, autoprobe and ISA PnP.

  Module snd-interwave-stb.o
  --------------------------

    Module for UltraSound 32-Pro (soundcard from STB used by Compaq)
    and other soundcards based on AMD InterWave (tm) chip with TEA6330T
    circuit for extended control of bass, treble and master volume.
  
    snd_port	- port # for InterWave chip (0x210,0x220,0x230,0x240,0x250,0x260)
    snd_port_tc - tone control (i2c bus) port # for TEA6330T chip (0x350,0x360,0x370,0x380)
    snd_irq	- IRQ # for InterWave chip (3,5,9,11,12,15)
    snd_dma1	- DMA # for InterWave chip (0,1,3,5,6,7)
    snd_dma1_size - max DMA1 size in kB (4-128kB)
    snd_dma2	- DMA # for InterWave chip (0,1,3,5,6,7,-1=disable)
    snd_dma2_size - max DMA2 size in kB (4-128kB)
    snd_joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V)
    snd_midi    - 1 = MIDI UART enable, 0 = MIDI UART disable (default)

    Module supports up to 8 cards, autoprobe and ISA PnP.

  Module snd-sb8.o
  ----------------

    Module for 8-bit SoundBlaster cards: SoundBlaster 1.0,
					 SoundBlaster 2.0,
					 SoundBlaster Pro

    snd_port	- port # for SB DSP chip (0x220,0x240,0x260)
    snd_irq	- IRQ # for SB DSP chip (5,7,9,10)
    snd_dma8	- DMA # for SB DSP chip (1,3)
    snd_dma8_size - max DMA size in kB (4-64kB)

    Module supports up to 8 cards and autoprobe.
    
  Module snd-sb16.o/snd-sbawe.o
  -----------------------------

    Module for 16-bit SoundBlaster cards: SoundBlaster 16 (PnP),
					  SoundBlaster AWE 32 (PnP),
					  SoundBlaster AWE 64 PnP

    snd_port	- port # for SB DSP 4.x chip (0x220,0x240,0x260)
    snd_mpu_port - port # for MPU-401 UART (0x300,0x330), -1 = disable
    snd_awe_port - port # for EMU8000 synthesizer (snd-sbawe module only)
    snd_irq	- IRQ # for SB DSP 4.x chip (5,7,9,10)
    snd_dma8	- 8-bit DMA # for SB DSP 4.x chip (0,1,3)
    snd_dma8_size - max 8-bit DMA size in kB (4-64kB)
    snd_dma16	- 16-bit DMA # for SB DSP 4.x chip (5,6,7)
    snd_dma16_size - max 16-bit DMA size in kB (4-128kB)
    snd_mic_agc - Mic Auto-Gain-Control - 1 = enable (default), 0 = disable
    snd_isapnp  - ISA PnP detection - 0 = disable, 1 = enable (default)
    
    Module supports up to 8 cards, autoprobe and ISA PnP.

    Note: This module does not support SoundBlaster VibraX16 soundcard.
          This soundcard uses two 8-bit DMA channels and seems that
          documentation is not available at Creative Labs WWW site.
          If you know where can be get documentation, mail us...
          Otherwise - this soundcard is not supported yet, so do not
          send us any e-mails with "my soundcard is not working"...
    
  Module snd-opl3sa.o
  -------------------

    Module for Yamaha OPL3-SA2/SA3 soundcards.

    snd_port	- control port # for OPL3-SA chip (0x370)
    snd_wss_port - WSS port # for OPL3-SA chip (0x530,0xe80,0xf40,0x604)
    snd_midi_port - port # for MPU-401 UART (0x300,0x330), -1 = disable
    snd_fm_port - FM port # for OPL3-SA chip (0x388), -1 = disable
    snd_irq	- IRQ # for OPL3-SA chip (5,7,9,10)
    snd_dma1	- first DMA # for Yamaha OPL3-SA chip (0,1,3)
    snd_dma1_size - max first DMA size in kB (4-64kB)
    snd_dma2	- second DMA # for Yamaha OPL3-SA chip (0,1,3), -1 = disable
    snd_dma2_size - max second DMA size in kB (4-64kB)
    snd_isapnp  - ISA PnP detection - 0 = disable, 1 = enable (default)
    
    Module supports up to 8 cards and ISA PnP. This module does not supports
    autoprobe (if ISA PnP is not used) thus all ports must be specified!!!
    
  Module snd-mozart.o
  -------------------

    Module for OAK Mozart cards.

    snd_port	- port # for WSS chip (0x530,0xe80,0xf40,0x604)
    snd_irq	- IRQ # for WSS chip (7,9,10,11)
    snd_dma1	- DMA # for WSS chip (0,1,3)
    snd_dma1_size - max DMA size in kB (4-64kB)
    
    Module supports only one card and autoprobe.

  Module snd-opti9xx.o
  --------------------

    Module for soundcards based on OPTi 82C9xx chips.
    
    snd_port      - port # for WSS chip (0x530,0xe80,0xf40,0x604)
    snd_mpu_port  - port # for MPU-401 UART (0x300,0x310,0x320,0x330)
    snd_opl_port  - port # for OPL3 device (PnP setup - 0x388)
    snd_irq       - IRQ # for WSS chip (5,7,9,10,11)
    snd_mpu_irq   - IRQ # for MPU-401 UART (5,7,9,10)
    snd_dma1      - first DMA # for WSS chip (0,1,3)
    snd_dma1_size - max first DMA size in kB (4-64kB)
    snd_dma2      - second DMA # for WSS chip (0,1)
    snd_dma2_size - max second DMA size in kB (4-64kB)
    cd_if         - on-board cdrom drive interface type (disabled,ide1,ide2,
                    mitsumi,panasonic,sony)
    cd_port       - cdrom i/o port (0x320,0x330,0x340,0x360)
    cd_irq        - cdrom IRQ # (5,7,9,10,11)   -1 = disabled
    cd_drq        - cdrom DMA # (0,1,3)   -1 = disabled
    game          - on-board game port enable (enabled,disabled)

    Module supports only one card, autoprobe and PnP.

  Module snd-sonicvibes.o
  -----------------------

    Module for S3 SonicVibes PCI soundcards.
			* PINE Schubert 32 PCI

    snd_dmaa_size - max DDMA-A (playback) size in kB (4-128kB)
    snd_dmac_size - max DDMA-C (record) size in kB (4-128kB)
    snd_reverb    - Reverb Enable - 1 = enable, 0 = disable (default)
                  - SoundCard must have onboard SRAM for this.
    snd_mge       - Mic Gain Enable - 1 = enable, 0 = disable (default)
    
    Module supports up to 8 cards and autoprobe.

  Module snd-audiopci.o
  ---------------------

    Module for Ensoniq AudioPCI ES1370/1371 PCI soundcards.
			* SoundBlaster PCI 64
			* SoundBlaster PCI 128

    snd_dac1_frame_size - max dac1 (playback1) frame size in kB (4-128kB)
    snd_dac2_frame_size - max dac2 (playback2) frame size in kB (4-128kB)
    snd_adc_frame_size  - max adc (record) frame size in kB (4-128kB)

    Module supports up to 8 cards and autoprobe.
    
  Module snd-card-ad1848.o
  ------------------------

    Module for soundcards based on AD1848/AD1847/CS4248 chips.

    snd_port	- port # for AD1848 chip
    snd_irq	- IRQ # for AD1848  chip
    snd_dma1	- DMA # for AD1848 chip (0,1,3)
    snd_dma1_size - max DMA size in kB (4-64kB)
    
    Module supports up to 8 cards. This module does not supports autoprobe
    thus main port must be specified!!! Other ports are optional.
    
  Module snd-card-cs4231.o
  ------------------------

    Module for soundcards based on CS4231 chips.

    snd_port	- port # for CS4231 chip
    snd_mpu_port - port # for MPU-401 UART (optional), -1 = disable
    snd_irq	- IRQ # for CS4231 chip
    snd_mpu_irq - IRQ # for MPU-401 UART
    snd_dma1	- first DMA # for CS4231 chip
    snd_dma1_size - max first tDMA size in kB (4-128kB)
    snd_dma2	- second DMA # for CS4231 chip
    snd_dma2_size - max second DMA size in kB (4-128kB)
    
    Module supports up to 8 cards. This module does not supports autoprobe
    thus main port must be specified!!! Other ports are optional.
    
  Module snd-card-cs4232.o
  ------------------------

    Module for soundcards based on CS4232/CS4232A chips.

    snd_port	- port # for CS4232 chip (PnP setup - 0x534)
    snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
    snd_fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
    snd_irq	- IRQ # for CS4232 chip (5,7,9,11,12,15)
    snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
    snd_dma1	- first DMA # for CS4232 chip (0,1,3)
    snd_dma1_size - max first DMA size in kB (4-64kB)
    snd_dma2	- second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
    snd_dma2_size - max second DMA size in kB (4-64kB)
    
    Module supports up to 8 cards. This module does not supports autoprobe
    thus main port must be specified!!! Other ports are optional.
    
  Module snd-card-cs4236.o
  ------------------------

    Module for soundcards based on CS4235/CS4236/CS4236B/CS4237B/
                                   CS4238B/CS4239 chips.

    snd_port	- port # for CS4232 chip (PnP setup - 0x534)
    snd_cport   - control port # for CS4232 chip (PnP setup - 0x120)
    snd_mpu_port - port # for MPU-401 UART (PnP setup - 0x300), -1 = disable
    snd_fm_port - FM port # for CS4232 chip (PnP setup - 0x388), -1 = disable
    snd_irq	- IRQ # for CS4232 chip (5,7,9,11,12,15)
    snd_mpu_irq - IRQ # for MPU-401 UART (9,11,12,15)
    snd_dma1	- first DMA # for CS4232 chip (0,1,3)
    snd_dma1_size - max first DMA size in kB (4-64kB)
    snd_dma2	- second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
    snd_dma2_size - max second DMA size in kB (4-64kB)
    
    Module supports up to 8 cards. This module does not supports autoprobe
    (if ISA PnP is not used) thus main port and control port must be
    specified!!! Other ports are optional.
    
  Module snd-card-cs461x.o
  ------------------------

    Module for PCI soundcards based on CS4610/CS4612/CS4615/CS4680.

    snd_dac_frame_size  - max dac1 (playback) frame size in kB (4-128kB)
    snd_adc_frame_size  - max adc (record) frame size in kB (4-128kB)

    Module supports up to 8 cards and autoprobe.
    
  Module snd-trid4dwave.o
  -----------------------

    Module for Trident 4DWave DX/NX soundcards.
			* Best Union  Miss Melody 4DWave PCI
			* HIS  4DWave PCI
			* Warpspeed  ONSpeed 4DWave PCI
			* AzTech  PCI 64-Q3D
			* Addonics  SV 750
			* CHIC  True Sound 4Dwave
			* Shark  Predator4D-PCI
			* Jaton  SonicWave 4D

    snd_dac_frame_size_dx - max dac (playback) frame size in kB (4-64kB)
    snd_adc_frame_size_dx - max adc (record) frame size in kB (4-64kB)
    snd_dac_frame_size_nx - max dac (playback) frame size in kB (4-128kB)
    snd_adc_frame_size_nx - max adc (record) frame size in kB (4-64kB)

    Module supports up to 8 cards and autoprobe.

  Module snd-card-fm801.o
  ---------------------

    Module for ForteMedia FM801 based PCI soundcards.

    snd_dac_frame_size  - max dac1 (playback) frame size in kB (4-128kB)
    snd_adc_frame_size  - max adc (record) frame size in kB (4-128kB)

    Module supports up to 8 cards and autoprobe.
    

modprobe/kerneld/kmod support
=============================

The modprobe program must know where are modules for device major numbers.
Native ALSA devices have got default number 116. Thus line like
'alias char-major-116 snd' must be added to /etc/conf.modules. If you have 
got compiled ALSA driver with OSS/Lite emulation code, please, follow
these lines:

The ALSA driver uses soundcore multiplexer for 2.2 kernels and OSS compatible
devices. You should add line like 'alias char-major-14 soundcore'.
For 2.0/2.1 kernels the ALSA driver takes control for the char major device
14 itself, thus you may add line 'alias char-major-14 snd' to your
modprobe configuration file.

Example for 2.2 kernel (with OSS/Lite emulation turned on):

----- /etc/conf.modules

# ALSA portion
alias char-major-116 snd
# OSS/Lite portion
alias char-major-14 soundcore

----- /etc/conf.modules

Example for 2.0/2.1 kernels (with OSS/Lite emulation turned on):

----- /etc/conf.modules

# ALSA portion
alias char-major-116 snd
# OSS/Lite portion
alias char-major-14 snd

----- /etc/conf.modules

After the main multiplexer is loaded, its code requests toplevel soundcard
module. String 'snd-card-%i' is requested for native devices where %i is
soundcard number from zero to seven. String 'sound-slot-%i' is requested
for native devices where %i is slot number (for ALSA owner this means soundcard
number).

----- /etc/conf.modules

# ALSA portion
alias snd-card-0 snd-interwave
alias snd-card-1 snd-audiopci
# OSS/Lite portion
alias sound-slot-0 snd-card-0
alias sound-slot-1 snd-card-1

----- /etc/conf.modules

We are done at this point the configuration for ALSA native devices,
but you may also need autoloading for ALSA's add-on OSS/Lite emulation
modules. At this time only one module does not depends on others, thus
must be loaded separately - snd-pcm1-oss.o. String 'sound-service-%i-%i'
is requested for OSS/Lite service where first %i means slot number
(e.g. card number) and second %i means service number.

----- /etc/conf.modules

# OSS/Lite portion
alias sound-service-1-3 snd-pcm1-oss
alias sound-service-1-12 snd-pcm1-oss

----- /etc/conf.modules

Complete example for Gravis UltraSound PnP soundcard:

----- /etc/conf.modules

# ISA PnP support
options isapnp isapnp_reserve_irq=9,10,11,12,13

# ALSA native device support
alias char-major-116 snd
options snd snd_major=116 snd_cards_limit=1
alias snd-card-0 snd-interwave
options snd-interwave snd_index=1 snd_id="GusPnP"

# OSS/Lite setup
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-3 snd-pcm1-oss
alias sound-service-0-12 snd-pcm1-oss

-----

Complete example if you want use more soundcards in one machine
(bellow configuration is for Sound Blaster 16 and Gravis UltraSound Classic):

----- /etc/conf.modules

# ISA PnP support
options isapnp isapnp_reserve_irq=9,10,11,12,13

# ALSA native device support
alias char-major-116 snd
options snd snd_major=116 snd_cards_limit=2
alias snd-card-0 snd-gusclassic
alias snd-card-1 snd-sb16
options snd-gusclassic snd_index=1 snd_id="Gus" \
        snd_port=0x220 snd_irq=5 snd_dma1=6 snd_dma2=7
options snd-sb16 snd_index=2 snd_id="SB16"

# OSS/Lite setup
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-3 snd-pcm1-oss
alias sound-service-0-12 snd-pcm1-oss
alias sound-slot-1 snd-card-1
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-3 snd-pcm1-oss
alias sound-service-1-12 snd-pcm1-oss

-----

Complete example if two Gravis UltraSound Classic soundcards are installed
in the system:

----- /etc/conf.modules

# ALSA native device support
alias char-major-116 snd
options snd snd_major=116 snd_cards_limit=2
alias snd-card-0 snd-gusclassic
alias snd-card-1 snd-gusclassic
options snd-gusclassic snd_index=1,2 snd_id="Gus1","Gus2" \
        snd_port=0x220,0x240 snd_irq=5,7 snd_dma1=1,5 snd_dma2=3,6

# OSS/Lite setup
alias char-major-14 soundcore
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-3 snd-pcm1-oss
alias sound-service-0-12 snd-pcm1-oss
alias sound-slot-1 snd-card-1
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-3 snd-pcm1-oss
alias sound-service-1-12 snd-pcm1-oss

-----

ALSA PCM devices to OSS devices mapping
=======================================

/dev/snd/pcmC0D0  -> /dev/audio0 (/dev/audio) -> minor 4
/dev/snd/pcmC0D0  -> /dev/dsp0 (/dev/dsp)     -> minor 3
/dev/snd/pcmC0D1  -> /dev/adsp0 (/dev/adsp)   -> minor 12
/dev/snd/pcmC1D0  -> /dev/audio1              -> minor 4+16 = 20
/dev/snd/pcmC1D0  -> /dev/dsp1                -> minor 3+16 = 19
/dev/snd/pcmC1D1  -> /dev/adsp1               -> minor 12+16 = 28
/dev/snd/pcmC2D0  -> /dev/audio2              -> minor 4+32 = 36
/dev/snd/pcmC2D0  -> /dev/dsp2                -> minor 3+32 = 39
/dev/snd/pcmC2D1  -> /dev/adsp2               -> minor 12+32 = 44

The first number from /dev/snd/pcmC{X}D{Y} expression means soundcard number
and second means device number.

Proc interfaces (/proc/asound)
==============================

/proc/asound/#card#/pcm#o
-------------------------
  String "Playback erase" - erase all additional informations about OSS applications
  String "Playback <app_name> <fragments> <fragment_size> [<options>]"
  String "Record erase" - erase all additional informations about OSS applications
  String "Record <app_name> <fragments> <fragment_size> [<options>]"

   <app_name> - name of application with (highter priority) or without path
   <fragments> - number of fragments or zero if auto
   <fragment_size> - size of fragment in bytes or zero if auto
   <options> - optional parameters
	  - WR_ONLY - if application tries open pcm device with O_RDWR
                      driver rewrites this to O_WRONLY (playback) - good
                      for Quake etc...

  Example: echo "Playback x11amp 128 16384" > /proc/asound/0/pcm0o
           echo "Playback squake 0 0 WR_ONLY" > /proc/asound/0/pcm0o

/proc/asound/#card#/sb16
------------------------
  String "Playback 8" -> driver will use always 8-bit DMA channel for playback.
  String "Playback 16" -> driver will use always 16-bit DMA channel for playback.
  String "Playback auto" (default) -> driver will use auto mode (first opened
  direction will use 16-bit DMA channel).
  String "Record 8" -> driver will use always 8-bit DMA channel for record.
  String "Record 16" -> driver will use always 16-bit DMA channel for record.
  String "Record auto" (default) -> driver will use auto mode (first opened
  direction will use 16-bit DMA channel).

  Example: echo "Record 16" > /proc/asound/0/sb16
