# ALSA ISA drivers

menu "ISA devices"
	depends on SND!=n && ISA && ISA_DMA_API

config SND_AD1848_LIB
        tristate
        select SND_PCM

config SND_CS4231_LIB
        tristate
        select SND_PCM

config SND_ADLIB
	tristate "AdLib FM card"
	depends on SND
	select SND_OPL3_LIB
	help
	  Say Y here to include support for AdLib FM cards.

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

config SND_AD1816A
	tristate "Analog Devices SoundPort AD1816A"
	depends on SND && PNP && ISA
	select ISAPNP
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for Analog Devices SoundPort
	  AD1816A or compatible sound chips.

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

config SND_AD1848
	tristate "Generic AD1848/CS4248 driver"
	depends on SND
	select SND_AD1848_LIB
	help
	  Say Y here to include support for AD1848 (Analog Devices) or
	  CS4248 (Cirrus Logic - Crystal Semiconductors) chips.
	  
	  For newer chips from Cirrus Logic, use the CS4231, CS4232 or
	  CS4236+ drivers.

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

config SND_ALS100
	tristate "Avance Logic ALS100/ALS120"
	depends on SND && PNP && ISA
	select ISAPNP
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for soundcards based on Avance
	  Logic ALS100, ALS110, ALS120 and ALS200 chips.

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

config SND_AZT2320
	tristate "Aztech Systems AZT2320"
	depends on SND && PNP && ISA
	select ISAPNP
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_CS4231_LIB
	help
	  Say Y here to include support for soundcards based on the
	  Aztech Systems AZT2320 chip.

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

config SND_CMI8330
	tristate "C-Media CMI8330"
	depends on SND
	select SND_AD1848_LIB
	help
	  Say Y here to include support for soundcards based on the
	  C-Media CMI8330 chip.

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

config SND_CS4231
	tristate "Generic Cirrus Logic CS4231 driver"
	depends on SND
	select SND_MPU401_UART
	select SND_CS4231_LIB
	help
	  Say Y here to include support for CS4231 chips from Cirrus
	  Logic - Crystal Semiconductors.

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

config SND_CS4232
	tristate "Generic Cirrus Logic CS4232 driver"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_CS4231_LIB
	help
	  Say Y here to include support for CS4232 chips from Cirrus
	  Logic - Crystal Semiconductors.

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

config SND_CS4236
	tristate "Generic Cirrus Logic CS4236+ driver"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_CS4231_LIB
	help
	  Say Y to include support for CS4235,CS4236,CS4237B,CS4238B,
	  CS4239 chips from Cirrus Logic - Crystal Semiconductors.

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

config SND_DT019X
	tristate "Diamond Technologies DT-019X, Avance Logic ALS-007"
	depends on SND && PNP && ISA
	select ISAPNP
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for soundcards based on the
	  Diamond Technologies DT-019X or Avance Logic ALS-007 chips.

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

config SND_ES968
	tristate "Generic ESS ES968 driver"
	depends on SND && PNP && ISA
	select ISAPNP
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for ESS AudioDrive ES968 chips.

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

config SND_ES1688
	tristate "Generic ESS ES688/ES1688 driver"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for ESS AudioDrive ES688 or
	  ES1688 chips.

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

config SND_ES18XX
	tristate "Generic ESS ES18xx driver"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for ESS AudioDrive ES18xx chips.

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

config SND_GUS_SYNTH
	tristate

config SND_GUSCLASSIC
	tristate "Gravis UltraSound Classic"
	depends on SND
	select SND_RAWMIDI
	select SND_PCM
	select SND_GUS_SYNTH
	help
	  Say Y here to include support for Gravis UltraSound Classic
	  soundcards.

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

config SND_GUSEXTREME
	tristate "Gravis UltraSound Extreme"
	depends on SND
	select SND_HWDEP
	select SND_MPU401_UART
	select SND_PCM
	select SND_GUS_SYNTH
	help
	  Say Y here to include support for Gravis UltraSound Extreme
	  soundcards.

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

config SND_GUSMAX
	tristate "Gravis UltraSound MAX"
	depends on SND
	select SND_RAWMIDI
	select SND_CS4231_LIB
	select SND_GUS_SYNTH
	help
	  Say Y here to include support for Gravis UltraSound MAX
	  soundcards.

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

config SND_INTERWAVE
	tristate "AMD InterWave, Gravis UltraSound PnP"
	depends on SND && PNP && ISA
	select SND_RAWMIDI
	select SND_CS4231_LIB
	select SND_GUS_SYNTH
	help
	  Say Y here to include support for AMD InterWave based
	  soundcards (Gravis UltraSound Plug & Play, STB SoundRage32,
	  MED3210, Dynasonic Pro, Panasonic PCA761AW).

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

