public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: David Brownell <david-b@pacbell.net>
Cc: linux-usb-devel@lists.sourceforge.net,
	linux-kernel@vger.kernel.org, Patrick Mochel <mochel@osdl.org>
Subject: Re: [RFC] USB driver conversion to use "struct device_driver"
Date: Mon, 12 Aug 2002 14:30:21 -0700	[thread overview]
Message-ID: <20020812213020.GB16872@kroah.com> (raw)
In-Reply-To: <3D57FECE.3020700@pacbell.net>

On Mon, Aug 12, 2002 at 11:30:38AM -0700, David Brownell wrote:
> >>Why are devices children of the hub _interface_ now?  
> >
> >Good point, I noticed that this had changed, but haven't fixed it, I'll
> >make sure it goes back to the way it was before.
> 
> Thanks ... those paths were getting really atrocious!
> 
> The other thing I noticed about the tree structure was that
> the /drivers/bus/usb/devices directory has symlinks to both
> interfaces and devices.  That's good for completeness, but
> the device links aren't very useful (and they really clutter
> up that directory, IMO, with two different kinds of object).
> Do they need to show up there?
> 
> We know "<interface>/.." always gives the USB device, so we
> don't really need such additional entries.

Yeah, it is a bit ugly, and the whole symlink thing is going to be
revisited.  So for now I'm ignoring them, and hopefully Pat will decide
on something later on :)

> Even so.  This particular change also happens to make the
> usb_device_id->driver_data useless ... if the driver API
> changes, I'd need to see the MODULE_DEVICE_TABLE entry,
> or at least its driver_data, get passed too.  That's a
> key level of bus-specific glue that the driver model
> doesn't explicitly acknowledge (seemingly expects to be
> handled transparently by the bus glue).

Ugh, forgot about ->driver_info.  Ok, I'll go work on that, pci gets
around it by duplicating the "old" probe() interface.  I don't want to
throw away that info, as it is useful for some drivers.

> I guess I shouldn't be too sensitive about incompatible
> changes to the USB driver API, but in this case it bothers
> me a bit even though I do like the idea of making drivers
> think "correctly" (interface drivers, not device drivers).
> 
> Oh, and "new_disco" ... I thought "Disco is Dead"? :)

"new_disco" will be dead, once all the drivers are converted :)

> >What APIs would those be?
> 
> From a quick scan of <linux/usb.h>, I see these calls ...
> all of which would be less error prone if they just passed
> the relevant descriptor.  (Errors happen when folk assume
> both two kinds of integer ID are the same... and it's also
> just confusing.)  The interface->dev backlink you added is
> useful, and help get rid of the need for many of these:
> 
>   usb_set_configuration(struct usb_device *dev, int);
>   usb_set_interface(struct usb_device *dev, int, int);
> 
>   usb_find_interface_driver_for_ifnum(struct usb_device *dev, int);
> 
>   usb_bind_driver(struct usb_driver *,struct usb_device *, int);
> 	// usb_unbind_driver takes interface handle already!!
> 
>   usb_ifnum_to_ifpos(struct usb_device *dev, int);
>   usb_ifnum_to_if(struct usb_device *dev, int);
> 	// basically, abolish the need for these calls
> 
>   usb_epnum_to_ep_desc(struct usb_device *dev, int);
> 
> Plus I'm strongly tempted to group all the "dev + pipe" calls
> the same way ... better to just pass the endpoint descriptor
> than to encode descriptor values as bitfields and then later
> waste time (repeateadly) tearing apart those bitfields.

Agreed, I'll look into fixing up the above functions, unless someone
wants to send me a patch doing it first :)

> Related issue to the suspend/resume code ... I recently noticed
> (again) that the hub code was disconnecting top-down rather than
> bottom up.  That should eventually get delegated to the driver
> framework ... any idea whether there was a reason not to do that
> bottom-up in the first place?  At what point does the driver model
> kick in to handle that part of what the hub driver now does?  If
> the patch you sent around did that, my quick look missed it ... :)

Hm, I didn't realize it was going top-down at all.  What changes caused
that?  And no, I don't think I changed it, as I didn't realize it had
been changed in the first place :)

thanks,

greg k-h

  reply	other threads:[~2002-08-12 21:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-08-10  0:10 [RFC] USB driver conversion to use "struct device_driver" Greg KH
2002-08-10  9:57 ` [linux-usb-devel] " Oliver Neukum
2002-08-10 15:40   ` Greg KH
2002-08-10 21:18 ` David Brownell
2002-08-12 16:45   ` Greg KH
2002-08-12 18:30     ` David Brownell
2002-08-12 21:30       ` Greg KH [this message]
2002-08-12 23:36         ` David Brownell

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=20020812213020.GB16872@kroah.com \
    --to=greg@kroah.com \
    --cc=david-b@pacbell.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb-devel@lists.sourceforge.net \
    --cc=mochel@osdl.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox