# ALSA PCI drivers

menu "PCI devices"
	depends on SND!=n && PCI

config SND_AD1889
	tristate "Analog Devices AD1889"
	depends on SND
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the integrated AC97 sound
	  device found in particular on the Hewlett-Packard [BCJ]-xxx0
	  class PA-RISC workstations, using the AD1819 codec.

	  To compile this as a module, choose M here: the module
	  will be called snd-ad1889.

config SND_ALS300
	tristate "Avance Logic ALS300/ALS300+"
	depends on SND
	select SND_PCM
	select SND_AC97_CODEC
	select SND_OPL3_LIB
	help
	  Say 'Y' or 'M' to include support for Avance Logic ALS300/ALS300+

	  To compile this driver as a module, choose M here: the module
	  will be called snd-als300

config SND_ALS4000
	tristate "Avance Logic ALS4000"
	depends on SND && ISA_DMA_API
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	select SND_SB_COMMON
	help
	  Say Y here to include support for soundcards based on Avance Logic
	  ALS4000 chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-als4000.

config SND_ALI5451
	tristate "ALi M5451 PCI Audio Controller"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the integrated AC97 sound
	  device on motherboards using the ALi M5451 Audio Controller
	  (M1535/M1535D/M1535+/M1535D+ south bridges).  Newer chipsets
	  use the "Intel/SiS/nVidia/AMD/ALi AC97 Controller" driver.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-ali5451.

config SND_ATIIXP
	tristate "ATI IXP AC97 Controller"
	depends on SND
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the integrated AC97 sound
	  device on motherboards with ATI chipsets (ATI IXP 150/200/250/
	  300/400).

	  To compile this driver as a module, choose M here: the module
	  will be called snd-atiixp.

config SND_ATIIXP_MODEM
	tristate "ATI IXP Modem"
	depends on SND
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the integrated MC97 modem on
	  motherboards with ATI chipsets (ATI IXP 150/200/250).

	  To compile this driver as a module, choose M here: the module
	  will be called snd-atiixp-modem.

config SND_AU8810
	tristate "Aureal Advantage"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for Aureal Advantage soundcards.

	  Supported features: Hardware Mixer, SRC, EQ and SPDIF output.
	  3D support code is in place, but not yet useable. For more info,
	  email the ALSA developer list, or <mjander@users.sourceforge.net>.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-au8810.

config SND_AU8820
	tristate "Aureal Vortex"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for Aureal Vortex soundcards.

	  Supported features: Hardware Mixer and SRC. For more info, email
	  the ALSA developer list, or <mjander@users.sourceforge.net>.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-au8820.

config SND_AU8830
	tristate "Aureal Vortex 2"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for Aureal Vortex 2 soundcards.

	  Supported features: Hardware Mixer, SRC, EQ and SPDIF output.
	  3D support code is in place, but not yet useable. For more info,
	  email the ALSA developer list, or <mjander@users.sourceforge.net>.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-au8830.

config SND_AZT3328
	tristate "Aztech AZF3328 / PCI168 (EXPERIMENTAL)"
	depends on SND && EXPERIMENTAL
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for Aztech AZF3328 (PCI168)
	  soundcards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-azt3328.

config SND_BT87X
	tristate "Bt87x Audio Capture"
	depends on SND
	select SND_PCM
	help
	  If you want to record audio from TV cards based on
	  Brooktree Bt878/Bt879 chips, say Y here and read
	  <file:Documentation/sound/alsa/Bt87x.txt>.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-bt87x.

config SND_BT87X_OVERCLOCK
	bool "Bt87x Audio overclocking"
	depends on SND_BT87X
	help
	  Say Y here if 448000 Hz isn't enough for you and you want to
	  record from the analog input with up to 1792000 Hz.

	  Higher sample rates won't hurt your hardware, but audio
	  quality may suffer.

config SND_CA0106
	tristate "SB Audigy LS / Live 24bit"
	depends on SND
	select SND_AC97_CODEC
	select SND_RAWMIDI
	help
	  Say Y here to include support for the Sound Blaster Audigy LS
	  and Live 24bit.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-ca0106.

config SND_CMIPCI
	tristate "C-Media 8338, 8738, 8768, 8770"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  If you want to use soundcards based on C-Media CMI8338, CMI8738,
	  CMI8768 or CMI8770 chips, say Y here and read
	  <file:Documentation/sound/alsa/CMIPCI.txt>.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-cmipci.

config SND_OXYGEN_LIB
        tristate
	depends on SND
	select SND_PCM
	select SND_MPU401_UART

