ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4
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> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
0755e74b8f
commit
0689a86ae8
|
@ -2512,6 +2512,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 */
|
/* TerraTec devices */
|
||||||
{
|
{
|
||||||
USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),
|
USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),
|
||||||
|
|
Loading…
Reference in New Issue