[PATCH 3.12 09/82] ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4

2015-08-24 Thread Jiri Slaby
From: Dominic Sacré 

3.12-stable review patch.  If anyone has any objections, please let me know.

===

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é 
Signed-off-by: Albert Huitsing 
Acked-by: Clemens Ladisch 
Signed-off-by: Takashi Iwai 
Signed-off-by: Jiri Slaby 
---
 sound/usb/quirks-table.h | 68 
 1 file changed, 68 insertions(+)

diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index 5293b5ac8b9d..7c24088bcaa4 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -2516,6 +2516,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),
-- 
2.5.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 3.12 09/82] ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4

2015-08-24 Thread Jiri Slaby
From: Dominic Sacré dominic.sa...@gmx.de

3.12-stable review patch.  If anyone has any objections, please let me know.

===

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.sa...@gmx.de
Signed-off-by: Albert Huitsing alb...@huitsing.nl
Acked-by: Clemens Ladisch clem...@ladisch.de
Signed-off-by: Takashi Iwai ti...@suse.de
Signed-off-by: Jiri Slaby jsl...@suse.cz
---
 sound/usb/quirks-table.h | 68 
 1 file changed, 68 insertions(+)

diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h
index 5293b5ac8b9d..7c24088bcaa4 100644
--- a/sound/usb/quirks-table.h
+++ b/sound/usb/quirks-table.h
@@ -2516,6 +2516,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),
-- 
2.5.0

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/