wusb: reset WUSB devices with SetAddress(0)

Using a Reset Device IE to reset a WUSB device is too heavyweight as it
causes the devcie to disconnect (which the USB stack does not expect and
cannot handle).  Instead, do a SetAddress(0); SetAddress(AuthAddr) for
authenticated devices.

Unauthenticated devices will not be reset and the stack will have to rely
on the device timing out after TrustTimeout and disconnecting.

Signed-off-by: David Vrabel <david.vrabel@csr.com>
This commit is contained in:
David Vrabel
2008-10-27 17:12:33 +00:00
parent 1cde7f68ce
commit 4656d5de95
4 changed files with 25 additions and 122 deletions

View File

@@ -338,8 +338,7 @@ static void hs_printk(unsigned level, struct device *dev,
* Before the device's address (as known by it) was usb_dev->devnum |
* 0x80 (unauthenticated address). With this we update it to usb_dev->devnum.
*/
static int wusb_dev_update_address(struct wusbhc *wusbhc,
struct wusb_dev *wusb_dev)
int wusb_dev_update_address(struct wusbhc *wusbhc, struct wusb_dev *wusb_dev)
{
int result = -ENOMEM;
struct usb_device *usb_dev = wusb_dev->usb_dev;