linux/drivers/usb/host
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
..
ehci-au1xxx.c USB: make EHCI initialize properly on PPC SOCs 2007-08-22 14:28:01 -07:00
ehci-dbg.c USB: use function attribute __maybe_unused 2007-07-12 16:29:50 -07:00
ehci-fsl.c USB: ehci_fsl update for MPC831x support 2007-07-12 16:29:50 -07:00
ehci-fsl.h ehci-fsl: fix cache coherency problem on system with large memory 2007-05-23 20:14:15 -07:00
ehci-hcd.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
ehci-hub.c USB: Don't resume root hub if the controller is suspended 2007-07-12 16:34:39 -07:00
ehci-mem.c Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
ehci-pci.c USB: EHCI, OHCI: handover changes 2007-07-12 16:29:47 -07:00
ehci-ppc-soc.c USB: make EHCI initialize properly on PPC SOCs 2007-08-22 14:28:01 -07:00
ehci-ps3.c USB: PS3: USB system-bus rework 2007-07-12 16:34:30 -07:00
ehci-q.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
ehci-sched.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
ehci.h Revert "USB: EHCI cpufreq fix" 2007-08-20 23:38:44 -07:00
isp116x-hcd.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
isp116x.h USB: Dealias -110 code (more complete) 2006-09-27 11:59:00 -07:00
Kconfig usb: typo in usb R8A66597 HCD config 2007-08-22 14:27:49 -07:00
Makefile USB: r8a66597-hcd: host controller driver for R8A66597 2007-07-12 16:29:45 -07:00
ohci-at91.c USB: at91-ohci, handle extra at91sam9261 ahb clock 2007-02-16 15:32:24 -08:00
ohci-au1xxx.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-dbg.c USB: ohci, fix oddball gcc warning 2007-08-22 14:27:52 -07:00
ohci-ep93xx.c [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
ohci-hcd.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
ohci-hub.c USB: Fix NEC OHCI chip silicon bug 2007-07-12 16:34:29 -07:00
ohci-lh7a404.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-mem.c USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
ohci-omap.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-pci.c USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
ohci-pnx4008.c USB: ohci-pnx4008: Remove unnecessary cast of return value of kzalloc 2007-07-12 16:34:43 -07:00
ohci-pnx8550.c [PATCH] Scheduled removal of SA_xxx interrupt flags fixups 2007-02-14 08:09:54 -08:00
ohci-ppc-of.c [POWERPC] Rename device_is_compatible to of_device_is_compatible 2007-05-07 20:31:14 +10:00
ohci-ppc-soc.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-ps3.c USB: PS3: USB system-bus rework 2007-07-12 16:34:30 -07:00
ohci-pxa27x.c [ARM] 4304/1: removes the unnecessary bit number from CKENnn_XXXX 2007-04-21 23:14:01 +01:00
ohci-q.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
ohci-s3c2410.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci-sa1111.c ohci: Rework bus glue integration to allow several at once 2007-02-07 15:44:33 -08:00
ohci.h USB: OHCI handles more ZFMicro quirks 2007-10-12 14:54:59 -07:00
pci-quirks.c EHCI: fix problem with BIOS handoff 2007-05-22 23:45:48 -07:00
pci-quirks.h [PATCH] USB: pci-quirks.c: proper prototypes 2006-04-14 11:12:20 -07:00
r8a66597-hcd.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
r8a66597.h USB: r8a66597-hcd: fixes some problem 2007-07-19 17:46:08 -07:00
sl811_cs.c some kmalloc/memset ->kzalloc (tree wide) 2007-07-19 10:04:50 -07:00
sl811-hcd.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
sl811.h
u132-hcd.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00
uhci-debug.c UHCI: Fix problem caused by lack of terminating QH 2007-03-26 14:17:48 -07:00
uhci-hcd.c drivers/firmware: const-ify DMI API and internals 2007-10-09 20:22:20 -04:00
uhci-hcd.h UHCI: Eliminate asynchronous skeleton Queue Headers 2007-02-23 15:03:45 -08:00
uhci-hub.c UHCI: fix port resume problem 2007-03-09 19:52:23 -08:00
uhci-q.c USB: make HCDs responsible for managing endpoint queues 2007-10-12 14:55:10 -07:00