# ALSA PCI drivers

menuconfig SND_PCI
	bool "PCI sound devices"
	depends on PCI
	default y
	help
	  Support for sound devices connected via the PCI bus.

if SND_PCI

config SND_AD1889
	tristate "Analog Devices AD1889"
	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+"
	select SND_PCM
	select SND_AC97_CODEC
	select SND_OPL3_LIB
	depends on ZONE_DMA
	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 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"
	select SND_MPU401_UART
	select SND_AC97_CODEC
	depends on ZONE_DMA
	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_ASIHPI
	tristate "AudioScience ASIxxxx"
	depends on X86
	select FW_LOADER
	select SND_PCM
	select SND_HWDEP
	help
	  Say Y here to include support for AudioScience ASI sound cards.

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

config SND_ATIIXP
	tristate "ATI IXP AC97 Controller"
	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"
	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"
	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"
	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"
	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_AW2
	tristate "Emagic Audiowerk 2"
	help
	  Say Y here to include support for Emagic Audiowerk 2 soundcards.

	  Supported features: Analog and SPDIF output. Analog or SPDIF input.
	  Note: Switch between analog and digital input does not always work.
	  It can produce continuous noise. The workaround is to switch again
	  (and again) between digital and analog input until it works.

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


config SND_AZT3328
	tristate "Aztech AZF3328 / PCI168"
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	select SND_RAWMIDI
	select SND_AC97_CODEC
	select SND_TIMER
	depends on ZONE_DMA
	help
	  Say Y here to include support for Aztech AZF3328 (PCI168)
	  soundcards.

	  Supported features: AC97-"conformant" mixer, MPU401/OPL3, analog I/O
	  (16bit/8bit, many sample rates [<= 66.2kHz], NO hardware mixing),
	  Digital Enhanced Game Port, 1.024MHz multimedia sequencer timer,
	  ext. codec (I2S port), onboard amp (4W/4Ohms/ch), suspend/resume.

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

config SND_BT87X
	tristate "Bt87x Audio Capture"
	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"
	select SND_AC97_CODEC
	select SND_RAWMIDI
	select SND_VMASTER
	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"
	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

config SND_OXYGEN
	tristate "C-Media 8786, 8787, 8788 (Oxygen)"
	select SND_OXYGEN_LIB
	select SND_PCM
	select SND_MPU401_UART
	help
	  Say Y here to include support for sound cards based on the
	  C-Media CMI8788 (Oxygen HD Audio) chip:
	   * Asound A-8788
	   * Asus Xonar DG/DGX
	   * AuzenTech X-Meridian
	   * AuzenTech X-Meridian 2G
	   * Bgears b-Enspirer
	   * Club3D Theatron DTS
	   * HT-Omega Claro (plus)
	   * HT-Omega Claro halo (XT)
	   * Kuroutoshikou CMI8787-HG2PCI
	   * Razer Barracuda AC-1
	   * Sondigo Inferno
	   * TempoTec/MediaTek HiFier Fantasia
	   * TempoTec/MediaTek HiFier Serenade

	  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"
	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"
	select SND_RAWMIDI
	select SND_AC97_CODEC
	select FW_LOADER
	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 ISA_DMA_API && (X86_32 || COMPILE_TEST)
	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 X86_32 || MIPS || COMPILE_TEST
	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_CTXFI
	tristate "Creative Sound Blaster X-Fi"
	select SND_PCM
	help
	  If you want to use soundcards based on Creative Sound Blastr X-Fi
	  boards with 20k1 or 20k2 chips, say Y here.

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

config SND_DARLA20
	tristate "(Echoaudio) Darla20"
	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"
	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"
	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"
	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"
	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"
	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"
	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"
	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"
	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"
	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"
	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"
	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_INDIGOIOX
	tristate "(Echoaudio) Indigo IOx"
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Indigo IOx.

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

config SND_INDIGODJX
	tristate "(Echoaudio) Indigo DJx"
	select FW_LOADER
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Echoaudio Indigo DJx.

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

config SND_EMU10K1
	tristate "Emu10k1 (SB Live!, Audigy, E-mu APS)"
	select FW_LOADER
	select SND_HWDEP
	select SND_RAWMIDI
	select SND_AC97_CODEC
	select SND_TIMER
	depends on ZONE_DMA
	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)"
	select SND_AC97_CODEC
	select SND_RAWMIDI
	depends on ZONE_DMA
	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"
	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"
	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)"
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_AC97_CODEC
	depends on ZONE_DMA
	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)"
	select SND_MPU401_UART
	select SND_AC97_CODEC
	depends on ZONE_DMA
	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_ES1968_INPUT
	bool "Enable input device for es1968 volume buttons"
	depends on SND_ES1968
	depends on INPUT=y || INPUT=SND_ES1968
	help
	  If you say Y here, you will get an input device which reports
	  keypresses for the volume buttons connected to the es1968 chip.
	  If you say N the buttons will directly control the master volume.
	  It is recommended to say Y.

