Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754623Ab3CLHgc (ORCPT ); Tue, 12 Mar 2013 03:36:32 -0400 Received: from cantor2.suse.de ([195.135.220.15]:56541 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753114Ab3CLHgb (ORCPT ); Tue, 12 Mar 2013 03:36:31 -0400 Date: Tue, 12 Mar 2013 08:36:29 +0100 Message-ID: From: Takashi Iwai To: Clemens Ladisch Cc: Dave Helstroom , perex@perex.cz, eldad@fogrefinery.com, damien@zamaudio.com, pete.leigh@gmail.com, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH][RESEND] Add a USB audio quirk for the NuForce UDH-100 device. In-Reply-To: <513E2D56.8070902@ladisch.de> References: <1362973920-4942-1-git-send-email-helstroom@google.com> <513D968C.1060905@ladisch.de> <513E2D56.8070902@ladisch.de> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL/10.8 Emacs/24.2 (x86_64-suse-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2110 Lines: 70 At Mon, 11 Mar 2013 20:15:34 +0100, Clemens Ladisch wrote: > > >> David Helstroom wrote: > >>> Interface 1 does not exist > > Please try the patch below. Since the patch seems working, I merge it now. thanks, Takashi > > > Regards, > Clemens > > > --8<---------------------------------------------------------------->8-- > ALSA: usb-audio: add a workaround for the NuForce UDH-100 > > The NuForce UDH-100 numbers its interfaces incorrectly, which makes the > interface associations come out wrong, which results in the driver > erroring out with the message "Audio class v2 interfaces need an > interface association". > > Work around this by searching for the interface association descriptor > also in some other place where it might have ended up. > > Reported-by: Dave Helstroom > Signed-off-by: Clemens Ladisch > --- > sound/usb/card.c | 15 +++++++++++++++ > 1 file changed, 15 insertions(+) > > diff --git a/sound/usb/card.c b/sound/usb/card.c > index df2f6d0..34dc3e8 100644 > --- a/sound/usb/card.c > +++ b/sound/usb/card.c > @@ -245,6 +245,21 @@ static int snd_usb_create_streams(struct snd_usb_audio *chip, int ctrlif) > usb_ifnum_to_if(dev, ctrlif)->intf_assoc; > > if (!assoc) { > + /* > + * Firmware writers cannot count to three. So to find > + * the IAD on the NuForce UDH-100, also check the next > + * interface. > + */ > + struct usb_interface *iface = > + usb_ifnum_to_if(dev, ctrlif + 1); > + if (iface && > + iface->intf_assoc && > + iface->intf_assoc->bFunctionClass == USB_CLASS_AUDIO && > + iface->intf_assoc->bFunctionProtocol == UAC_VERSION_2) > + assoc = iface->intf_assoc; > + } > + > + if (!assoc) { > snd_printk(KERN_ERR "Audio class v2 interfaces need an interface association\n"); > return -EINVAL; > } > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/