diff options
| -rw-r--r-- | drivers/bluetooth/btusb.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c index 0e5158eaec6c..77295c36df51 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c | |||
| @@ -2321,6 +2321,27 @@ static int btusb_set_bdaddr_intel(struct hci_dev *hdev, const bdaddr_t *bdaddr) | |||
| 2321 | return 0; | 2321 | return 0; |
| 2322 | } | 2322 | } |
| 2323 | 2323 | ||
| 2324 | static int btusb_shutdown_intel(struct hci_dev *hdev) | ||
| 2325 | { | ||
| 2326 | struct sk_buff *skb; | ||
| 2327 | long ret; | ||
| 2328 | |||
| 2329 | /* Some platforms have an issue with BT LED when the interface is | ||
| 2330 | * down or BT radio is turned off, which takes 5 seconds to BT LED | ||
| 2331 | * goes off. This command turns off the BT LED immediately. | ||
| 2332 | */ | ||
| 2333 | skb = __hci_cmd_sync(hdev, 0xfc3f, 0, NULL, HCI_INIT_TIMEOUT); | ||
| 2334 | if (IS_ERR(skb)) { | ||
| 2335 | ret = PTR_ERR(skb); | ||
| 2336 | BT_ERR("%s: turning off Intel device LED failed (%ld)", | ||
| 2337 | hdev->name, ret); | ||
| 2338 | return ret; | ||
| 2339 | } | ||
| 2340 | kfree_skb(skb); | ||
| 2341 | |||
| 2342 | return 0; | ||
| 2343 | } | ||
| 2344 | |||
| 2324 | static int btusb_set_bdaddr_marvell(struct hci_dev *hdev, | 2345 | static int btusb_set_bdaddr_marvell(struct hci_dev *hdev, |
| 2325 | const bdaddr_t *bdaddr) | 2346 | const bdaddr_t *bdaddr) |
| 2326 | { | 2347 | { |
| @@ -2698,6 +2719,7 @@ static int btusb_probe(struct usb_interface *intf, | |||
| 2698 | 2719 | ||
| 2699 | if (id->driver_info & BTUSB_INTEL) { | 2720 | if (id->driver_info & BTUSB_INTEL) { |
| 2700 | hdev->setup = btusb_setup_intel; | 2721 | hdev->setup = btusb_setup_intel; |
| 2722 | hdev->shutdown = btusb_shutdown_intel; | ||
| 2701 | hdev->set_bdaddr = btusb_set_bdaddr_intel; | 2723 | hdev->set_bdaddr = btusb_set_bdaddr_intel; |
| 2702 | set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); | 2724 | set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); |
| 2703 | } | 2725 | } |
