diff options
Diffstat (limited to 'sound/usb/usbaudio.c')
-rw-r--r-- | sound/usb/usbaudio.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index 6e70ba4ee21f..bbd70d5814a0 100644 --- a/sound/usb/usbaudio.c +++ b/sound/usb/usbaudio.c | |||
@@ -3023,6 +3023,31 @@ static int create_uaxx_quirk(struct snd_usb_audio *chip, | |||
3023 | alts = &iface->altsetting[1]; | 3023 | alts = &iface->altsetting[1]; |
3024 | altsd = get_iface_desc(alts); | 3024 | altsd = get_iface_desc(alts); |
3025 | 3025 | ||
3026 | if (altsd->bNumEndpoints == 2) { | ||
3027 | static const struct snd_usb_midi_endpoint_info ua700_ep = { | ||
3028 | .out_cables = 0x0003, | ||
3029 | .in_cables = 0x0003 | ||
3030 | }; | ||
3031 | static const struct snd_usb_audio_quirk ua700_quirk = { | ||
3032 | .type = QUIRK_MIDI_FIXED_ENDPOINT, | ||
3033 | .data = &ua700_ep | ||
3034 | }; | ||
3035 | static const struct snd_usb_midi_endpoint_info uaxx_ep = { | ||
3036 | .out_cables = 0x0001, | ||
3037 | .in_cables = 0x0001 | ||
3038 | }; | ||
3039 | static const struct snd_usb_audio_quirk uaxx_quirk = { | ||
3040 | .type = QUIRK_MIDI_FIXED_ENDPOINT, | ||
3041 | .data = &uaxx_ep | ||
3042 | }; | ||
3043 | if (chip->usb_id == USB_ID(0x0582, 0x002b)) | ||
3044 | return snd_usb_create_midi_interface(chip, iface, | ||
3045 | &ua700_quirk); | ||
3046 | else | ||
3047 | return snd_usb_create_midi_interface(chip, iface, | ||
3048 | &uaxx_quirk); | ||
3049 | } | ||
3050 | |||
3026 | if (altsd->bNumEndpoints != 1) | 3051 | if (altsd->bNumEndpoints != 1) |
3027 | return -ENXIO; | 3052 | return -ENXIO; |
3028 | 3053 | ||