config SND_OXYGEN
	tristate "C-Media 8788 (Oxygen)"
	depends on SND
	select SND_OXYGEN_LIB
	help
	  Say Y here to include support for sound cards based on the
	  C-Media CMI8788 (Oxygen HD Audio) chip:
	   * Asound A-8788
	   * AuzenTech X-Meridian
	   * Bgears b-Enspirer
	   * Club3D Theatron DTS
	   * HT-Omega Claro
	   * Razer Barracuda AC-1
	   * Sondigo Inferno
	   * TempoTec HIFIER

	  To compile this driver as a module, choose M here: the module
	  will be called snd-oxygen.

config SND_CS4281
	tristate "Cirrus Logic (Sound Fusion) CS4281"
	depends on SND
	select SND_OPL3_LIB
	select SND_RAWMIDI
	select SND_AC97_CODEC
	help
	  Say Y here to include support for Cirrus Logic CS4281 chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-cs4281.

config SND_CS46XX
	tristate "Cirrus Logic (Sound Fusion) CS4280/CS461x/CS462x/CS463x"
	depends on SND
	select SND_RAWMIDI
	select SND_AC97_CODEC
	help
	  Say Y here to include support for Cirrus Logic CS4610/CS4612/
	  CS4614/CS4615/CS4622/CS4624/CS4630/CS4280 chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-cs46xx.

config SND_CS46XX_NEW_DSP
	bool "Cirrus Logic (Sound Fusion) New DSP support"
	depends on SND_CS46XX
	default y
	help
	  Say Y here to use a new DSP image for SPDIF and dual codecs.

	  This works better than the old code, so say Y.

config SND_CS5530
	tristate "CS5530 Audio"
	depends on SND && ISA_DMA_API
	select SND_SB16_DSP
	help
	  Say Y here to include support for audio on Cyrix/NatSemi CS5530 chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-cs5530.

config SND_CS5535AUDIO
	tristate "CS5535/CS5536 Audio"
	depends on SND && X86 && !X86_64
	select SND_PCM
	select SND_AC97_CODEC
	help
	  Say Y here to include support for audio on CS5535 chips. It is
	  referred to as NS CS5535 IO or AMD CS5535 IO companion in
	  various literature. This driver also supports the CS5536 audio
	  device. However, for both chips, on certain boards, you may
	  need to use ac97_quirk=hp_only if your board has physically
	  mapped headphone out to master output. If that works for you,
	  send lspci -vvv output to the mailing list so that your board
	  can be identified in the quirks list.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-cs5535audio.

config SND_DARLA20
	tristate "(Echoaudio) Darla20"
	depends on SND
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Darla.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-darla20

config SND_GINA20
	tristate "(Echoaudio) Gina20"
	depends on SND
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Gina.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-gina20

config SND_LAYLA20
	tristate "(Echoaudio) Layla20"
	depends on SND
	select FW_LOADER
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Layla.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-layla20

config SND_DARLA24
	tristate "(Echoaudio) Darla24"
	depends on SND
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Darla24.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-darla24

config SND_GINA24
	tristate "(Echoaudio) Gina24"
	depends on SND
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Gina24.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-gina24

config SND_LAYLA24
	tristate "(Echoaudio) Layla24"
	depends on SND
	select FW_LOADER
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Layla24.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-layla24

config SND_MONA
	tristate "(Echoaudio) Mona"
	depends on SND
	select FW_LOADER
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Mona.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-mona

config SND_MIA
	tristate "(Echoaudio) Mia"
	depends on SND
	select FW_LOADER
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Mia and Mia-midi.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-mia

config SND_ECHO3G
	tristate "(Echoaudio) 3G cards"
	depends on SND
	select FW_LOADER
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Gina3G and Layla3G.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-echo3g

config SND_INDIGO
	tristate "(Echoaudio) Indigo"
	depends on SND
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Indigo.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-indigo

config SND_INDIGOIO
	tristate "(Echoaudio) Indigo IO"
	depends on SND
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Indigo IO.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-indigoio

config SND_INDIGODJ
	tristate "(Echoaudio) Indigo DJ"
	depends on SND
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Indigo DJ.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-indigodj

config SND_EMU10K1
	tristate "Emu10k1 (SB Live!, Audigy, E-mu APS)"
	depends on SND
	select FW_LOADER
	select SND_HWDEP
	select SND_RAWMIDI
	select SND_AC97_CODEC
	help
	  Say Y to include support for Sound Blaster PCI 512, Live!,
	  Audigy and E-mu APS (partially supported) soundcards.

	  The confusing multitude of mixer controls is documented in
	  <file:Documentation/sound/alsa/SB-Live-mixer.txt> and
	  <file:Documentation/sound/alsa/Audigy-mixer.txt>.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-emu10k1.

