linux/drivers/usb/core
Alan Stern e9df41c5c5 USB: make HCDs responsible for managing endpoint queues
This patch (as954) implements a suggestion of David Brownell's.  Now
the host controller drivers are responsible for linking and unlinking
URBs to/from their endpoint queues.  This eliminates the possiblity of
strange situations where usbcore thinks an URB is linked but the HCD
thinks it isn't.  It also means HCDs no longer have to check for URBs
being dequeued before they were fully enqueued.

In addition to the core changes, this requires changing every host
controller driver and the root-hub URB handler.  For the most part the
required changes are fairly small; drivers have to call
usb_hcd_link_urb_to_ep() in their urb_enqueue method,
usb_hcd_check_unlink_urb() in their urb_dequeue method, and
usb_hcd_unlink_urb_from_ep() before giving URBs back.  A few HCDs make
matters more complicated by the way they split up the flow of control.

In addition some method interfaces get changed.  The endpoint argument
for urb_enqueue is now redundant so it is removed.  The unlink status
is required by usb_hcd_check_unlink_urb(), so it has been added to
urb_dequeue.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
CC: David Brownell <david-b@pacbell.net>
CC: Olav Kongas <ok@artecdesign.ee>
CC: Tony Olech <tony.olech@elandigitalsystems.com>
CC: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-10-12 14:55:10 -07:00
..
Kconfig USB: add power/persist device attribute 2007-07-12 16:34:30 -07:00
Makefile USB: add a blacklist for devices that can't handle some things we throw at them. 2007-02-23 15:03:46 -08:00
buffer.c USB: a bit more coding style cleanup 2007-02-07 15:44:40 -08:00
config.c usb: usb_get_configuration() obeys authorization 2007-10-12 14:55:06 -07:00
devices.c USB: add IAD support to usbfs and sysfs 2007-07-12 16:34:40 -07:00
devio.c USB: avoid urb->pipe in usbfs 2007-10-12 14:55:01 -07:00
driver.c usb: usb_probe_interface() obeys authorization 2007-10-12 14:55:07 -07:00
endpoint.c USB: In init_endpoint_class, use PTR_ERR to obtain an errno value, not IS_ERR 2007-02-16 15:32:17 -08:00
file.c USB: prevent char device open/deregister race 2007-07-12 16:29:48 -07:00
generic.c USB: rename choose_configuration 2007-10-12 14:55:08 -07:00
hcd-pci.c USB: remove references to dev.power.power_state 2007-07-12 16:29:46 -07:00
hcd.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
hcd.h USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
hub.c USB: rename choose_configuration 2007-10-12 14:55:08 -07:00
hub.h USB: Move private hub declarations out of public header file 2006-12-01 14:23:30 -08:00
inode.c header cleaning: don't include smp_lock.h when not used 2007-05-08 11:15:07 -07:00
message.c USB: make usb_release_interface static 2007-10-12 14:55:09 -07:00
notify.c usbfs: private mutex for open, release, and remove 2006-09-27 11:58:49 -07:00
otg_whitelist.h USB: Fix apparent typo CONFIG_USB_CDCETHER. 2007-02-16 15:32:18 -08:00
quirks.c USB: disable autosuspend by default for non-hubs 2007-09-13 05:49:04 -07:00
sysfs.c usb: hook up device authorization to sysfs 2007-10-12 14:55:08 -07:00
urb.c USB: cleanup for previous patches 2007-10-12 14:55:01 -07:00
usb.c usb: initialize authorization and wusb bits in USB devices 2007-10-12 14:55:05 -07:00
usb.h USB: rename choose_configuration 2007-10-12 14:55:08 -07:00