config SND_INTERWAVE_STB
	tristate "AMD InterWave + TEA6330T (UltraSound 32-Pro)"
	depends on SND && PNP && ISA
	select SND_RAWMIDI
	select SND_CS4231_LIB
	select SND_GUS_SYNTH
	help
	  Say Y here to include support for AMD InterWave based
	  soundcards with a TEA6330T bass and treble regulator
	  (UltraSound 32-Pro).

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

config SND_OPL3SA2
	tristate "Yamaha OPL3-SA2/SA3"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_CS4231_LIB
	help
	  Say Y here to include support for Yamaha OPL3-SA2 and OPL3-SA3
	  chips.

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

config SND_OPTI92X_AD1848
	tristate "OPTi 82C92x - AD1848"
	depends on SND
	select SND_OPL3_LIB
	select SND_OPL4_LIB
	select SND_MPU401_UART
	select SND_AD1848_LIB
	help
	  Say Y here to include support for soundcards based on Opti
	  82C92x or OTI-601 chips and using an AD1848 codec.

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

config SND_OPTI92X_CS4231
	tristate "OPTi 82C92x - CS4231"
	depends on SND
	select SND_OPL3_LIB
	select SND_OPL4_LIB
	select SND_MPU401_UART
	select SND_CS4231_LIB
	help
	  Say Y here to include support for soundcards based on Opti
	  82C92x chips and using a CS4231 codec.

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

config SND_OPTI93X
	tristate "OPTi 82C93x"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for soundcards based on Opti
	  82C93x chips.

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

config SND_MIRO
	tristate "Miro miroSOUND PCM1pro/PCM12/PCM20radio driver"
	depends on SND
	select SND_OPL4_LIB
	select SND_CS4231_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for Miro miroSOUND PCM1 pro, 
	  miroSOUND PCM12 and miroSOUND PCM20 Radio soundcards.

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

config SND_SB8
	tristate "Sound Blaster 1.0/2.0/Pro (8-bit)"
	depends on SND
	select SND_OPL3_LIB
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say Y here to include support for Creative Sound Blaster 1.0/
	  2.0/Pro (8-bit) or 100% compatible soundcards.

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

config SND_SB16
	tristate "Sound Blaster 16 (PnP)"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for Sound Blaster 16 soundcards
	  (including the Plug and Play version).

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

config SND_SBAWE
	tristate "Sound Blaster AWE (32,64) (PnP)"
	depends on SND
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_PCM
	help
	  Say Y here to include support for Sound Blaster AWE soundcards
	  (including the Plug and Play version).

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

config SND_SB16_CSP
	bool "Sound Blaster 16/AWE CSP support"
	depends on (SND_SB16 || SND_SBAWE) && (BROKEN || !PPC)
	select FW_LOADER if !SND_SB16_CSP_FIRMWARE_IN_KERNEL
	help
	  Say Y here to include support for the CSP core.  This special
	  coprocessor can do variable tasks like various compression and
	  decompression algorithms.

config SND_SB16_CSP_FIRMWARE_IN_KERNEL
	bool "In-kernel firmware for SB16 CSP"
	depends on SND_SB16_CSP
	default y
	help
	  Say Y here to include the static firmware built in the kernel
	  for the SB16 CSP controller.  If you choose N here, you need
	  to install the firmware files from the alsa-firmware package.

config SND_SGALAXY
	tristate "Aztech Sound Galaxy"
	depends on SND
	select SND_AD1848_LIB
	help
	  Say Y here to include support for Aztech Sound Galaxy
	  soundcards.

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

config SND_SSCAPE
	tristate "Ensoniq SoundScape PnP driver"
	depends on SND
	select SND_HWDEP
	select SND_MPU401_UART
	select SND_CS4231_LIB
	help
	  Say Y here to include support for Ensoniq SoundScape PnP
	  soundcards.

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

config SND_WAVEFRONT
	tristate "Turtle Beach Maui,Tropez,Tropez+ (Wavefront)"
	depends on SND
	select FW_LOADER if !SND_WAVEFRONT_FIRMWARE_IN_KERNEL
	select SND_OPL3_LIB
	select SND_MPU401_UART
	select SND_CS4231_LIB
	help
	  Say Y here to include support for Turtle Beach Maui, Tropez
	  and Tropez+ soundcards based on the Wavefront chip.

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

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

endmenu