config SND_EMU10K1X
	tristate "Emu10k1X (Dell OEM Version)"
	depends on SND
	select SND_AC97_CODEC
	select SND_RAWMIDI
	help
	  Say Y here to include support for the Dell OEM version of the
	  Sound Blaster Live!.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-emu10k1x.

config SND_ENS1370
	tristate "(Creative) Ensoniq AudioPCI 1370"
	depends on SND
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say Y here to include support for Ensoniq AudioPCI ES1370 chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-ens1370.

config SND_ENS1371
	tristate "(Creative) Ensoniq AudioPCI 1371/1373"
	depends on SND
	select SND_RAWMIDI
	select SND_AC97_CODEC
	help
	  Say Y here to include support for Ensoniq AudioPCI ES1371 chips and
	  Sound Blaster PCI 64 or 128 soundcards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-ens1371.

config SND_ES1938
	tristate "ESS ES1938/1946/1969 (Solo-1)"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for soundcards based on ESS Solo-1
	  (ES1938, ES1946, ES1969) chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-es1938.

config SND_ES1968
	tristate "ESS ES1968/1978 (Maestro-1/2/2E)"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for soundcards based on ESS Maestro
	  1/2/2E chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-es1968.

config SND_FM801
	tristate "ForteMedia FM801"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for soundcards based on the ForteMedia
	  FM801 chip.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-fm801.

config SND_FM801_TEA575X_BOOL
	bool "ForteMedia FM801 + TEA5757 tuner"
	depends on SND_FM801
	help
	  Say Y here to include support for soundcards based on the ForteMedia
	  FM801 chip with a TEA5757 tuner connected to GPIO1-3 pins (Media
	  Forte SF256-PCS-02) into the snd-fm801 driver.

	  This will enable support for the old V4L1 API.

config SND_FM801_TEA575X
	tristate
	depends on SND_FM801_TEA575X_BOOL
	default SND_FM801
	select VIDEO_V4L1
	select VIDEO_DEV

config SND_HDA_INTEL
	tristate "Intel HD Audio"
	depends on SND
	select SND_PCM
	help
	  Say Y here to include support for Intel "High Definition
	  Audio" (Azalia) motherboard devices.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-hda-intel.

config SND_HDA_HWDEP
	bool "Build hwdep interface for HD-audio driver"
	depends on SND_HDA_INTEL
	select SND_HWDEP
	help
	  Say Y here to build a hwdep interface for HD-audio driver.
	  This interface can be used for out-of-band communication
	  with codecs for debugging purposes.

config SND_HDA_CODEC_REALTEK
	bool "Build Realtek HD-audio codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include Realtek HD-audio codec support in
	  snd-hda-intel driver, such as ALC880.

config SND_HDA_CODEC_ANALOG
	bool "Build Analog Device HD-audio codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include Analog Device HD-audio codec support in
	  snd-hda-intel driver, such as AD1986A.

config SND_HDA_CODEC_SIGMATEL
	bool "Build IDT/Sigmatel HD-audio codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include IDT (Sigmatel) HD-audio codec support in
	  snd-hda-intel driver, such as STAC9200.

config SND_HDA_CODEC_VIA
	bool "Build VIA HD-audio codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include VIA HD-audio codec support in
	  snd-hda-intel driver, such as VT1708.

config SND_HDA_CODEC_ATIHDMI
	bool "Build ATI HDMI HD-audio codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include ATI HDMI HD-audio codec support in
	  snd-hda-intel driver, such as ATI RS600 HDMI.

config SND_HDA_CODEC_CONEXANT
	bool "Build Conexant HD-audio codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include Conexant HD-audio codec support in
	  snd-hda-intel driver, such as CX20549.

config SND_HDA_CODEC_CMEDIA
	bool "Build C-Media HD-audio codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include C-Media HD-audio codec support in
	  snd-hda-intel driver, such as CMI9880.

config SND_HDA_CODEC_SI3054
	bool "Build Silicon Labs 3054 HD-modem codec support"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to include Silicon Labs 3054 HD-modem codec
	  (and compatibles) support in snd-hda-intel driver.

config SND_HDA_GENERIC
	bool "Enable generic HD-audio codec parser"
	depends on SND_HDA_INTEL
	default y
	help
	  Say Y here to enable the generic HD-audio codec parser
	  in snd-hda-intel driver.

