config SND_MPU401_UART
        tristate
        select SND_RAWMIDI

config SND_OPL3_LIB
	tristate
	select SND_TIMER
	select SND_HWDEP

config SND_OPL4_LIB
	tristate
	select SND_TIMER
	select SND_HWDEP

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
	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/alsa/serial-u16550.txt>.
	  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/alsa/powersave.txt 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
