aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/whci/pzl.c
Commit message (Collapse)AuthorAge
* USB: whci-hcd: always do an update after processing a halted qTDDavid Vrabel2009-10-14
| | | | | | | | | A halted qTD always triggers a hardware list update because the qset was either removed or reactivated. Signed-off-by: David Vrabel <david.vrabel@csr.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: whci-hcd: handle early deletion of endpointsDavid Vrabel2009-10-14
| | | | | | | | | | | | | | If an endpoint is deleted before it's been fully added to the hardware list, the associated qset will not be fully initialized and an oops will occur when complete(&qset->remove_complete) is called. This can happen if a queued URB is cancelled. Fix this by only removing the qset from the hardware list if the cancelled URB had qTDs. Signed-off-by: David Vrabel <david.vrabel@csr.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: whci-hcd: make endpoint_reset method asyncDavid Vrabel2009-09-23
| | | | | | | | | | | | usb_hcd_endpoint_reset() may be called in atomic context and must not sleep. So make whci-hcd's endpoint_reset() asynchronous. URBs submitted while the reset is in progress will be queued (on the std list) and transfers will resume once the reset is complete. Signed-off-by: David Vrabel <david.vrabel@csr.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: whci-hcd: check return value of usb_hcd_link_urb_to_ep()David Vrabel2009-04-17
| | | | | | | | | | | | | Check the return value of usb_hcd_link_urb_to_ep() and do not add the urb to the ASL/PZL if it returns an error. Omitting the check results in urbs that appear to be submitted successfully but then cannot be unliked (because usb_hcd_check_unlink_urb() returns an error). This can cause khubd (for example) to block forever in usb_kill_urb(). Signed-off-by: David Vrabel <david.vrabel@csr.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* USB: whci-hcd: provide a endpoint_reset methodDavid Vrabel2009-04-17
| | | | | | | | | Provide a endpoint_reset method to reset sequence number and current window. This QHead information can only be changed while the qset is not in a schedule. Signed-off-by: David Vrabel <david.vrabel@csr.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
* wusb: whci-hcd: always lock whc->lock with interrupts disabledDavid Vrabel2009-02-16
| | | | | | Always lock whc->lock with spin_lock_irq() or spin_lock_irqsave(). Signed-off-by: David Vrabel <david.vrabel@csr.com>
* wusb: timeout when waiting for ASL/PZL updates in whci-hcdDavid Vrabel2009-01-07
| | | | | | | Timeout if an ASL or PZL update doesn't not complete and reset the hardware. Signed-off-by: David Vrabel <david.vrabel@csr.com>
* wusb: add debug files for ASL, PZL and DI to the whci-hcd driverDavid Vrabel2008-11-26
| | | | | | | Add asl, pzl and di debugfs files to uwb/uwbN/wusbhc for WHCI host controller. These dump the current ASL, PZL and DI buffer. Signed-off-by: David Vrabel <david.vrabel@csr.com>
* wusb: whci-hcd shouldn't do ASL/PZL updates while channel is inactiveDavid Vrabel2008-11-25
| | | | | | | | | | | | | ASL/PZL updates while the WUSB channel is inactive (i.e., the PZL and ASL are stopped) may not complete. This causes hangs when removing the whci-hcd module if a device is still connected (removing the device does an endpoint_disable which results in an ASL update to remove the qset). If the WUSB channel is inactive the update can simply be skipped as the WHC doesn't care about the state of the ASL/PZL. Signed-off-by: David Vrabel <david.vrabel@csr.com>
* wusb: WHCI host controller driverDavid Vrabel2008-09-17
A driver for Wireless USB host controllers that comply with the Wireless Host Controller Interface (HCI) specification as published by Intel. The latest publically available version of the specification (0.95) is supported (except for isochronous transfers). Build fixes by Randy Dunlap <rdunlap@xenotime.net> Signed-off-by: David Vrabel <david.vrabel@csr.com>