config SND_ES1968_RADIO
	bool "Enable TEA5757 radio tuner support for es1968"
	depends on SND_ES1968
	depends on MEDIA_RADIO_SUPPORT
	depends on VIDEO_V4L2=y || VIDEO_V4L2=SND_ES1968
	select RADIO_ADAPTERS
	select RADIO_TEA575X

	help
	  Say Y here to include support for TEA5757 radio tuner integrated on
	  some MediaForte cards (e.g. SF64-PCE2).

config SND_FM801
	tristate "ForteMedia FM801"
	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
	depends on MEDIA_RADIO_SUPPORT
	depends on VIDEO_V4L2=y || VIDEO_V4L2=SND_FM801
	select RADIO_ADAPTERS
	select RADIO_TEA575X
	help
	  Say Y here to include support for soundcards based on the ForteMedia
	  FM801 chip with a TEA5757 tuner (MediaForte SF256-PCS, SF256-PCP and
	  SF64-PCR) into the snd-fm801 driver.

config SND_HDSP
	tristate "RME Hammerfall DSP Audio"
	select FW_LOADER
	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.

comment "Don't forget to add built-in firmwares for HDSP driver"
	depends on SND_HDSP=y

config SND_HDSPM
	tristate "RME Hammerfall DSP MADI/RayDAT/AIO"
	select SND_HWDEP
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say Y here to include support for RME Hammerfall DSP MADI,
	  RayDAT and AIO 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)"
	select SND_MPU401_UART
	select SND_AC97_CODEC
	select BITREVERSE
	depends on ZONE_DMA
	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/D, DMX 6Fire, Phase 88;
	  Hoontech SoundTrack DSP 24/Value/Media7.1; Event EZ8;
	  Lionstracs Mediastation, Terrasoniq TS 88.

	  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)"
	select SND_RAWMIDI
	select SND_AC97_CODEC
	select SND_VMASTER
	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 5.1, 7.1, Audiophile 192; TerraTec Aureon 5.1 Sky,
	  7.1 Space/Universe, Phase 22/28; Onkyo SE-90PCI, SE-200PCI;
	  AudioTrak Prodigy 192, 7.1 (HIFI/LT/XT), HD2; Hercules
	  Fortissimo IV; ESI Juli@; Pontis MS300; EGO-SYS WaveTerminal
	  192M; Albatron K8X800 Pro II; Chaintech ZNF3-150/250, 9CJS,
	  AV-710; Shuttle SN25P; Philips PSC724 Ultimate Edge.

	  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"
	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"
	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"
	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_LOLA
	tristate "Digigram Lola"
	select SND_PCM
	help
	  Say Y to include support for Digigram Lola boards.

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

config SND_LX6464ES
	tristate "Digigram LX6464ES"
	depends on HAS_IOPORT_MAP
	select SND_PCM
	help
	  Say Y here to include support for Digigram LX6464ES boards.

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


config SND_MAESTRO3
	tristate "ESS Allegro/Maestro3"
	select SND_AC97_CODEC
	depends on ZONE_DMA
	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_INPUT
	bool "Enable input device for maestro3 volume buttons"
	depends on SND_MAESTRO3
	depends on INPUT=y || INPUT=SND_MAESTRO3
	help
	  If you say Y here, you will get an input device which reports
	  keypresses for the volume buttons connected to the maestro3 chip.
	  If you say N the buttons will directly control the master volume.
	  It is recommended to say Y.

config SND_MIXART
	tristate "Digigram miXart"
	select FW_LOADER
	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"
	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"
	select FW_LOADER
	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"
	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"
	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"
	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)"
	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_SE6X
	tristate "Studio Evolution SE6X"
	depends on SND_OXYGEN=n && SND_VIRTUOSO=n  # PCI ID conflict
	select SND_OXYGEN_LIB
	select SND_PCM
	select SND_MPU401_UART
	help
	  Say Y or M here only if you actually have this sound card.

config SND_SIS7019
	tristate "SiS 7019 Audio Accelerator"
	depends on X86_32
	select SND_AC97_CODEC
	depends on ZONE_DMA
	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"
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_AC97_CODEC
	depends on ZONE_DMA
	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"
	select SND_MPU401_UART
	select SND_AC97_CODEC
	depends on ZONE_DMA
	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"
	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"
	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 66/100/200 (Xonar)"
	select SND_OXYGEN_LIB
	select SND_PCM
	select SND_MPU401_UART
	select SND_JACK if INPUT=y || INPUT=SND
	help
	  Say Y here to include support for sound cards based on the
	  Asus AV66/AV100/AV200 chips, i.e., Xonar D1, DX, D2, D2X, DS, DSX,
	  Essence ST (Deluxe), and Essence STX (II).
	  Support for the HDAV1.3 (Deluxe) and HDAV1.3 Slim is experimental;
	  for the Xense, missing.

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

config SND_VX222
	tristate "Digigram VX222"
	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"
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_AC97_CODEC
	select SND_TIMER
	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.

endif	# SND_PCI

source "sound/pci/hda/Kconfig"
