diff options
author | David Vrabel <david.vrabel@csr.com> | 2009-04-08 13:36:28 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2009-04-17 13:50:27 -0400 |
commit | 3444b26afa145148951112534f298bdc554ec789 (patch) | |
tree | b2c8d9b13d04869ffdad1e46a9ebbf819e7ed7b4 /drivers/isdn | |
parent | d45e230bf03850f17394a760dfa003d986a67729 (diff) |
USB: add reset endpoint operations
Wireless USB endpoint state has a sequence number and a current
window and not just a single toggle bit. So allow HCDs to provide a
endpoint_reset method and call this or clear the software toggles as
required (after a clear halt, set configuration etc.).
usb_settoggle() and friends are then HCD internal and are moved into
core/hcd.h and all device drivers call usb_reset_endpoint() instead.
If the device endpoint state has been reset (with a clear halt) but
the host endpoint state has not then subsequent data transfers will
not complete. The device will only work again after it is reset or
disconnected.
Signed-off-by: David Vrabel <david.vrabel@csr.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/isdn')
-rw-r--r-- | drivers/isdn/hisax/st5481_usb.c | 9 |
1 files changed, 1 insertions, 8 deletions
diff --git a/drivers/isdn/hisax/st5481_usb.c b/drivers/isdn/hisax/st5481_usb.c index ec3c0e507669..2b3a055059ea 100644 --- a/drivers/isdn/hisax/st5481_usb.c +++ b/drivers/isdn/hisax/st5481_usb.c | |||
@@ -149,14 +149,7 @@ static void usb_ctrl_complete(struct urb *urb) | |||
149 | if (ctrl_msg->dr.bRequest == USB_REQ_CLEAR_FEATURE) { | 149 | if (ctrl_msg->dr.bRequest == USB_REQ_CLEAR_FEATURE) { |
150 | /* Special case handling for pipe reset */ | 150 | /* Special case handling for pipe reset */ |
151 | le16_to_cpus(&ctrl_msg->dr.wIndex); | 151 | le16_to_cpus(&ctrl_msg->dr.wIndex); |
152 | 152 | usb_reset_endpoint(adapter->usb_dev, ctrl_msg->dr.wIndex); | |
153 | /* toggle is reset on clear */ | ||
154 | usb_settoggle(adapter->usb_dev, | ||
155 | ctrl_msg->dr.wIndex & ~USB_DIR_IN, | ||
156 | (ctrl_msg->dr.wIndex & USB_DIR_IN) == 0, | ||
157 | 0); | ||
158 | |||
159 | |||
160 | } | 153 | } |
161 | 154 | ||
162 | if (ctrl_msg->complete) | 155 | if (ctrl_msg->complete) |