All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Fries <david@fries.net>
To: Clemens Ladisch <clemens@ladisch.de>
Cc: David Griffith <dgriffi@cs.csubak.edu>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alan Stern <stern@rowland.harvard.edu>,
	linux-kernel@vger.kernel.org, linux-usb@vger.kernel.org
Subject: Re: bad endpoint address, MOTU FastLane
Date: Mon, 25 May 2009 19:41:46 -0500	[thread overview]
Message-ID: <20090526004146.GD4300@spacedout.fries.net> (raw)
In-Reply-To: <4A1A54DB.3090902@ladisch.de>

On Mon, May 25, 2009 at 10:20:43AM +0200, Clemens Ladisch wrote:
> David Fries wrote:
> > On Tue, May 12, 2009 at 09:55:08AM +0200, Clemens Ladisch wrote:
> > > The driver could call usb_set_interface() again for the first interface
> > > so that the USB core takes notice of the first set of endpoints again.
> > > Please try the patch below.
> > > 
> > > I guess I'll have to write another quirk for this.
> > 
> > Adding usb_set_interface lets the device work again, ...
> > 
> > The MOTU Fastlane device is the only one using QUIRK_MIDI_RAW.  How about
> > changing the name to QUIRK_MIDI_FASTLANE to imply it isn't completely
> > generic anymore and adding a comment?
> 
> And while we're at it, the driver should claim interface 1 to prevent
> anyone else from using it.

Before and after the latest patch snd-usb-audio claims interface 1.
I:* If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=04 Prot=ff Driver=snd-usb-audio
I:* If#= 1 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=03 Prot=ff Driver=snd-usb-audio

The new snd_usbmidi_detect_fastlane in case 1 returns 1, which then
will return 0 from snd_usb_create_midi_interface, but
ignore_interface_quirk already returns 0 if it was left with the
ignore interface quirk, so I don't see a need for that part of the
patch.

> New patch below.
> 
> Are you okay with the tested-by tag?

Yes, it works.  I'm watching the LEDs blink on the device and data
come across.

> +static int snd_usbmidi_detect_fastlane(struct snd_usb_midi *umidi,
> +				       struct snd_usb_midi_endpoint_info *eps)
> +{
> +	switch (get_iface_desc(umidi->iface->altsetting)->bInterfaceNumber) {
...
> +	case 1:
> +		return 1; /* no MIDI device for this interface, just claim it */

> @@ -1778,9 +1805,13 @@ int snd_usb_create_midi_interface(struct
> +		err = snd_usbmidi_detect_fastlane(umidi, endpoints);
> +		if (err == 1) {
> +			kfree(umidi);
> +			return 0;
> +		}

-- 
David Fries <david@fries.net>
http://fries.net/~david/ (PGP encryption key available)

  reply	other threads:[~2009-05-26  0:42 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-11 22:12 bad endpoint address, MOTU FastLane David Fries
2009-05-12  7:55 ` Clemens Ladisch
2009-05-12 14:08   ` Alan Stern
2009-05-12 15:22     ` Todd T. Fries
2009-05-12 15:44       ` Alan Stern
2009-05-24 22:07   ` David Fries
2009-05-25  8:20     ` Clemens Ladisch
2009-05-26  0:41       ` David Fries [this message]
2009-05-26  7:25         ` Clemens Ladisch

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090526004146.GD4300@spacedout.fries.net \
    --to=david@fries.net \
    --cc=akpm@linux-foundation.org \
    --cc=clemens@ladisch.de \
    --cc=dgriffi@cs.csubak.edu \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.