diff options
Diffstat (limited to 'drivers/bluetooth/btusb.c')
-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 | } |