config SND_HDA_POWER_SAVE
	bool "Aggressive power-saving on HD-audio"
	depends on SND_HDA_INTEL && EXPERIMENTAL
	help
	  Say Y here to enable more aggressive power-saving mode on
	  HD-audio driver.  The power-saving timeout can be configured
	  via power_save option or over sysfs on-the-fly.

config SND_HDA_POWER_SAVE_DEFAULT
	int "Default time-out for HD-audio power-save mode"
	depends on SND_HDA_POWER_SAVE
	default 0
	help
	  The default time-out value in seconds for HD-audio automatic
	  power-save mode.  0 means to disable the power-save mode.

config SND_HDSP
	tristate "RME Hammerfall DSP Audio"
	depends on SND
	select SND_HWDEP
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say Y here to include support for RME Hammerfall DSP Audio
	  soundcards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-hdsp.

config SND_HDSPM
	tristate "RME Hammerfall DSP MADI"
	depends on SND
	select SND_HWDEP
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say Y here to include support for RME Hammerfall DSP MADI
	  soundcards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-hdspm.

config SND_ICE1712
	tristate "ICEnsemble ICE1712 (Envy24)"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for soundcards based on the
	  ICE1712 (Envy24) chip.

	  Currently supported hardware is: M-Audio Delta 1010(LT),
	  DiO 2496, 66, 44, 410, Audiophile 24/96; Digigram VX442;
	  TerraTec EWX 24/96, EWS 88MT, 88D, DMX 6Fire, Phase 88;
	  Hoontech SoundTrack DSP 24/Value/Media7.1; Event EZ8.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-ice1712.

config SND_ICE1724
	tristate "ICE/VT1724/1720 (Envy24HT/PT)"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for soundcards based on
	  ICE/VT1724/1720 (Envy24HT/PT) chips.

	  Currently supported hardware is: AMP AUDIO2000; M-Audio
	  Revolution 7.1; TerraTec Aureon 5.1 Sky, 7.1 Space/Universe;
	  AudioTrak Prodigy 7.1; Pontis MS300; Albatron K8X800 Pro II;
	  Chaintech ZNF3-150/250.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-ice1724.

config SND_INTEL8X0
	tristate "Intel/SiS/nVidia/AMD/ALi AC97 Controller"
	depends on SND
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the integrated AC97 sound
	  device on motherboards with Intel/SiS/nVidia/AMD chipsets, or
	  ALi chipsets using the M5455 Audio Controller.  (There is a
	  separate driver for ALi M5451 Audio Controllers.)

	  To compile this driver as a module, choose M here: the module
	  will be called snd-intel8x0.

config SND_INTEL8X0M
	tristate "Intel/SiS/nVidia/AMD MC97 Modem"
	depends on SND
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the integrated MC97 modem on
	  motherboards with Intel/SiS/nVidia/AMD chipsets.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-intel8x0m.

config SND_KORG1212
	tristate "Korg 1212 IO"
	depends on SND
	select FW_LOADER if !SND_KORG1212_FIRMWARE_IN_KERNEL
	select SND_PCM
	help
	  Say Y here to include support for Korg 1212IO soundcards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-korg1212.

config SND_KORG1212_FIRMWARE_IN_KERNEL
	bool "In-kernel firmware for Korg1212 driver"
	depends on SND_KORG1212
	default y
	help
	  Say Y here to include the static firmware built in the kernel
	  for the Korg1212 driver.  If you choose N here, you need to
	  install the firmware files from the alsa-firmware package.

config SND_MAESTRO3
	tristate "ESS Allegro/Maestro3"
	depends on SND
	select FW_LOADER if !SND_MAESTRO3_FIRMWARE_IN_KERNEL
	select SND_AC97_CODEC
	help
	  Say Y here to include support for soundcards based on ESS Maestro 3
	  (Allegro) chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-maestro3.

config SND_MAESTRO3_FIRMWARE_IN_KERNEL
	bool "In-kernel firmware for Maestro3 driver"
	depends on SND_MAESTRO3
	default y
	help
	  Say Y here to include the static firmware built in the kernel
	  for the Maestro3 driver.  If you choose N here, you need to
	  install the firmware files from the alsa-firmware package.

config SND_MIXART
	tristate "Digigram miXart"
	depends on SND
	select SND_HWDEP
	select SND_PCM
	help
	  If you want to use Digigram miXart soundcards, say Y here and
	  read <file:Documentation/sound/alsa/MIXART.txt>.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-mixart.

