# 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
	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
	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"
	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 (EXPERIMENTAL)"
	depends on 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"
	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
	select SND_PCM
	select SND_MPU401_UART

config SND_OXYGEN
	tristate "C-Media 8788 (Oxygen)"
	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 (plus)
	   * HT-Omega Claro halo (XT)
	   * Razer Barracuda AC-1
	   * Sondigo Inferno

	  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
	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
	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 && !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"
	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
	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
	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
	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
	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"
	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 VIDEO_V4L2=y || VIDEO_V4L2=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.

config SND_FM801_TEA575X
	tristate
	depends on SND_FM801_TEA575X_BOOL
	default SND_FM801

source "sound/pci/hda/Kconfig"

config SND_HDSP
	tristate "RME Hammerfall DSP Audio"
	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"
	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_HIFIER
	tristate "TempoTec HiFier Fantasia"
	select SND_OXYGEN_LIB
	help
	  Say Y here to include support for the MediaTek/TempoTec HiFier
	  Fantasia sound card.

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

config SND_ICE1712
	tristate "ICEnsemble ICE1712 (Envy24)"
	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/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.

	  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_MAESTRO3
	tristate "ESS Allegro/Maestro3"
	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_MIXART
	tristate "Digigram miXart"
	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 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_SIS7019
	tristate "SiS 7019 Audio Accelerator"
	depends on 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"
	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"
	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"
	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 100/200 (Xonar)"
	select SND_OXYGEN_LIB
	help
	  Say Y here to include support for sound cards based on the
	  Asus AV100/AV200 chips, i.e., Xonar D1, DX, D2, D2X, and
	  Essence STX.
	  Support for the HDAV1.3 (Deluxe) is very experimental.

	  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
	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
