# SPDX-License-Identifier: GPL-2.0-only
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
	select SND_TIMER
	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 synchronization 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_PCMTEST
	tristate "Virtual PCM test driver"
	depends on DEBUG_FS
	select SND_PCM
	help
	  Say 'Y' or 'M' to include support for the Virtual PCM test driver.
	  This driver is aimed at extended testing of the userspace applications
	  which use the ALSA API, as well as the PCM middle layer testing.

	  It can generate random or pattern-based data into the capture stream,
	  check the playback stream for containing the selected pattern, inject
	  time delays during capture/playback, redefine the RESET ioctl operation
	  to perform the PCM middle layer testing and inject errors during the
	  PCM callbacks. It supports both interleaved and non-interleaved access
	  modes. You can find the corresponding selftest in the 'alsa'
	  selftests folder.

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"
	depends on HAS_IOPORT
	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"
	depends on HAS_IOPORT
	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_SERIAL_GENERIC
	tristate "Generic serial MIDI driver"
	depends on SERIAL_DEV_BUS
	depends on OF
	select SND_RAWMIDI
	help
	  To include support for mapping generic serial devices as raw
	  ALSA MIDI devices, say Y here. The driver only supports setting
	  the serial port to standard baudrates. To attain the standard MIDI
	  baudrate of 31.25 kBaud, configure the clock of the underlying serial
	  device so that a requested 38.4 kBaud will result in the standard speed.

	  Use this devicetree binding to configure serial port mapping
	  <file:Documentation/devicetree/bindings/sound/serial-midi.yaml>

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

config SND_MPU401
	tristate "Generic MPU-401 UART driver"
	depends on HAS_IOPORT
	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_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
