From f02e649704ab4d5fe8d6198b1103a3569cbe0b6d Mon Sep 17 00:00:00 2001 From: Pedro Lopez-Cabanillas Date: Tue, 7 Oct 2008 20:54:18 +0200 Subject: [PATCH] --- yaml --- r: 111085 b: refs/heads/master c: 59b3db6c69ae9eeed1d8fc3aee6b88272ba38ba8 h: refs/heads/master i: 111083: 4b64d1f5fc5e93dcd46b2f40d5e2e078b03e5b4a v: v3 --- [refs] | 2 +- trunk/sound/usb/usbaudio.c | 25 +++++++++++++++++++++++++ trunk/sound/usb/usbquirks.h | 18 +++--------------- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/[refs] b/[refs] index b62ac813ba00..8b5476145cd0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 52948b3f7c481be2cd3a68d1db42dd6906bf853a +refs/heads/master: 59b3db6c69ae9eeed1d8fc3aee6b88272ba38ba8 diff --git a/trunk/sound/usb/usbaudio.c b/trunk/sound/usb/usbaudio.c index 6e70ba4ee21f..bbd70d5814a0 100644 --- a/trunk/sound/usb/usbaudio.c +++ b/trunk/sound/usb/usbaudio.c @@ -3023,6 +3023,31 @@ static int create_uaxx_quirk(struct snd_usb_audio *chip, alts = &iface->altsetting[1]; altsd = get_iface_desc(alts); + if (altsd->bNumEndpoints == 2) { + static const struct snd_usb_midi_endpoint_info ua700_ep = { + .out_cables = 0x0003, + .in_cables = 0x0003 + }; + static const struct snd_usb_audio_quirk ua700_quirk = { + .type = QUIRK_MIDI_FIXED_ENDPOINT, + .data = &ua700_ep + }; + static const struct snd_usb_midi_endpoint_info uaxx_ep = { + .out_cables = 0x0001, + .in_cables = 0x0001 + }; + static const struct snd_usb_audio_quirk uaxx_quirk = { + .type = QUIRK_MIDI_FIXED_ENDPOINT, + .data = &uaxx_ep + }; + if (chip->usb_id == USB_ID(0x0582, 0x002b)) + return snd_usb_create_midi_interface(chip, iface, + &ua700_quirk); + else + return snd_usb_create_midi_interface(chip, iface, + &uaxx_quirk); + } + if (altsd->bNumEndpoints != 1) return -ENXIO; diff --git a/trunk/sound/usb/usbquirks.h b/trunk/sound/usb/usbquirks.h index 85532cf9dbf6..69689e79bf79 100644 --- a/trunk/sound/usb/usbquirks.h +++ b/trunk/sound/usb/usbquirks.h @@ -870,11 +870,7 @@ YAMAHA_DEVICE(0x7010, "UB99"), }, { .ifnum = 3, - .type = QUIRK_MIDI_FIXED_ENDPOINT, - .data = & (const struct snd_usb_midi_endpoint_info) { - .out_cables = 0x0003, - .in_cables = 0x0003 - } + .type = QUIRK_AUDIO_EDIROL_UAXX }, { .ifnum = -1 @@ -1216,11 +1212,7 @@ YAMAHA_DEVICE(0x7010, "UB99"), }, { .ifnum = 2, - .type = QUIRK_MIDI_FIXED_ENDPOINT, - .data = & (const struct snd_usb_midi_endpoint_info) { - .out_cables = 0x0001, - .in_cables = 0x0001 - } + .type = QUIRK_AUDIO_EDIROL_UAXX }, { .ifnum = -1 @@ -1375,11 +1367,7 @@ YAMAHA_DEVICE(0x7010, "UB99"), }, { .ifnum = 2, - .type = QUIRK_MIDI_FIXED_ENDPOINT, - .data = & (const struct snd_usb_midi_endpoint_info) { - .out_cables = 0x0001, - .in_cables = 0x0001 - } + .type = QUIRK_AUDIO_EDIROL_UAXX }, { .ifnum = -1