diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2007-09-10 11:33:05 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-10-12 14:55:26 -0700 |
commit | 95cf82f99cfbd697c15572c444bd4f54f19745b0 (patch) | |
tree | 87d0bd6c842922231f5177522b6635532416d206 /drivers/usb/core/message.c | |
parent | 5ad4f71e2f19a06f738463da1f09ea7fda3a3db2 (diff) | |
download | kernel_samsung_smdk4412-95cf82f99cfbd697c15572c444bd4f54f19745b0.tar.gz kernel_samsung_smdk4412-95cf82f99cfbd697c15572c444bd4f54f19745b0.tar.bz2 kernel_samsung_smdk4412-95cf82f99cfbd697c15572c444bd4f54f19745b0.zip |
USB: break apart flush_endpoint and disable_endpoint
This patch (as988) breaks usb_hcd_endpoint_disable() apart into two
routines. The first, usb_hcd_flush_endpoint() does the -ESHUTDOWN
unlinking of all URBs in the endpoint's queue and waits for them to
complete. The second, usb_hcd_disable_endpoint() -- renamed for
better grammatical style -- merely calls the HCD's endpoint_disable
method. The changeover is easy because the routine currently has only
one caller.
This separation of function will be exploited in the following patch:
When a device is suspended, the core will be able to cancel all
outstanding URBs for that device while leaving the HCD's
endpoint-related data structures intact for later.
As an added benefit, HCDs no longer need to check for existing URBs in
their endpoint_disable methods. It is now guaranteed that there will
be none.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/core/message.c')
-rw-r--r-- | drivers/usb/core/message.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/usb/core/message.c b/drivers/usb/core/message.c index d638375e22e..98fcddba690 100644 --- a/drivers/usb/core/message.c +++ b/drivers/usb/core/message.c @@ -1017,7 +1017,8 @@ void usb_disable_endpoint(struct usb_device *dev, unsigned int epaddr) } if (ep) { ep->enabled = 0; - usb_hcd_endpoint_disable(dev, ep); + usb_hcd_flush_endpoint(dev, ep); + usb_hcd_disable_endpoint(dev, ep); } } |