config SND_NM256
	tristate "NeoMagic NM256AV/ZX"
	depends on SND
	select SND_AC97_CODEC
	help
	  Say Y here to include support for NeoMagic NM256AV/ZX chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-nm256.

config SND_PCXHR
	tristate "Digigram PCXHR"
	depends on SND
	select SND_PCM
	select SND_HWDEP
	help
	  Say Y here to include support for Digigram PCXHR boards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-pcxhr.

config SND_RIPTIDE
	tristate "Conexant Riptide"
	depends on SND
	select FW_LOADER
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say 'Y' or 'M' to include support for Conexant Riptide chip.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-riptide

config SND_RME32
	tristate "RME Digi32, 32/8, 32 PRO"
	depends on SND
	select SND_PCM
	help
	  Say Y to include support for RME Digi32, Digi32 PRO and
	  Digi32/8 (Sek'd Prodif32, Prodif96 and Prodif Gold) audio
	  devices.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-rme32.

config SND_RME96
	tristate "RME Digi96, 96/8, 96/8 PRO"
	depends on SND
	select SND_PCM
	help
	  Say Y here to include support for RME Digi96, Digi96/8 and
	  Digi96/8 PRO/PAD/PST soundcards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-rme96.

config SND_RME9652
	tristate "RME Digi9652 (Hammerfall)"
	depends on SND
	select SND_PCM
	help
	  Say Y here to include support for RME Hammerfall (RME
	  Digi9652/Digi9636) soundcards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-rme9652.

config SND_SIS7019
	tristate "SiS 7019 Audio Accelerator"
	depends on SND && X86 && !X86_64
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the SiS 7019 Audio Accelerator.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-sis7019.

config SND_SONICVIBES
	tristate "S3 SonicVibes"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for soundcards based on the S3
	  SonicVibes chip.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-sonicvibes.

config SND_TRIDENT
	tristate "Trident 4D-Wave DX/NX; SiS 7018"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for soundcards based on Trident
	  4D-Wave DX/NX or SiS 7018 chips.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-trident.

config SND_VIA82XX
	tristate "VIA 82C686A/B, 8233/8235 AC97 Controller"
	depends on SND
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the integrated AC97 sound
	  device on motherboards with VIA chipsets.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-via82xx.

config SND_VIA82XX_MODEM
	tristate "VIA 82C686A/B, 8233 based Modems"
	depends on SND
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the integrated MC97 modem on
	  motherboards with VIA chipsets.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-via82xx-modem.

config SND_VIRTUOSO
	tristate "Asus Virtuoso 200 (Xonar)"
	depends on SND
	select SND_OXYGEN_LIB
	help
	  Say Y here to include support for sound cards based on the
	  Asus AV200 chip, i.e., Xonar D2 and Xonar D2X.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-virtuoso.

config SND_VX222
	tristate "Digigram VX222"
	depends on SND
	select SND_VX_LIB
	help
	  Say Y here to include support for Digigram VX222 soundcards.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-vx222.

config SND_YMFPCI
	tristate "Yamaha YMF724/740/744/754"
	depends on SND
	select FW_LOADER if !SND_YMFPCI_FIRMWARE_IN_KERNEL
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_AC97_CODEC
	help
	  Say Y here to include support for Yamaha PCI audio chips -
	  YMF724, YMF724F, YMF740, YMF740C, YMF744, YMF754.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-ymfpci.

config SND_YMFPCI_FIRMWARE_IN_KERNEL
	bool "In-kernel firmware for YMFPCI driver"
	depends on SND_YMFPCI
	default y
	help
	  Say Y here to include the static firmware built in the kernel
	  for the YMFPCI driver.  If you choose N here, you need to
	  install the firmware files from the alsa-firmware package.

config SND_AC97_POWER_SAVE
	bool "AC97 Power-Saving Mode"
	depends on SND_AC97_CODEC && EXPERIMENTAL
	default n
	help
	  Say Y here to enable the aggressive power-saving support of
	  AC97 codecs.  In this mode, the power-mode is dynamically
	  controlled at each open/close.

	  The mode is activated by passing power_save=1 option to
	  snd-ac97-codec driver.  You can toggle it dynamically over
	  sysfs, too.

config SND_AC97_POWER_SAVE_DEFAULT
	int "Default time-out for AC97 power-save mode"
	depends on SND_AC97_POWER_SAVE
	default 0
	help
	  The default time-out value in seconds for AC97 automatic
	  power-save mode.  0 means to disable the power-save mode.

endmenu
