mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 13:03:25 +01:00
ff49d1df79
This patch provides a basic support for USB MIDI 2.0. As of this patch, the driver creates a UMP device per MIDI I/O endpoints, which serves as a dumb terminal to read/write UMP streams. A new Kconfig CONFIG_SND_USB_AUDIO_MIDI_V2 manages whether to enable or disable the MIDI 2.0 support. Also, the driver provides a new module option, midi2_enable, to allow disabling the MIDI 2.0 at runtime, too. When MIDI 2.0 support is disabled, the driver tries to fall back to the already existing MIDI 1.0 device (each MIDI 2.0 device is supposed to provide the MIDI 1.0 interface at the altset 0). For now, the driver doesn't manage any MIDI-CI or other protocol setups by itself, but relies on the default protocol given via the group terminal block descriptors. The MIDI 1.0 messages on MIDI 2.0 device will be automatically converted in ALSA sequencer in a later patch. As of this commit, the driver accepts merely the rawmidi UMP accesses. The driver builds up the topology in the following way: - Create an object for each MIDI endpoint belonging to the USB interface - Find MIDI EP "pairs" that share the same GTB; note that MIDI EP is unidirectional, while UMP is (normally) bidirectional, so two MIDI EPs can form a single UMP EP - A UMP endpoint object is created for each I/O pair - For remaining "solo" MIDI EPs, create unidirectional UMP EPs - Finally, parse GTBs and fill the protocol bits on each UMP So the driver may support multiple UMP Endpoints in theory, although most devices are supposed to have a single UMP EP that can contain up to 16 groups -- which should be large enough. Reviewed-by: Jaroslav Kysela <perex@perex.cz> Link: https://lore.kernel.org/r/20230523075358.9672-10-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
182 lines
5.1 KiB
Text
182 lines
5.1 KiB
Text
# SPDX-License-Identifier: GPL-2.0-only
|
|
# ALSA USB drivers
|
|
|
|
menuconfig SND_USB
|
|
bool "USB sound devices"
|
|
depends on USB
|
|
default y
|
|
help
|
|
Support for sound devices connected via the USB bus.
|
|
|
|
if SND_USB && USB
|
|
|
|
config SND_USB_AUDIO
|
|
tristate "USB Audio/MIDI driver"
|
|
select SND_HWDEP
|
|
select SND_RAWMIDI
|
|
select SND_PCM
|
|
select SND_UMP if SND_USB_AUDIO_MIDI_V2
|
|
select BITREVERSE
|
|
select SND_USB_AUDIO_USE_MEDIA_CONTROLLER if MEDIA_CONTROLLER && (MEDIA_SUPPORT=y || MEDIA_SUPPORT=SND_USB_AUDIO)
|
|
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_AUDIO_MIDI_V2
|
|
bool "MIDI 2.0 support by USB Audio driver"
|
|
depends on SND_USB_AUDIO
|
|
help
|
|
Say Y here to include the support for MIDI 2.0 by USB Audio driver.
|
|
When the config is set, the driver tries to probe MIDI 2.0 interface
|
|
at first, then falls back to MIDI 1.0 interface as default.
|
|
The MIDI 2.0 support can be disabled dynamically via midi2_enable
|
|
module option, too.
|
|
|
|
config SND_USB_AUDIO_USE_MEDIA_CONTROLLER
|
|
bool
|
|
|
|
config SND_USB_UA101
|
|
tristate "Edirol UA-101/UA-1000 driver"
|
|
select SND_PCM
|
|
select SND_RAWMIDI
|
|
help
|
|
Say Y here to include support for the Edirol UA-101 and UA-1000
|
|
audio/MIDI interfaces.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called snd-ua101.
|
|
|
|
config SND_USB_USX2Y
|
|
tristate "Tascam US-122, US-224 and US-428 USB driver"
|
|
depends on 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"
|
|
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 RigKontrol3
|
|
* Native Instruments Kore Controller
|
|
* Native Instruments Kore Controller 2
|
|
* Native Instruments Audio Kontrol 1
|
|
* Native Instruments Audio 2 DJ
|
|
* Native Instruments Audio 4 DJ
|
|
* Native Instruments Audio 8 DJ
|
|
* Native Instruments Traktor Audio 2
|
|
* Native Instruments Guitar Rig Session I/O
|
|
* Native Instruments Guitar Rig mobile
|
|
* Native Instruments Traktor Kontrol X1
|
|
* Native Instruments Traktor Kontrol S4
|
|
* Native Instruments Maschine Controller
|
|
|
|
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
|
|
depends on INPUT=y || INPUT=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 RigKontrol3
|
|
* Native Instruments Kore Controller
|
|
* Native Instruments Kore Controller 2
|
|
* Native Instruments Audio Kontrol 1
|
|
* Native Instruments Traktor Kontrol S4
|
|
* Native Instruments Maschine Controller
|
|
|
|
config SND_USB_US122L
|
|
tristate "Tascam US-122L USB driver"
|
|
depends on X86 || COMPILE_TEST
|
|
select SND_HWDEP
|
|
select SND_RAWMIDI
|
|
help
|
|
Say Y here to include support for Tascam US-122L USB Audio/MIDI
|
|
interfaces.
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called snd-usb-us122l.
|
|
|
|
config SND_USB_6FIRE
|
|
tristate "TerraTec DMX 6Fire USB"
|
|
select FW_LOADER
|
|
select BITREVERSE
|
|
select SND_RAWMIDI
|
|
select SND_PCM
|
|
select SND_VMASTER
|
|
help
|
|
Say Y here to include support for TerraTec 6fire DMX USB interface.
|
|
|
|
You will need firmware files in order to be able to use the device
|
|
after it has been coldstarted. An install script for the firmware
|
|
and further help can be found at
|
|
http://sixfireusb.sourceforge.net
|
|
|
|
config SND_USB_HIFACE
|
|
tristate "M2Tech hiFace USB-SPDIF driver"
|
|
select SND_PCM
|
|
help
|
|
Select this option to include support for M2Tech hiFace USB-SPDIF
|
|
interface.
|
|
|
|
This driver supports the original M2Tech hiFace and some other
|
|
compatible devices. The supported products are:
|
|
|
|
* M2Tech Young
|
|
* M2Tech hiFace
|
|
* M2Tech North Star
|
|
* M2Tech W4S Young
|
|
* M2Tech Corrson
|
|
* M2Tech AUDIA
|
|
* M2Tech SL Audio
|
|
* M2Tech Empirical
|
|
* M2Tech Rockna
|
|
* M2Tech Pathos
|
|
* M2Tech Metronome
|
|
* M2Tech CAD
|
|
* M2Tech Audio Esclusive
|
|
* M2Tech Rotel
|
|
* M2Tech Eeaudio
|
|
* The Chord Company CHORD
|
|
* AVA Group A/S Vitus
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called snd-usb-hiface.
|
|
|
|
config SND_BCD2000
|
|
tristate "Behringer BCD2000 MIDI driver"
|
|
select SND_RAWMIDI
|
|
help
|
|
Say Y here to include MIDI support for the Behringer BCD2000 DJ
|
|
controller.
|
|
|
|
Audio support is still work-in-progress at
|
|
https://github.com/anyc/snd-usb-bcd2000
|
|
|
|
To compile this driver as a module, choose M here: the module
|
|
will be called snd-bcd2000.
|
|
|
|
source "sound/usb/line6/Kconfig"
|
|
|
|
endif # SND_USB
|
|
|