From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cyrus Harmon Subject: Re: [PATCH] add Steinberg UR44 USB Audio Interface support to quirks-table Date: Thu, 06 Nov 2014 08:05:43 -0800 Message-ID: <545B9C57.1070304@bobobeach.com> References: <1394388767-23658-1-git-send-email-cyrus@bobobeach.com> <531DAB14.5080201@ladisch.de> <76F78615-8762-4A6C-B601-97380805F450@bobobeach.com> <531DDD04.5050902@ladisch.de> <0EFBCC9F-93CA-4368-9530-B9049B3743FB@bobobeach.com> <531EC9CC.4060203@ladisch.de> <88C9DBF9-92A3-4885-87C5-A9966C326D0F@bobobeach.com> <545895AD.7020004@ladisch.de> <545A697C.5070800@bobobeach.com> <545A93E3.7020906@ladisch.de> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: Received: from aspen.bobobeach.com (unknown [208.79.93.82]) by alsa0.perex.cz (Postfix) with ESMTP id 90A35260695 for ; Thu, 6 Nov 2014 17:05:53 +0100 (CET) In-Reply-To: <545A93E3.7020906@ladisch.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Clemens Ladisch , alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org On a somewhat related note, is there a way to apply changes to things in, say, sound/usb and compile/install those changes without a few kernel rebuild/install? Or, even better, without a reboot? Would certainly shorting the debug cycle time for me. In this case I'm interested in finding out what quirk->type is when it gets to snd_usb_create_quirk as it looks like the function in the quirk_funcs table that gets called here produces the first suspect error. Adding a dev_info, followed by a kernel rebuild, reinstall, reboot (and the fact that my broken nvidia drivers require reinstalling the video driver every time I install a new kernel) makes for a tedious process! thanks! Cyrus On 11/05/2014 01:17 PM, Clemens Ladisch wrote: > Cyrus Harmon wrote: >> [ 2.964094] snd-usb-audio 3-3.2:1.0: checking PCM interface >> [ 2.964104] snd-usb-audio: probe of 3-3.2:1.0 failed with error -5 >> [ 2.966339] snd-usb-audio 3-3.2:1.1: checking PCM interface >> [ 2.966341] snd-usb-audio 3-3.2:1.1: altsets found >> [ 2.966342] snd-usb-audio 3-3.2:1.1: endpoint found >> [ 2.966343] snd-usb-audio 3-3.2:1.1: iso found >> [ 2.966344] snd-usb-audio 3-3.2:1.1: descriptors found >> [ 2.968544] usb 3-3.2:1.0: checking PCM interface >> [ 2.968546] usb 3-3.2:1.2: checking PCM interface >> [ 2.968547] usb 3-3.2:1.2: altsets found >> [ 2.968547] usb 3-3.2:1.2: endpoint found >> [ 2.968548] usb 3-3.2:1.2: iso found >> [ 2.968549] usb 3-3.2:1.2: descriptors found >> [ 2.970657] usb 3-3.2:1.3: checking PCM interface >> [ 2.970666] usb 3-3.2:1.4: checking PCM interface >> [ 2.970930] snd-usb-audio: probe of 3-3.2:1.1 failed with error -5 > Strange; in theory, this cannot happen. > > Please add this patch and try again. > > > Regards, > Clemens > > > --- a/sound/usb/card.c > +++ b/sound/usb/card.c > @@ -536,7 +536,9 @@ snd_usb_audio_probe(struct usb_device *dev, > err = 1; /* continue */ > if (quirk && quirk->ifnum != QUIRK_NO_INTERFACE) { > /* need some special handlings */ > - if ((err = snd_usb_create_quirk(chip, intf, &usb_audio_driver, quirk)) < 0) > + err = snd_usb_create_quirk(chip, intf, &usb_audio_driver, quirk); > + dev_info(&intf->dev, "quirk return code: %d\n", err); > + if (err < 0) > goto __error; > } > > @@ -547,11 +549,13 @@ snd_usb_audio_probe(struct usb_device *dev, > goto __error; > } > } > + dev_info(&intf->dev, "probe step 2\n"); > > /* we are allowed to call snd_card_register() many times */ > if (snd_card_register(chip->card) < 0) { > goto __error; > } > + dev_info(&intf->dev, "probe step 3\n"); > > usb_chip[chip->index] = chip; > chip->num_interfaces++; > @@ -560,6 +564,7 @@ snd_usb_audio_probe(struct usb_device *dev, > return chip; > > __error: > + dev_info(&intf->dev, "probe failed\n"); > if (chip) { > if (!chip->num_interfaces) > snd_card_free(chip->card); > --- a/sound/usb/quirks.c > +++ b/sound/usb/quirks.c > @@ -367,6 +367,7 @@ static int create_autodetect_quirks(struct snd_usb_audio *chip, > err = create_autodetect_quirk(chip, iface, driver); > if (err < 0) > return err; > + dev_info(&iface->dev, "first interface successful\n"); > > /* > * ALSA PCM playback/capture devices cannot be registered in two steps, > @@ -385,9 +386,13 @@ static int create_autodetect_quirks(struct snd_usb_audio *chip, > > err = create_autodetect_quirk(chip, iface, driver); > if (err >= 0) > + { > usb_driver_claim_interface(driver, iface, (void *)-1L); > + dev_info(&iface->dev, "interface %d successful\n", ifnum); > + } > } > > + dev_info(&iface->dev, "create_autodetect_quirks successful\n"); > return 0; > } >