[alsa-devel] [PATCH v2] ALSA: usb-audio: Add MIDI support for Steinberg MI2/MI4

Clemens Ladisch clemens at ladisch.de
Wed Jul 1 16:06:19 CEST 2015


Dominic Sacré wrote:
> 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 at gmx.de>
> Signed-off-by: Albert Huitsing <albert at huitsing.nl>

Acked-by: Clemens Ladisch <clemens at ladisch.de>

> ---
>  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 2f6d3e9..e475665 100644
> --- a/sound/usb/quirks-table.h
> +++ b/sound/usb/quirks-table.h
> @@ -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 */
>  {
>  	USB_DEVICE_VENDOR_SPEC(0x0ccd, 0x0012),


More information about the Alsa-devel mailing list