Skip to content

Commit 0689a86

Browse files
dsacretiwai
authored andcommitted
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é <[email protected]> Signed-off-by: Albert Huitsing <[email protected]> Acked-by: Clemens Ladisch <[email protected]> Cc: <[email protected]> Signed-off-by: Takashi Iwai <[email protected]>
1 parent 0755e74 commit 0689a86

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

sound/usb/quirks-table.h

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2512,6 +2512,74 @@ YAMAHA_DEVICE(0x7010, "UB99"),
25122512
}
25132513
},
25142514

2515+
/* Steinberg devices */
2516+
{
2517+
/* Steinberg MI2 */
2518+
USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x2040),
2519+
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2520+
.ifnum = QUIRK_ANY_INTERFACE,
2521+
.type = QUIRK_COMPOSITE,
2522+
.data = & (const struct snd_usb_audio_quirk[]) {
2523+
{
2524+
.ifnum = 0,
2525+
.type = QUIRK_AUDIO_STANDARD_INTERFACE
2526+
},
2527+
{
2528+
.ifnum = 1,
2529+
.type = QUIRK_AUDIO_STANDARD_INTERFACE
2530+
},
2531+
{
2532+
.ifnum = 2,
2533+
.type = QUIRK_AUDIO_STANDARD_INTERFACE
2534+
},
2535+
{
2536+
.ifnum = 3,
2537+
.type = QUIRK_MIDI_FIXED_ENDPOINT,
2538+
.data = &(const struct snd_usb_midi_endpoint_info) {
2539+
.out_cables = 0x0001,
2540+
.in_cables = 0x0001
2541+
}
2542+
},
2543+
{
2544+
.ifnum = -1
2545+
}
2546+
}
2547+
}
2548+
},
2549+
{
2550+
/* Steinberg MI4 */
2551+
USB_DEVICE_VENDOR_SPEC(0x0a4e, 0x4040),
2552+
.driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) {
2553+
.ifnum = QUIRK_ANY_INTERFACE,
2554+
.type = QUIRK_COMPOSITE,
2555+
.data = & (const struct snd_usb_audio_quirk[]) {
2556+
{
2557+
.ifnum = 0,
2558+
.type = QUIRK_AUDIO_STANDARD_INTERFACE
2559+
},
2560+
{
2561+
.ifnum = 1,
2562+
.type = QUIRK_AUDIO_STANDARD_INTERFACE
2563+
},
2564+
{
2565+
.ifnum = 2,
2566+
.type = QUIRK_AUDIO_STANDARD_INTERFACE
2567+
},
2568+
{
2569+
.ifnum = 3,
2570+
.type = QUIRK_MIDI_FIXED_ENDPOINT,
2571+
.data = &(const struct snd_usb_midi_endpoint_info) {
2572+
.out_cables = 0x0001,
2573+
.in_cables = 0x0001
2574+
}
2575+
},
2576+
{
2577+
.ifnum = -1
2578+
}
2579+
}
2580+
}
2581+
},
2582+
25152583
/* TerraTec devices */
25162584
{
25172585
USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),

0 commit comments

Comments
 (0)