From 9ee7c77bd673a1278f95424b789753ef3eb1179a Mon Sep 17 00:00:00 2001 From: Sujith Date: Fri, 23 Apr 2010 10:28:16 +0530 Subject: [PATCH] --- yaml --- r: 194667 b: refs/heads/master c: 62e4716aff31a8ab687016680443012034734c92 h: refs/heads/master i: 194665: 58004db7ae311e8884d225b24e16d7d808701dc7 194663: 13e8a2a97200c7e10a0a11db0922c62036a5bcb4 v: v3 --- [refs] | 2 +- .../drivers/net/wireless/ath/ath9k/hif_usb.c | 22 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index f6c466b2c66a..8d942e73ca64 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f66890724fb3131894b8eee5fc552a5dc42dc1df +refs/heads/master: 62e4716aff31a8ab687016680443012034734c92 diff --git a/trunk/drivers/net/wireless/ath/ath9k/hif_usb.c b/trunk/drivers/net/wireless/ath/ath9k/hif_usb.c index cee5febb8a4d..31665c5ad907 100644 --- a/trunk/drivers/net/wireless/ath/ath9k/hif_usb.c +++ b/trunk/drivers/net/wireless/ath/ath9k/hif_usb.c @@ -889,6 +889,26 @@ static int ath9k_hif_usb_probe(struct usb_interface *interface, return ret; } +static void ath9k_hif_usb_reboot(struct usb_device *udev) +{ + u32 reboot_cmd = 0xffffffff; + void *buf; + int ret; + + buf = kmalloc(4, GFP_KERNEL); + if (!buf) + return; + + memcpy(buf, &reboot_cmd, 4); + + ret = usb_bulk_msg(udev, usb_sndbulkpipe(udev, USB_REG_OUT_PIPE), + buf, 4, NULL, HZ); + if (ret) + dev_err(&udev->dev, "ath9k_htc: USB reboot failed\n"); + + kfree(buf); +} + static void ath9k_hif_usb_disconnect(struct usb_interface *interface) { struct usb_device *udev = interface_to_usbdev(interface); @@ -903,7 +923,7 @@ static void ath9k_hif_usb_disconnect(struct usb_interface *interface) } if (hif_dev->flags & HIF_USB_START) - usb_reset_device(udev); + ath9k_hif_usb_reboot(udev); kfree(hif_dev); dev_info(&udev->dev, "ath9k_htc: USB layer deinitialized\n");