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


The ALSA driver replaces the OSS/Free driver. The OSS/Free driver is
present in current Linux kernels (2.2).  Since version 0.4.0, ALSA has
supported only 2.2+ kernels. The 2.0 kernels are no longer supported. You
must compile the kernel with sound support (you do not need to select
any of the other sound modules apart from sound support).

Before installing this driver, it will be helpful to read carefully
the documentation for insmod, modprobe, kmod and for the isapnp
module if you have an ISA PnP soundcard.


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

1) You must have full configured source for the Linux kernel which you
   want to use for the ALSA drivers. Note that ALSA drivers are part
   of the kernel, so there is necessary to resolve all symbol dependencies
   between the used kernel and ALSA driver code. Partly installed kernels
   (for example from distributor makers) can be unuseable for this action.
2) You must turn on sound support (soundcore module).
3) 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/Free 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.
   If you have kernel source code in another directory than /usr/src/linux,
   use --with-kernel=<kernel_directory>.
   Example: ./configure --with-isapnp=yes --with-debug=full
4) Run 'make install'.
5) Run the './snddevices' script to create new sound devices in /dev directory.
   Skip this step, if you have a kernel with the DEVFS support.
6) Edit your /etc/modules.conf (see the kmod support section below).
7) Run 'modprobe snd-xxxx' where xxxx is the name of your card.
   Note: If you have a ISA PnP soundcard you need to first run the isapnp
         program from isapnptools package to initialize your
         soundcard. You can also use the native ISA PnP support by
         using the --with-isapnp=yes configuration switch, in which
	 case you do not need the isapnptools package.

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

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

Note: This document notices the /etc/modules.conf file. Many current
      distributions uses the old /etc/conf.modules file. Both names are
      valid.


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

1) You can check your soundcard setup again and read this install file
   (module parameters) carefully.
2) If you have got ISA PnP soundcard:
   - native ISA PnP support: is your setup in /proc/isapnp correct?
   - isapnptools: is configuration on isapnp.conf same as for the driver?
3) 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 some messages. If these messages do not help you, please
   create a new ticket in our bug reporting system.


Compilation from CVS sources
============================

You need GNU packages autoconf and automake installed in your system
to compile CVS sources of alsa-driver package.

For compilation you can use these commands:

	make ALSAKERNELDIR=../alsa-kernel all-deps
		(if the alsa-kernel-dir is really there)
	aclocal
	autoconf
	./configure
	make dep
	make

The included cvscompile script does this job for you.

Note: Some automake packages have missing aclocal program. Use newer version
      in the case.


Cross-compiling
===============

Use '--with-cross=prefix' parameter for the configure script.

Example:
  './configure --with-cross=arm-linux- --with-kernel=/home/ipaq/kernel/linux'.


Bug reporting system
====================

