# ALSA USB drivers

menu "USB devices"
	depends on SND!=n && USB!=n

config SND_USB_AUDIO
	tristate "USB Audio/MIDI driver"
	depends on SND && USB
	select SND_HWDEP
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say Y here to include support for USB audio and USB MIDI
	  devices.

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

config SND_USB_USX2Y
	tristate "Tascam US-122, US-224 and US-428 USB driver"
	depends on SND && USB && (X86 || PPC || ALPHA)
	select SND_HWDEP
	select SND_RAWMIDI
	select SND_PCM
	help
	  Say Y here to include support for Tascam USB Audio/MIDI
	  interfaces or controllers US-122, US-224 and US-428.

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

config SND_USB_CAIAQ
	tristate "Native Instruments USB audio devices"
	 depends on SND && USB
	 select SND_HWDEP
	 select SND_RAWMIDI
	 select SND_PCM
	 help
	   Say Y here to include support for caiaq USB audio interfaces,
	   namely:

	    * Native Instruments RigKontrol2
	    * Native Instruments Kore Controller
	    * Native Instruments Audio Kontrol 1
	    * Native Instruments Audio 8 DJ

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

config SND_USB_CAIAQ_INPUT
	bool "enable input device for controllers"
	depends on SND_USB_CAIAQ
	help
	  Say Y here to support input controllers like buttons, knobs,
	  alpha dials and analog pedals on the following products:

	   * Native Instruments RigKontrol2
	   * Native Instruments Audio Kontrol 1

endmenu

