aboutsummaryrefslogtreecommitdiff
path: root/drivers/usb/host/whci/hcd.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2009-04-17 13:53:00 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2009-04-17 13:53:00 -0700
commitdd26bf6d95f050c42cc8f15e750b09851e1fd30b (patch)
tree22d0a6f223297754bd1ca9f4de4e6daf1f0f6430 /drivers/usb/host/whci/hcd.c
parent7217fa9851c99ffe43cee9e3ba4b81a34ce7bac4 (diff)
parentfca10c81d99ff9956179058460dfddc0418f3902 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (22 commits) WUSB: correct format of wusb_chid sysfs file WUSB: fix oops when completing URBs for disconnected devices WUSB: disconnect all devices when stopping a WUSB HCD USB: whci-hcd: check return value of usb_hcd_link_urb_to_ep() USB: whci-hcd: provide a endpoint_reset method USB: add reset endpoint operations USB device codes for Motorola phone. usb-storage: fix mistake in Makefile USB: usb-serial ch341: support for DTR/RTS/CTS Revert USB: usb-serial ch341: support for DTR/RTS/CTS USB: musb: fix possible panic while resuming USB: musb: fix isochronous TXDMA (take 2) USB: musb: sanitize clearing TXCSR DMA bits (take 2) USB: musb: bugfixes for multi-packet TXDMA support USB: musb_host, fix ep0 fifo flushing USB: usb-storage: augment unusual_devs entry for Simple Tech/Datafab USB: musb_host, minor enqueue locking fix (v2) USB: fix oops in cdc-wdm in case of malformed descriptors USB: qcserial: Add extra device IDs USB: option: Add ids for D-Link DWM-652 3.5G modem ...
Diffstat (limited to 'drivers/usb/host/whci/hcd.c')
-rw-r--r--drivers/usb/host/whci/hcd.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/usb/host/whci/hcd.c b/drivers/usb/host/whci/hcd.c
index 1569afd6245..e019a5058ab 100644
--- a/drivers/usb/host/whci/hcd.c
+++ b/drivers/usb/host/whci/hcd.c
@@ -186,6 +186,28 @@ static void whc_endpoint_disable(struct usb_hcd *usb_hcd,
}
}
+static void whc_endpoint_reset(struct usb_hcd *usb_hcd,
+ struct usb_host_endpoint *ep)
+{
+ struct wusbhc *wusbhc = usb_hcd_to_wusbhc(usb_hcd);
+ struct whc *whc = wusbhc_to_whc(wusbhc);
+ struct whc_qset *qset;
+
+ qset = ep->hcpriv;
+ if (qset) {
+ qset->remove = 1;
+
+ if (usb_endpoint_xfer_bulk(&ep->desc)
+ || usb_endpoint_xfer_control(&ep->desc))
+ queue_work(whc->workqueue, &whc->async_work);
+ else
+ queue_work(whc->workqueue, &whc->periodic_work);
+
+ qset_reset(whc, qset);
+ }
+}
+
+
static struct hc_driver whc_hc_driver = {
.description = "whci-hcd",
.product_desc = "Wireless host controller",
@@ -200,6 +222,7 @@ static struct hc_driver whc_hc_driver = {
.urb_enqueue = whc_urb_enqueue,
.urb_dequeue = whc_urb_dequeue,
.endpoint_disable = whc_endpoint_disable,
+ .endpoint_reset = whc_endpoint_reset,
.hub_status_data = wusbhc_rh_status_data,
.hub_control = wusbhc_rh_control,