http://www.alsa-project.org/cgi-bin/bugs


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

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

    snd_major	- major # for sound driver
		- default is 116
    snd_cards_limit
		- specifies card limit # (1-8)
		- good for kmod support if you do not want to 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	- 0-7 - index (slot #) for soundcard
                - if not set or -1, first free index (slot #) 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 by applications for identification
		  of card if user does not want identify card with index number
    snd_enable  - enable card (only first card is enabled by default)

  Module snd-dummy.o
  ------------------

    Module for the dummy soundcard. This soundcard doesn't do any output
    or input, but you may use this module for any application which
    requires a soundcard (like RealPlayer).

  Module snd-es1688.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)

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

  Module snd-es18xx.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_dma2	- first DMA # for ES-18xx chip (0,1,3)
    snd_isapnp  - ISA PnP detection - 0 = disable, 1 = enable (default)

    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_dma2	- DMA # for GF1 chip (1,3,5,6,7,-1=disable)
    snd_joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V)
    snd_voices  - GF1 voices limit (14-32)
    snd_pcm_voices - reserved PCM voices

    Module supports up to 8 cards and autoprobe.

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

    Module for Gravis UltraSound Extreme (Synergy ViperMax) 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_gf1_irq	- IRQ # for GF1 chip (3,5,9,11,12,15)
    snd_mpu_irq	- IRQ # for MPU-401 port (5,7,9,10)
    snd_dma8	- DMA # for ES-1688 chip (0,1,3)
    snd_dma1	- DMA # for GF1 chip (1,3,5,6,7)
    snd_joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V)
    snd_voices  - GF1 voices limit (14-32)
    snd_pcm_voices - reserved PCM voices

    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_dma2	- DMA # for GF1 chip (1,3,5,6,7,-1=disable)
    snd_joystick_dac - 0 to 31, (0.59V-4.52V or 0.389V-2.98V)
    snd_voices  - GF1 voices limit (14-32)
    snd_pcm_voices - reserved PCM voices

    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_dma2	- DMA # for InterWave chip (0,1,3,5,6,7,-1=disable)
    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)
    snd_pcm_voices - reserved PCM voices for the synthesizer (default 2)
    snd_effect  - 1 = InterWave effects enable (default 0);
                  requires 8 voices

    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_dma2	- DMA # for InterWave chip (0,1,3,5,6,7,-1=disable)
    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)
    snd_pcm_voices - reserved PCM voices for the synthesizer (default 2)
    snd_effect  - 1 = InterWave effects enable (default 0);
                  requires 8 voices

    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)

    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 - base port # for EMU8000 synthesizer (0x620,0x640,0x660)
                   (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_dma16	- 16-bit DMA # for SB DSP 4.x chip (5,6,7)
    snd_mic_agc	- Mic Auto-Gain-Control - 0 = disable, 1 = enable (default)
    snd_csp	- ASP/CSP chip support - 0 = disable (default), 1 = enable
    snd_isapnp	- ISA PnP detection - 0 = disable, 1 = enable (default)
    
    Module supports up to 8 cards, autoprobe and ISA PnP.

    Note: To use Vibra16X cards in 16-bit half duplex mode, you must
          disable 16bit DMA with snd_dma16 = -1 module parameter.
          Also, all Sound Blaster 16 type cards can operate in 16-bit
          half duplex mode through 8-bit DMA channel by disabling their
          16-bit DMA channel.
    
  Module snd-opl3sa2.o
  --------------------

    Module for Yamaha OPL3-SA2/SA3 soundcards.

    snd_port	- control port # for OPL3-SA chip (0x370)
    snd_sb_port  - SB port # for OPL3-SA chip (0x220,0x240)
    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_dma2	- second DMA # for Yamaha OPL3-SA chip (0,1,3), -1 = disable
    snd_isapnp  - ISA PnP detection - 0 = disable, 1 = enable (default)
    
    Module supports up to 8 cards and ISA PnP. This module does not support
    autoprobe (if ISA PnP is not used) thus all ports must be specified!!!
    
  Module snd-opti92x-ad1848.o
  ---------------------------

    Module for soundcards based on OPTi 82c92x and Analog Devices AD1848 chips.
    Module works with OAK Mozart cards as well.
    
    snd_port      - port # for WSS chip (0x530,0xe80,0xf40,0x604)
    snd_mpu_port  - port # for MPU-401 UART (0x300,0x310,0x320,0x330)
    snd_fm_port   - port # for OPL3 device (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)

    This module supports only one card, autoprobe and PnP.

  Module snd-opti92x-cs4231.o
  ---------------------------

    Module for soundcards based on OPTi 82c92x and Crystal CS4231 chips.
    
    snd_port      - port # for WSS chip (0x530,0xe80,0xf40,0x604)
    snd_mpu_port  - port # for MPU-401 UART (0x300,0x310,0x320,0x330)
    snd_fm_port   - port # for OPL3 device (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_dma2      - second DMA # for WSS chip (0,1,3)

    This module supports only one card, autoprobe and PnP.

  Module snd-opti93x.o
  --------------------

    Module for soundcards based on OPTi 82c93x chips.
    
    snd_port      - port # for WSS chip (0x530,0xe80,0xf40,0x604)
    snd_mpu_port  - port # for MPU-401 UART (0x300,0x310,0x320,0x330)
    snd_fm_port   - port # for OPL3 device (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_dma2      - second DMA # for WSS chip (0,1,3)

    This module supports only one card, autoprobe and PnP.

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

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

    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-ens1370.o
  --------------------

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

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

    Module for Ensoniq AudioPCI ES1371 PCI soundcards.
			* SoundBlaster PCI 64
			* SoundBlaster PCI 128
			* SoundBlaster Vibra PCI

    Module supports up to 8 cards and autoprobe.
    
  Module snd-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)
    
    Module supports up to 8 cards. This module does not support autoprobe
    thus main port must be specified!!! Other ports are optional.
    
  Module snd-azt2320.o
  --------------------

    Module for soundcards based on Aztech System AZT2320 chip (PnP only).

    snd_port	- port # for AZT2320 chip (PnP setup)
    snd_wss_port - port # for WSS (PnP setup)
    snd_mpu_port - port # for MPU-401 UART (PnP setup)
    snd_fm_port - FM port # for AZT2320 chip (PnP setup)
    snd_irq	- IRQ # for AZT2320 (WSS) chip (PnP setup)
    snd_mpu_irq - IRQ # for MPU-401 UART (PnP setup)
    snd_dma1	- 1st DMA # for AZT2320 (WSS) chip (PnP setup)
    snd_dma2	- 2nd DMA # for AZT2320 (WSS) chip (PnP setup)
    
    Module supports up to 8 cards, PnP and autoprobe.
    
  Module snd-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_dma2	- second DMA # for CS4231 chip
    
    Module supports up to 8 cards. This module does not support autoprobe
    thus main port must be specified!!! Other ports are optional.
    
  Module snd-cs4232.o
  -------------------

    Module for soundcards based on CS4232/CS4232A chips.

    snd_port	- port # for CS4232 chip (PnP setup - 0x534)
    snd_cport   - control port # for CS4232 chip (PnP setup - 0x120,0x210,0xf00)
    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_dma2	- second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
    snd_isapnp  - ISA PnP detection - 0 = disable, 1 = enable (default)
    
    Module supports up to 8 cards. This module does not support autoprobe
    thus main port must be specified!!! Other ports are optional.
    
  Module snd-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,0x210,0xf00)
    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_dma2	- second DMA # for Yamaha CS4232 chip (0,1,3), -1 = disable
    snd_isapnp  - ISA PnP detection - 0 = disable, 1 = enable (default)
    
    Module supports up to 8 cards. This module does not support autoprobe
    (if ISA PnP is not used) thus main port and control port must be
    specified!!! Other ports are optional.

  Module snd-cs46xx.o
  -------------------

    Module for PCI soundcards based on CS4610/CS4612/CS4614/CS4615/CS4622/
				       CS4624/CS4630/CS4280.

    snd_external_amp     - Force to enable external amplifer.
    snd_thinkpad         - Force to enable Thinkpad's CLKRUN control.

    Module supports up to 8 cards and autoprobe.
    Usually external amp and CLKRUN controls are detected automatically
    from PCI sub vendor/device ids.  If they don't work, give the options
    above explicitly.
    
  Module snd-serial.o
  -------------------

    Module for UART16550A serial MIDI ports.

    snd_port	- port # for UART16550A chip
    snd_irq	- IRQ # for UART16550A chip, -1 = poll mode
    snd_speed	- speed in bauds (9600,19200,38400,57600,115200)
		  38400 = default
    snd_base	- base for divisor in bauds (57600,115200,230400,460800)
		  115200 = default
    snd_outs	- number of MIDI ports in a serial port (1-4)
		  1 = default
    snd_adaptor - Type of adaptor.
                  0 = Soundcanvas, 1 = MS-124T, 2 = MS-124W S/A, 3 = MS-124W M/B
    
    Module supports up to 8 cards. This module does not support autoprobe
    thus the main port must be specified!!! Other options are optional.

  Module snd-trident.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_pcm_channels	  - max channels (voices) reserved for PCM
    snd_wavetable_size	  - max wavetable size in kB (4-?kb)

    Module supports up to 8 cards and autoprobe.

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

    Module for ForteMedia FM801 based PCI soundcards.

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

    Module for soundcards based on ESS ES968 chip (PnP only).

    snd_port	- port # for ES968 (SB8) chip (PnP setup)
    snd_irq	- IRQ # for ES968 (SB8) chip (PnP setup)
    snd_dma1	- DMA # for ES968 (SB8) chip (PnP setup)
    
    Module supports up to 8 cards, PnP and autoprobe.
    
  Module snd-als100.o
  -------------------

    Module for soundcards based on Avance Logic ALS100/ALS120 chip.

    snd_port	- port # for ALS100 (SB16) chip (PnP setup)
    snd_irq	- IRQ # for ALS100 (SB16) chip (PnP setup)
    snd_dma8	- 8-bit DMA # for ALS100 (SB16) chip (PnP setup)
    snd_dma16	- 16-bit DMA # for ALS100 (SB16) chip (PnP setup)
    snd_mpu_port - port # for MPU-401 UART (PnP setup)
    snd_mpu_irq	- IRQ # for MPU-401 (PnP setup)
    snd_fm_port - port # for OPL3 FM (PnP setup)
    
    Module supports up to 8 cards, autoprobe and PnP.

  Module snd-als4000.o
  --------------------

    Module for soundcards based on Avance Logic ALS4000 PCI chip.

    snd_joystick_port - port # for legacy joystick support.
                        default: 0x200 for the 1st card.
                        0 = disabled
    
    Module supports up to 8 cards, autoprobe and PnP.

  Module snd-es1938.o
  -------------------

    Module for soundcards based on ESS Solo-1 (ES1938,ES1946) chips.

    Module supports up to 8 cards and autoprobe.

  Module snd-es1968.o
  -------------------

    Module for soundcards based on ESS Maestro-1/2/2E (ES1968/ES1978) chips.

    snd_total_bufsize	 - total buffer size in kB (1-4096kB)
    snd_pcm_substreams_p - playback channels (1-8, default=2)
    snd_pcm_substreams_c - capture channels (1-8, default=0)
    snd_clock		 - clock (0 = auto-detection)

    Module supports up to 8 cards and autoprobe.

  Module snd-cmi8330.o
  --------------------

    Module for soundcards based on C-Media CMI8330 chips.

    snd_wssport	- port # for CMI8330 chip (WSS)
    snd_wssirq	- IRQ # for CMI8330 chip (WSS)
    snd_wssdma	- first DMA # for CMI8330 chip (WSS)
    snd_sbport  - port # for CMI8330 chip (SB16)
    snd_sbirq   - IRQ # for CMI8330 chip (SB16)
    snd_sbdma8  - 8bit DMA # for CMI8330 chip (SB16)
    snd_sbdma16 - 16bit DMA # for CMI8330 chip (SB16)

    Module supports up to 8 cards and autoprobe.

  Module snd-emu10k1.o
  --------------------

    Module for EMU10K1 based PCI soundcards.
			* Sound Blaster Live!
			* Sound Blaster PCI 512
			* Emu APS (partially supported)

    snd_extin   - bitmap of available external inputs for FX8010 (see bellow)
    snd_extout  - bitmap of available external outputs for FX8010 (see bellow)
    snd_seq_ports - allocated sequencer ports (4 by default)
    snd_max_synth_voices - limit of voices used for wavetable (64 by default)
    snd_max_buffer_size  - specifies the maximum size of wavetable/pcm buffers
                           given in MB unit.  Default value is 128.
    snd_enable_ir - enable IR

    Module supports up to 8 cards and autoprobe.

    Input & Output configurations 			[snd_extin/snd_extout]
	* Creative Card wo/Digital out			[0x0003/0x1f03]
	* Creative Card w/Digital out			[0x0003/0x1f0f]
	* Creative Card w/Digital CD in			[0x000f/0x1f0f]
	* Creative Card wo/Digital out + LiveDrive	[0x3fc3/0x1fc3]
	* Creative Card w/Digital out + LiveDrive	[0x3fc3/0x1fcf]
	* Creative Card w/Digital CD in + LiveDrive	[0x3fcf/0x1fcf]
	* Creative Card wo/Digital out + Digital I/O 2  [0x0fc3/0x1f0f]
	* Creative Card w/Digital out + Digital I/O 2	[0x0fc3/0x1f0f]
	* Creative Card w/Digital CD in + Digital I/O 2	[0x0fcf/0x1f0f]
        * Creative Card 5.1/w Digital out + LiveDrive	[0x3fc3/0x1fff]
    
  Module snd-ice1712.o
  --------------------

    Module for Envy24 (ICE1712) based PCI soundcards.
			* MidiMan M Audio Delta 1010
			* MidiMan M Audio Delta DiO 2496
			* MidiMan M Audio Delta 66
			* MidiMan M Audio Delta 44
			* MidiMan M Audio Audiophile 2496
                        * TerraTec EWS 88MT
                        * TerraTec EWS 88D
                        * TerraTec EWX 24/96

    snd_omni	  - Omni I/O support for MidiMan M-Audio Delta44/66

    Module supports up to 8 cards and autoprobe. Note: The consumer part
    is not used with all Envy24 based cards (for example in the MidiMan Delta
    serie).

  Module snd-ad1816a.o
  --------------------

    Module for soundcards based on Analog Devices AD1816A/AD1815 chips.

    snd_port	  - port # for AD1816A chip (PnP setup)
    snd_mpu_port  - port # for MPU-401 UART (PnP setup)
    snd_fm_port   - port # for OPL3 (PnP setup)
    snd_irq	  - IRQ # for AD1816A chip (PnP setup)
    snd_mpu_irq   - IRQ # for MPU-401 UART (PnP setup)
    snd_dma1	  - first DMA # for AD1816A chip (PnP setup)
    snd_dma2	  - second DMA # for AD1816A chip (PnP setup)
    
    Module supports up to 8 cards, autoprobe and PnP.
    
  Module snd-intel8x0.o
  ---------------------

    Module for AC'97 motherboards from Intel.
			* Intel i810/810E, i815, i820, i830, i840, MX440
			* SiS 7012 (SiS 735)
			* NVidia NForce

    snd_ac97_clock	  - AC'97 codec clock base (0 = auto-detect)

    Module supports autoprobe and multiple bus-master chips (max 8).
    Note: the latest driver supports auto-detection of chip clock.
    if you still encounter too fast playback, specify the clock
    explicitly via the module option "snd_ac97_clock=41194".
    
  Module snd-via686a.o
  --------------------

    Module for AC'97 motherboards based on VIA 82C686A/686B (south) bridge.

    snd_mpu_port         - 0x300,0x310,0x320,0x330, otherwise obtain BIOS setup
    snd_ac97_clock	 - AC'97 codec clock base (default 48000Hz)

    Module supports autoprobe and multiple bus-master chips (max 8).
    Note: on some SMP motherboards like MSI 694D the interrupts might
          not be generated properly.  In such a case, please try to
          set the SMP (or MPS) version on BIOS to 1.1 instead of
          default value 1.4.  Then the interrupt number will be
          assigned under 15. You might also upgrade your BIOS.
    
  Module snd-via8233.o
  --------------------

    Module for AC'97 motherboards based on VIA 8233 (south) bridge.

    snd_ac97_clock	 - AC'97 codec clock base (default 48000Hz)

    Module supports autoprobe and multiple bus-master chips (max 8).
    
  Module snd-cmipci.o
  -------------------

    Module for C-Media CMI8338 and 8738 PCI soundcards.

    snd_mpu_port         - 0x300 (default),0x310,0x320,0x330, -1 (diable)
    snd_fm_port          - 0x388 (default), -1 (disable)

    Module supports autoprobe and multiple chips (max 8).
    
  Module snd-ymfpci.o
  -------------------

    Module for Yamaha PCI chips (YMF72x, YMF74x & YMF75x).

    snd_mpu_port          - 0x300,0x330,0x332,0x334, -1 (disable) by default
    snd_fm_port           - 0x388,0x398,0x3a0,0x3a8, -1 (disable) by default

    Module supports autoprobe and multiple chips (max 8).
    
  Module snd-mpu401.o
  -------------------

    Module for MPU-401 UART devices.

    snd_port		- port number or -1 (disable)
    snd_irq		- IRQ number or -1 (disable)

    Module supports multiple devices (max 8).
    
  Module snd-maestro3.o
  ---------------------

    Module for Allegro/Maestro3 chips

    snd_external_amp     - enable external amp (enabled by default)
    snd_amp_gpio         - GPIO pin number for external amp (0-15) or
                           -1 for default pin (8 for allegro, 1 for
                           others) 

    Module supports autoprobe and multiple chips (max 8).
    Note: the binding of amplifier is dependent on hardware.
    If there is no sound even though all channels are unmuted, try to
    specify other gpio connection via snd_amp_gpio option. 
    For example, a Panasonic notebook needed "snd_amp_gpio=0x0d"
    option.

  Module snd-nm256.o
  ------------------

    Module for NeoMagic NM256AV/ZX chips

    snd_playback_bufsize - max playback frame size in kB (4-128kB)
    snd_capture_bufsize  - max capture frame size in kB (4-128kB)
    snd_force_ac97       - 0 or 1 (disabled by default)
    snd_buffer_top       - specify buffer top address
    snd_use_cache        - 0 or 1 (disabled by default)
    snd_vaio_hack        - alias snd_buffer_top=0x25a800

    Module supports autoprobe and multiple chips (max 8).
    Note: on some notebooks the buffer address cannot be detected
    automatically, or causes hang-up during initialization.
    In such a case, specify the buffer top address explicity via
    snd_buffer_top option.
    For example,
      Sony F250: snd_buffer_top=0x25a800
      Sony F270: snd_buffer_top=0x272800
    The driver supports only ac97 codec.  It's possible to force
    to initialize/use ac97 although it's not detected.  In such a
    case, use snd_force_ac97=1 option.

  Module snd-ali5451.o
  --------------------

    Module for ALi M5451

    snd_pcm_channels     - Number of hardware channels assigned for PCM

    Module supports autoprobe and multiple chips (max 8).

  Module snd-powermac.o (on ppc only)
  -----------------------------------

    Module for PowerMac, iMac and iBook on-board soundchips

    snd_enable_beep     - enable beep using PCM (enabled as default)

    Module supports autoprobe a chip.
    Note: the driver may have problems regarding endianess.


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

