config SND_MPU401_UART
        tristate
        select SND_RAWMIDI

config SND_OPL3_LIB
	tristate
	select SND_TIMER
	select SND_HWDEP
	select SND_SEQ_DEVICE if SND_SEQUENCER != n

config SND_OPL4_LIB
	tristate
	select SND_TIMER
	select SND_HWDEP
	select SND_SEQ_DEVICE if SND_SEQUENCER != n

# select SEQ stuff to min(SND_SEQUENCER,SND_XXX)
config SND_OPL3_LIB_SEQ
	def_tristate SND_SEQUENCER && SND_OPL3_LIB
	select SND_SEQ_MIDI_EMUL
	select SND_SEQ_MIDI_EVENT

config SND_OPL4_LIB_SEQ
	def_tristate SND_SEQUENCER && SND_OPL4_LIB
	select SND_SEQ_MIDI_EMUL
	select SND_SEQ_MIDI_EVENT

config SND_VX_LIB
	tristate
	select FW_LOADER
	select SND_HWDEP
	select SND_PCM

config SND_AC97_CODEC
	tristate
	select SND_PCM
	select AC97_BUS
	select SND_VMASTER

menuconfig SND_DRIVERS
	bool "Generic sound devices"
	default y
	help
	  Support for generic sound devices.
  
if SND_DRIVERS

config SND_PCSP
	tristate "PC-Speaker support (READ HELP!)"
	depends on PCSPKR_PLATFORM && X86 && HIGH_RES_TIMERS
	depends on INPUT
	select SND_PCM
	help
	  If you don't have a sound card in your computer, you can include a
	  driver for the PC speaker which allows it to act like a primitive
	  sound card.
	  This driver also replaces the pcspkr driver for beeps.

	  You can compile this as a module which will be called snd-pcsp.

	  WARNING: if you already have a soundcard, enabling this
	  driver may lead to a problem. Namely, it may get loaded
	  before the other sound driver of yours, making the
	  pc-speaker a default sound device. Which is likely not
	  what you want. To make this driver play nicely with other
	  sound driver, you can add this in a configuration file under
	  /etc/modprobe.d/ directory:
	  options snd-pcsp index=2

	  You don't need this driver if you only want your pc-speaker to beep.
	  You don't need this driver if you have a tablet piezo beeper
	  in your PC instead of the real speaker.

	  Say N if you have a sound card.
	  Say M if you don't.
	  Say Y only if you really know what you do.

config SND_DUMMY
	tristate "Dummy (/dev/null) soundcard"
	select SND_PCM
	help
	  Say Y here to include the dummy driver.  This driver does
	  nothing, but emulates various mixer controls and PCM devices.

	  You don't need this unless you're testing the hardware support
	  of programs using the ALSA API.

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

config SND_ALOOP
        tristate "Generic loopback driver (PCM)"
        select SND_PCM
        help
          Say 'Y' or 'M' to include support for the PCM loopback device.
	  This module returns played samples back to the user space using
	  the standard ALSA PCM device. The devices are routed 0->1 and
          1->0, where first number is the playback PCM device and second
	  number is the capture device. Module creates two PCM devices and
	  configured number of substreams (see the pcm_substreams module
          parameter).

	  The loopback device allows time sychronization with an external
	  timing source using the time shift universal control (+-20%
	  of system time).

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

config SND_VIRMIDI
	tristate "Virtual MIDI soundcard"
	depends on SND_SEQUENCER
	select SND_TIMER
	select SND_RAWMIDI
	select SND_SEQ_VIRMIDI
	select SND_SEQ_MIDI_EVENT
	help
	  Say Y here to include the virtual MIDI driver.  This driver
	  allows to connect applications using raw MIDI devices to
	  sequencer clients.

	  If you don't know what MIDI is, say N here.

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

config SND_MTPAV
	tristate "MOTU MidiTimePiece AV multiport MIDI"
	select SND_RAWMIDI
	help
	  To use a MOTU MidiTimePiece AV multiport MIDI adapter
	  connected to the parallel port, say Y here and make sure that
	  the standard parallel port driver isn't used for the port.

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

config SND_MTS64
	tristate "ESI Miditerminal 4140 driver"
	depends on PARPORT
	select SND_RAWMIDI
	help
	  The ESI Miditerminal 4140 is a 4 In 4 Out MIDI Interface with 
          additional SMPTE Timecode capabilities for the parallel port.

	  Say 'Y' to include support for this device.

	  To compile this driver as a module, chose 'M' here: the module 
          will be called snd-mts64.

config SND_SERIAL_U16550
	tristate "UART16550 serial MIDI driver"
	select SND_RAWMIDI
	help
	  To include support for MIDI serial port interfaces, say Y here
	  and read <file:Documentation/sound/cards/serial-u16550.rst>.
	  This driver works with serial UARTs 16550 and better.

	  This driver accesses the serial port hardware directly, so
	  make sure that the standard serial driver isn't used or
	  deactivated with setserial before loading this driver.

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

config SND_MPU401
	tristate "Generic MPU-401 UART driver"
	select SND_MPU401_UART
	help
	  Say Y here to include support for MIDI ports compatible with
	  the Roland MPU-401 interface in UART mode.

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

config SND_PORTMAN2X4
	tristate "Portman 2x4 driver"
	depends on PARPORT
	select SND_RAWMIDI
	help
	  Say Y here to include support for Midiman Portman 2x4 parallel
	  port MIDI device.

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

config SND_ML403_AC97CR
	tristate "Xilinx ML403 AC97 Controller Reference"
	depends on XILINX_VIRTEX
	select SND_AC97_CODEC
	help
	  Say Y here to include support for the
	  opb_ac97_controller_ref_v1_00_a ip core found in Xilinx's ML403
	  reference design.

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

config SND_AC97_POWER_SAVE
	bool "AC97 Power-Saving Mode"
	depends on SND_AC97_CODEC
	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=X' to the
	  snd-ac97-codec driver module, where 'X' is the time-out
	  value, a nonnegative integer that specifies how many
	  seconds of idle time the driver must count before it may
	  put the AC97 into power-save mode;  a value of 0 (zero)
	  disables the use of this power-save mode.

	  After the snd-ac97-codec driver module has been loaded,
	  the 'power_save' parameter can be set via sysfs as follows:

	    echo 10 > /sys/module/snd_ac97_codec/parameters/power_save

	  In this case, the time-out is set to 10 seconds; setting
	  the time-out to 1 second (the minimum activation value)
	  isn't recommended because many applications try to reopen
	  the device frequently.  A value of 10 seconds would be a
	  good choice for normal operations.

	  See Documentation/sound/designs/powersave.rst for more details.

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.

	  See SND_AC97_POWER_SAVE for more details.

endif	# SND_DRIVERS
