| From 0689a86ae814f39af94a9736a0a5426dd82eb107 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Dominic=20Sacr=C3=A9?= <dominic.sacre@gmx.de> |
| Date: Tue, 30 Jun 2015 17:41:33 +0200 |
| Subject: ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4 |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| commit 0689a86ae814f39af94a9736a0a5426dd82eb107 upstream. |
| |
| The Steinberg MI2 and MI4 interfaces are compatible with the USB class |
| audio spec, but the MIDI part of the devices is reported as a vendor |
| specific interface. |
| |
| This patch adds entries to quirks-table.h to recognize the MIDI |
| endpoints. Audio functionality was already working and is unaffected by |
| this change. |
| |
| Signed-off-by: Dominic Sacré <dominic.sacre@gmx.de> |
| Signed-off-by: Albert Huitsing <albert@huitsing.nl> |
| Acked-by: Clemens Ladisch <clemens@ladisch.de> |
| Signed-off-by: Takashi Iwai <tiwai@suse.de> |
| Signed-off-by: Zefan Li <lizefan@huawei.com> |
| --- |
| sound/usb/quirks-table.h | 68 +++++++++++++++++++++++++++++++++++++++++++++++ |
| 1 file changed, 68 insertions(+) |
| |
| --- a/sound/usb/quirks-table.h |
| +++ b/sound/usb/quirks-table.h |
| @@ -2461,6 +2461,74 @@ YAMAHA_DEVICE(0x7010, "UB99"), |
| } |
| }, |
| |
| +/* Steinberg devices */ |
| +{ |
| + /* Steinberg MI2 */ |
| + USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040), |
| + .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { |
| + .ifnum = QUIRK_ANY_INTERFACE, |
| + .type = QUIRK_COMPOSITE, |
| + .data = & (const struct snd_usb_audio_quirk[]) { |
| + { |
| + .ifnum = 0, |
| + .type = QUIRK_AUDIO_STANDARD_INTERFACE |
| + }, |
| + { |
| + .ifnum = 1, |
| + .type = QUIRK_AUDIO_STANDARD_INTERFACE |
| + }, |
| + { |
| + .ifnum = 2, |
| + .type = QUIRK_AUDIO_STANDARD_INTERFACE |
| + }, |
| + { |
| + .ifnum = 3, |
| + .type = QUIRK_MIDI_FIXED_ENDPOINT, |
| + .data = &(const struct snd_usb_midi_endpoint_info) { |
| + .out_cables = 0x0001, |
| + .in_cables = 0x0001 |
| + } |
| + }, |
| + { |
| + .ifnum = -1 |
| + } |
| + } |
| + } |
| +}, |
| +{ |
| + /* Steinberg MI4 */ |
| + USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040), |
| + .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { |
| + .ifnum = QUIRK_ANY_INTERFACE, |
| + .type = QUIRK_COMPOSITE, |
| + .data = & (const struct snd_usb_audio_quirk[]) { |
| + { |
| + .ifnum = 0, |
| + .type = QUIRK_AUDIO_STANDARD_INTERFACE |
| + }, |
| + { |
| + .ifnum = 1, |
| + .type = QUIRK_AUDIO_STANDARD_INTERFACE |
| + }, |
| + { |
| + .ifnum = 2, |
| + .type = QUIRK_AUDIO_STANDARD_INTERFACE |
| + }, |
| + { |
| + .ifnum = 3, |
| + .type = QUIRK_MIDI_FIXED_ENDPOINT, |
| + .data = &(const struct snd_usb_midi_endpoint_info) { |
| + .out_cables = 0x0001, |
| + .in_cables = 0x0001 |
| + } |
| + }, |
| + { |
| + .ifnum = -1 |
| + } |
| + } |
| + } |
| +}, |
| + |
| /* TerraTec devices */ |
| { |
| USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012), |