The modprobe program must know which modules are used for the
device major numbers.
Native ALSA devices have got default number 116. Thus a line like
'alias char-major-116 snd' must be added to /etc/modules.conf. If you have 
compiled the ALSA driver with the OSS/Free emulation code, then you
will need to add lines as explained below:

The ALSA driver uses soundcore multiplexer for 2.2+ kernels and OSS compatible
devices. You should add line like 'alias char-major-14 soundcore'.

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

----- /etc/modules.conf

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

----- /etc/modules.conf

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/modules.conf

# ALSA portion
alias snd-card-0 snd-interwave
alias snd-card-1 snd-ens1371
# OSS/Free portion
alias sound-slot-0 snd-card-0
alias sound-slot-1 snd-card-1

----- /etc/modules.conf

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

----- /etc/modules.conf

# OSS/Free portion - card #1
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
# OSS/Free portion - card #2
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-3 snd-pcm-oss
alias sound-service-1-12 snd-pcm-oss

----- /etc/modules.conf

A complete example for Gravis UltraSound PnP soundcard:

----- /etc/modules.conf

# ISA PnP support (don't use IRQs 9,10,11,12,13)
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=0 snd_id="GusPnP"

# OSS/Free 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-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss

-----

A complete example if you want to use more soundcards in one machine
(the configuration below is for Sound Blaster 16 and Gravis UltraSound Classic):

