From: Alberto Aguirre Date: Thu, 8 Dec 2016 06:36:48 +0000 (-0600) Subject: ALSA: usb-audio: add implicit fb quirk for Axe-Fx II X-Git-Tag: v3.16.83~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=be20dfeb1c206aa86f02fd6d0841209e64a7bafe;p=thirdparty%2Fkernel%2Fstable.git ALSA: usb-audio: add implicit fb quirk for Axe-Fx II commit 17f08b0d9aafccdb10038ab6dbd9ddb6433c13e2 upstream. The Axe-Fx II implicit feedback end point and the data sync endpoint are in different interface descriptors. Add quirk to ensure a sync endpoint is properly configured. Signed-off-by: Alberto Aguirre Signed-off-by: Takashi Iwai [bwh: Backported to 3.16: adjust context] Signed-off-by: Ben Hutchings --- diff --git a/sound/usb/pcm.c b/sound/usb/pcm.c index 63d5303cc8685..ba920e85ccfd5 100644 --- a/sound/usb/pcm.c +++ b/sound/usb/pcm.c @@ -346,6 +346,15 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, ep = 0x81; iface = usb_ifnum_to_if(dev, 2); + if (!iface || iface->num_altsetting == 0) + return -EINVAL; + + alts = &iface->altsetting[1]; + goto add_sync_ep; + case USB_ID(0x2466, 0x8003): + ep = 0x86; + iface = usb_ifnum_to_if(dev, 2); + if (!iface || iface->num_altsetting == 0) return -EINVAL; @@ -360,6 +369,7 @@ static int set_sync_ep_implicit_fb_quirk(struct snd_usb_substream *subs, alts = &iface->altsetting[1]; goto add_sync_ep; + } if (attr == USB_ENDPOINT_SYNC_ASYNC && altsd->bInterfaceClass == USB_CLASS_VENDOR_SPEC &&