# SPDX-License-Identifier: GPL-2.0-only
# 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/cards/bt87x.rst>.

	  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/cards/cmipci.rst>.

	  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)
	depends on !M68K
	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/0404/1010/1212/1616/1820)"
	select FW_LOADER
	select SND_HWDEP
	select SND_RAWMIDI
	select SND_AC97_CODEC
	select SND_TIMER
	select SND_SEQ_DEVICE if SND_SEQUENCER != n
	depends on ZONE_DMA
	help
	  Say Y to include support for Sound Blaster PCI 512, Live!,
	  Audigy and E-MU APS/0404/1010/1212/1616/1820 soundcards.

	  The confusing multitude of mixer controls is documented in
	  <file:Documentation/sound/cards/sb-live-mixer.rst> and
	  <file:Documentation/sound/cards/audigy-mixer.rst>.

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

# select SEQ stuff to min(SND_SEQUENCER,SND_XXX)
config SND_EMU10K1_SEQ
	def_tristate SND_SEQUENCER && SND_EMU10K1
	select SND_SEQ_MIDI_EMUL
	select SND_SEQ_VIRMIDI
	select SND_SYNTH_EMUX

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_DEV=y || VIDEO_DEV=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_DEV=y || VIDEO_DEV=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/cards/mixart.rst>.

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