----- /etc/modules.conf

# ISA PnP support (don't use IRQs 9,10,11,12,13)
# it's only an example to reserve some IRQs for another hardware
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=0 snd_id="Gus" \
        snd_port=0x220 snd_irq=5 snd_dma1=6 snd_dma2=7
options snd-sb16 snd_index=1 snd_id="SB16"

# OSS/Free 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-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
alias sound-slot-1 snd-card-1
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-3 snd-pcm-oss
alias sound-service-1-12 snd-pcm-oss

-----

A complete example, two Gravis UltraSound Classic soundcards are installed
in the system:

----- /etc/modules.conf

# 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=0,1 snd_id="Gus1","Gus2" \
        snd_port=0x220,0x240 snd_irq=5,7 snd_dma1=1,5 snd_dma2=3,6

# OSS/Free 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-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
alias sound-slot-1 snd-card-1
alias sound-service-1-0 snd-mixer-oss
alias sound-service-1-3 snd-pcm-oss
alias sound-service-1-12 snd-pcm-oss

-----

If you want to autoclean your modules, you should put below line to your
/etc/crontab:

*/10 * * * *   root  /sbin/modprobe -rs snd-card-0 snd-card-1; /sbin/rmmod -as

You may also want to extend the soundcard list to follow your requirements.


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.


DEVFS support
=============

The ALSA driver fully supports the devfs extension.
You should add lines below to your devfsd.conf file:

LOOKUP snd MODLOAD ACTION snd
REGISTER ^sound/.* PERMISSIONS root.audio 660
REGISTER ^snd/.* PERMISSIONS root.audio 660

Warning: These lines assume that you have the audio group in your system.
         Otherwise replace audio word with another group name (root for
         example).


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

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

   <app_name> - name of application with (higher 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
	  - disable   the application tries to open a pcm device for
		      this channel but does not want to use it.
		      (Cause a bug or mmap needs)
		      It's good for Quake etc...
	  - direct    don't use plugins
	  - block     force block mode (rvplayer)
	  - non-block force non-block mode

  Example: echo "x11amp 128 16384" > /proc/asound/card0/pcm0p/oss
           echo "squake 0 0 disable" > /proc/asound/card0/pcm0c/oss
	   echo "rvplayer 0 0 block" > /proc/asound/card0/pcm0p/oss
