Lines Matching defs:hdev
543 struct hci_dev *hdev;
590 int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb);
593 int (*setup_on_usb)(struct hci_dev *hdev);
599 static void btusb_intel_cmd_timeout(struct hci_dev *hdev)
601 struct btusb_data *data = hci_get_drvdata(hdev);
608 bt_dev_err(hdev, "No way to reset. Ignoring and continuing");
620 bt_dev_err(hdev, "last reset failed? Not resetting again");
624 bt_dev_err(hdev, "Initiating HW reset via gpio");
630 static void btusb_rtl_cmd_timeout(struct hci_dev *hdev)
632 struct btusb_data *data = hci_get_drvdata(hdev);
639 bt_dev_err(hdev, "No gpio to reset Realtek device, ignoring");
650 bt_dev_err(hdev, "last reset failed? Not resetting again");
654 bt_dev_err(hdev, "Reset Realtek device via gpio");
660 static void btusb_qca_cmd_timeout(struct hci_dev *hdev)
662 struct btusb_data *data = hci_get_drvdata(hdev);
668 bt_dev_err(hdev, "Multiple cmd timeouts seen. Resetting usb device.");
674 bt_dev_err(hdev, "Failed usb_autopm_get_interface with %d", err);
740 data->recv_event(data->hdev, skb);
798 hci_recv_frame(data->hdev, skb);
854 hci_recv_frame(data->hdev, skb);
867 struct hci_dev *hdev = urb->context;
868 struct btusb_data *data = hci_get_drvdata(hdev);
871 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
874 if (!test_bit(HCI_RUNNING, &hdev->flags))
878 hdev->stat.byte_rx += urb->actual_length;
882 bt_dev_err(hdev, "corrupted event packet");
883 hdev->stat.err_rx++;
902 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
908 static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
910 struct btusb_data *data = hci_get_drvdata(hdev);
916 BT_DBG("%s", hdev->name);
936 btusb_intr_complete, hdev, data->intr_ep->bInterval);
945 bt_dev_err(hdev, "urb %p submission failed (%d)",
957 struct hci_dev *hdev = urb->context;
958 struct btusb_data *data = hci_get_drvdata(hdev);
961 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
964 if (!test_bit(HCI_RUNNING, &hdev->flags))
968 hdev->stat.byte_rx += urb->actual_length;
972 bt_dev_err(hdev, "corrupted ACL packet");
973 hdev->stat.err_rx++;
992 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
998 static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags)
1000 struct btusb_data *data = hci_get_drvdata(hdev);
1006 BT_DBG("%s", hdev->name);
1024 btusb_bulk_complete, hdev);
1034 bt_dev_err(hdev, "urb %p submission failed (%d)",
1046 struct hci_dev *hdev = urb->context;
1047 struct btusb_data *data = hci_get_drvdata(hdev);
1050 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1053 if (!test_bit(HCI_RUNNING, &hdev->flags))
1064 hdev->stat.byte_rx += length;
1068 bt_dev_err(hdev, "corrupted SCO packet");
1069 hdev->stat.err_rx++;
1088 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1151 static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags)
1153 struct btusb_data *data = hci_get_drvdata(hdev);
1159 BT_DBG("%s", hdev->name);
1180 hdev, data->isoc_rx_ep->bInterval);
1192 bt_dev_err(hdev, "urb %p submission failed (%d)",
1204 struct hci_dev *hdev = urb->context;
1205 struct btusb_data *data = hci_get_drvdata(hdev);
1208 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1218 hci_recv_diag(hdev, skb);
1237 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1243 static int btusb_submit_diag_urb(struct hci_dev *hdev, gfp_t mem_flags)
1245 struct btusb_data *data = hci_get_drvdata(hdev);
1251 BT_DBG("%s", hdev->name);
1269 btusb_diag_complete, hdev);
1279 bt_dev_err(hdev, "urb %p submission failed (%d)",
1292 struct hci_dev *hdev = (struct hci_dev *)skb->dev;
1293 struct btusb_data *data = hci_get_drvdata(hdev);
1296 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1299 if (!test_bit(HCI_RUNNING, &hdev->flags))
1303 hdev->stat.byte_tx += urb->transfer_buffer_length;
1305 hdev->stat.err_tx++;
1320 struct hci_dev *hdev = (struct hci_dev *)skb->dev;
1322 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1325 if (!test_bit(HCI_RUNNING, &hdev->flags))
1329 hdev->stat.byte_tx += urb->transfer_buffer_length;
1331 hdev->stat.err_tx++;
1339 static int btusb_open(struct hci_dev *hdev)
1341 struct btusb_data *data = hci_get_drvdata(hdev);
1344 BT_DBG("%s", hdev->name);
1354 err = data->setup_on_usb(hdev);
1371 err = btusb_submit_intr_urb(hdev, GFP_KERNEL);
1375 err = btusb_submit_bulk_urb(hdev, GFP_KERNEL);
1382 btusb_submit_bulk_urb(hdev, GFP_KERNEL);
1385 if (!btusb_submit_diag_urb(hdev, GFP_KERNEL))
1409 static int btusb_close(struct hci_dev *hdev)
1411 struct btusb_data *data = hci_get_drvdata(hdev);
1414 BT_DBG("%s", hdev->name);
1444 static int btusb_flush(struct hci_dev *hdev)
1446 struct btusb_data *data = hci_get_drvdata(hdev);
1448 BT_DBG("%s", hdev->name);
1456 static struct urb *alloc_ctrl_urb(struct hci_dev *hdev, struct sk_buff *skb)
1458 struct btusb_data *data = hci_get_drvdata(hdev);
1484 skb->dev = (void *)hdev;
1489 static struct urb *alloc_bulk_urb(struct hci_dev *hdev, struct sk_buff *skb)
1491 struct btusb_data *data = hci_get_drvdata(hdev);
1507 skb->dev = (void *)hdev;
1512 static struct urb *alloc_isoc_urb(struct hci_dev *hdev, struct sk_buff *skb)
1514 struct btusb_data *data = hci_get_drvdata(hdev);
1540 skb->dev = (void *)hdev;
1545 static int submit_tx_urb(struct hci_dev *hdev, struct urb *urb)
1547 struct btusb_data *data = hci_get_drvdata(hdev);
1555 bt_dev_err(hdev, "urb %p submission failed (%d)",
1567 static int submit_or_queue_tx_urb(struct hci_dev *hdev, struct urb *urb)
1569 struct btusb_data *data = hci_get_drvdata(hdev);
1580 return submit_tx_urb(hdev, urb);
1589 static int btusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
1593 BT_DBG("%s", hdev->name);
1597 urb = alloc_ctrl_urb(hdev, skb);
1601 hdev->stat.cmd_tx++;
1602 return submit_or_queue_tx_urb(hdev, urb);
1605 urb = alloc_bulk_urb(hdev, skb);
1609 hdev->stat.acl_tx++;
1610 return submit_or_queue_tx_urb(hdev, urb);
1613 if (hci_conn_num(hdev, SCO_LINK) < 1)
1616 urb = alloc_isoc_urb(hdev, skb);
1620 hdev->stat.sco_tx++;
1621 return submit_tx_urb(hdev, urb);
1627 static void btusb_notify(struct hci_dev *hdev, unsigned int evt)
1629 struct btusb_data *data = hci_get_drvdata(hdev);
1631 BT_DBG("%s evt %d", hdev->name, evt);
1633 if (hci_conn_num(hdev, SCO_LINK) != data->sco_num) {
1634 data->sco_num = hci_conn_num(hdev, SCO_LINK);
1640 static inline int __set_isoc_interface(struct hci_dev *hdev, int altsetting)
1642 struct btusb_data *data = hci_get_drvdata(hdev);
1652 bt_dev_err(hdev, "setting interface failed (%d)", -err);
1676 bt_dev_err(hdev, "invalid SCO descriptors");
1683 static int btusb_switch_alt_setting(struct hci_dev *hdev, int new_alts)
1685 struct btusb_data *data = hci_get_drvdata(hdev);
1708 err = __set_isoc_interface(hdev, new_alts);
1714 if (btusb_submit_isoc_urb(hdev, GFP_KERNEL) < 0)
1717 btusb_submit_isoc_urb(hdev, GFP_KERNEL);
1745 struct hci_dev *hdev = data->hdev;
1762 if (hdev->voice_setting & 0x0020) {
1782 hdev->sco_mtu >= 72 &&
1789 if (btusb_switch_alt_setting(hdev, new_alts) < 0)
1790 bt_dev_err(hdev, "set USB alt:(%d) failed!", new_alts);
1795 __set_isoc_interface(hdev, 0);
1813 static int btusb_setup_bcm92035(struct hci_dev *hdev)
1818 BT_DBG("%s", hdev->name);
1820 skb = __hci_cmd_sync(hdev, 0xfc3b, 1, &val, HCI_INIT_TIMEOUT);
1822 bt_dev_err(hdev, "BCM92035 command failed (%ld)", PTR_ERR(skb));
1829 static int btusb_setup_csr(struct hci_dev *hdev)
1831 struct btusb_data *data = hci_get_drvdata(hdev);
1837 BT_DBG("%s", hdev->name);
1839 skb = __hci_cmd_sync(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL,
1843 bt_dev_err(hdev, "CSR: Local version failed (%d)", err);
1848 bt_dev_err(hdev, "CSR: Local version length mismatch");
1855 bt_dev_info(hdev, "CSR: Setting up dongle with HCI ver=%u rev=%04x; LMP ver=%u subver=%04x; manufacturer=%u",
1914 bt_dev_warn(hdev, "CSR: Unbranded CSR clone detected; adding workarounds...");
1921 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
1922 set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
1927 clear_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
1928 clear_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
1936 static const struct firmware *btusb_setup_intel_get_fw(struct hci_dev *hdev,
1949 ret = request_firmware(&fw, fwname, &hdev->dev);
1952 bt_dev_err(hdev, "Intel firmware file request failed (%d)",
1957 bt_dev_err(hdev, "failed to open Intel firmware file: %s (%d)",
1965 if (request_firmware(&fw, fwname, &hdev->dev) < 0) {
1966 bt_dev_err(hdev, "failed to open default fw file: %s",
1972 bt_dev_info(hdev, "Intel Bluetooth firmware file: %s", fwname);
1977 static int btusb_setup_intel_patching(struct hci_dev *hdev,
1996 bt_dev_err(hdev, "Intel fw corrupted: invalid cmd read");
2010 bt_dev_err(hdev, "Intel fw corrupted: invalid cmd len");
2043 bt_dev_err(hdev, "Intel fw corrupted: invalid evt len");
2057 bt_dev_err(hdev, "Intel fw corrupted: invalid evt read");
2061 skb = __hci_cmd_sync_ev(hdev, le16_to_cpu(cmd->opcode), cmd->plen,
2064 bt_dev_err(hdev, "sending Intel patch command (0x%4.4x) failed (%ld)",
2074 bt_dev_err(hdev, "mismatch event length (opcode 0x%4.4x)",
2081 bt_dev_err(hdev, "mismatch event parameter (opcode 0x%4.4x)",
2091 static int btusb_setup_intel(struct hci_dev *hdev)
2099 BT_DBG("%s", hdev->name);
2109 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
2111 bt_dev_err(hdev, "sending initial HCI reset command failed (%ld)",
2123 err = btintel_read_version(hdev, &ver);
2127 bt_dev_info(hdev, "read Intel version: %02x%02x%02x%02x%02x%02x%02x%02x%02x",
2137 bt_dev_info(hdev, "Intel device is already patched. "
2148 fw = btusb_setup_intel_get_fw(hdev, &ver);
2157 err = btintel_enter_mfg(hdev);
2188 ret = btusb_setup_intel_patching(hdev, fw, &fw_ptr,
2202 err = btintel_exit_mfg(hdev, true, true);
2209 err = btintel_read_version(hdev, &ver);
2212 bt_dev_info(hdev, "Intel BT fw patch 0x%02x completed & activated",
2219 err = btintel_exit_mfg(hdev, false, false);
2223 bt_dev_info(hdev, "Intel firmware patch completed");
2233 err = btintel_exit_mfg(hdev, true, false);
2237 bt_dev_info(hdev, "Intel firmware patch completed and deactivated");
2243 btintel_set_event_mask_mfg(hdev, false);
2245 btintel_check_bdaddr(hdev);
2249 static int inject_cmd_complete(struct hci_dev *hdev, __u16 opcode)
2271 return hci_recv_frame(hdev, skb);
2315 static int btusb_recv_event_intel(struct hci_dev *hdev, struct sk_buff *skb)
2317 struct btusb_data *data = hci_get_drvdata(hdev);
2347 return hci_recv_frame(hdev, skb);
2350 static int btusb_send_frame_intel(struct hci_dev *hdev, struct sk_buff *skb)
2352 struct btusb_data *data = hci_get_drvdata(hdev);
2355 BT_DBG("%s", hdev->name);
2368 urb = alloc_bulk_urb(hdev, skb);
2370 urb = alloc_ctrl_urb(hdev, skb);
2378 inject_cmd_complete(hdev, opcode);
2380 urb = alloc_ctrl_urb(hdev, skb);
2385 hdev->stat.cmd_tx++;
2386 return submit_or_queue_tx_urb(hdev, urb);
2389 urb = alloc_bulk_urb(hdev, skb);
2393 hdev->stat.acl_tx++;
2394 return submit_or_queue_tx_urb(hdev, urb);
2397 if (hci_conn_num(hdev, SCO_LINK) < 1)
2400 urb = alloc_isoc_urb(hdev, skb);
2404 hdev->stat.sco_tx++;
2405 return submit_tx_urb(hdev, urb);
2440 static int btusb_intel_download_firmware(struct hci_dev *hdev,
2448 struct btusb_data *data = hci_get_drvdata(hdev);
2457 bt_dev_err(hdev, "Unsupported Intel hardware platform (%u)",
2477 bt_dev_err(hdev, "Unsupported Intel hardware variant (%u)",
2482 btintel_version_info(hdev, ver);
2499 btintel_check_bdaddr(hdev);
2507 bt_dev_err(hdev, "Unsupported Intel firmware variant (%u)",
2515 err = btintel_read_boot_params(hdev, params);
2524 bt_dev_err(hdev, "Unsupported Intel firmware loading method (%u)",
2533 bt_dev_info(hdev, "No device address configured");
2534 set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks);
2561 bt_dev_err(hdev, "Unsupported Intel firmware naming");
2565 err = request_firmware(&fw, fwname, &hdev->dev);
2567 bt_dev_err(hdev, "Failed to load Intel firmware file (%d)", err);
2571 bt_dev_info(hdev, "Found device firmware: %s", fwname);
2574 bt_dev_err(hdev, "Invalid size of firmware file (%zu)",
2583 err = btintel_download_firmware(hdev, fw, boot_param);
2588 btintel_reset_to_bootloader(hdev);
2593 bt_dev_info(hdev, "Waiting for firmware download to complete");
2610 bt_dev_err(hdev, "Firmware loading interrupted");
2615 bt_dev_err(hdev, "Firmware loading timeout");
2617 btintel_reset_to_bootloader(hdev);
2622 bt_dev_err(hdev, "Firmware loading failed");
2632 static int btusb_setup_intel_new(struct hci_dev *hdev)
2634 struct btusb_data *data = hci_get_drvdata(hdev);
2644 BT_DBG("%s", hdev->name);
2658 err = btintel_read_version(hdev, &ver);
2660 bt_dev_err(hdev, "Intel Read version failed (%d)", err);
2661 btintel_reset_to_bootloader(hdev);
2665 err = btusb_intel_download_firmware(hdev, &ver, ¶ms, &boot_param);
2677 bt_dev_info(hdev, "Firmware loaded in %llu usecs", duration);
2683 err = btintel_send_intel_reset(hdev, boot_param);
2685 bt_dev_err(hdev, "Intel Soft Reset failed (%d)", err);
2686 btintel_reset_to_bootloader(hdev);
2697 bt_dev_info(hdev, "Waiting for device to boot");
2704 bt_dev_err(hdev, "Device boot interrupted");
2709 bt_dev_err(hdev, "Device boot timeout");
2710 btintel_reset_to_bootloader(hdev);
2718 bt_dev_info(hdev, "Device booted in %llu usecs", duration);
2726 bt_dev_err(hdev, "Unsupported Intel firmware naming");
2734 btintel_load_ddc_config(hdev, ddcname);
2740 btintel_read_debug_features(hdev, &features);
2743 btintel_set_debug_features(hdev, &features);
2746 err = btintel_read_version(hdev, &ver);
2750 btintel_version_info(hdev, &ver);
2758 hci_set_msft_opcode(hdev, 0xFC1E);
2769 btintel_set_event_mask(hdev, false);
2774 static int btusb_shutdown_intel(struct hci_dev *hdev)
2787 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
2790 bt_dev_err(hdev, "HCI reset during shutdown failed");
2799 skb = __hci_cmd_sync(hdev, 0xfc3f, 0, NULL, HCI_INIT_TIMEOUT);
2802 bt_dev_err(hdev, "turning off Intel device LED failed");
2810 static int btusb_shutdown_intel_new(struct hci_dev *hdev)
2818 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
2820 bt_dev_err(hdev, "HCI reset during shutdown failed");
2890 struct hci_dev *hdev = urb->context;
2891 struct btusb_data *data = hci_get_drvdata(hdev);
2897 hdev->stat.byte_rx += urb->actual_length;
2904 hdev->stat.err_rx++;
2931 err = hci_recv_frame(hdev, skb);
2972 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
2978 static int btusb_mtk_submit_wmt_recv_urb(struct hci_dev *hdev)
2980 struct btusb_data *data = hci_get_drvdata(hdev);
3013 buf, size, btusb_mtk_wmt_recv, hdev);
3021 bt_dev_err(hdev, "urb %p submission failed (%d)",
3031 static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
3034 struct btusb_data *data = hci_get_drvdata(hdev);
3070 err = __hci_cmd_send(hdev, 0xfc6f, hlen, wc);
3079 err = btusb_mtk_submit_wmt_recv_urb(hdev);
3098 bt_dev_err(hdev, "Execution of wmt command interrupted");
3104 bt_dev_err(hdev, "Execution of wmt command timed out");
3116 bt_dev_err(hdev, "Wrong op received %d expected %d",
3151 static int btusb_mtk_setup_firmware(struct hci_dev *hdev, const char *fwname)
3160 err = request_firmware(&fw, fwname, &hdev->dev);
3162 bt_dev_err(hdev, "Failed to load firmware file (%d)", err);
3174 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3176 bt_dev_err(hdev, "Failed to power on data RAM (%d)", err);
3209 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3211 bt_dev_err(hdev, "Failed to send wmt patch dwnld (%d)",
3227 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3229 bt_dev_err(hdev, "Failed to send wmt rst (%d)", err);
3242 static int btusb_mtk_func_query(struct hci_dev *hdev)
3255 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3257 bt_dev_err(hdev, "Failed to query function status (%d)", err);
3294 static int btusb_mtk_setup(struct hci_dev *hdev)
3296 struct btusb_data *data = hci_get_drvdata(hdev);
3311 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3323 bt_dev_err(hdev, "Unsupported support hardware variant (%08x)",
3335 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3337 bt_dev_err(hdev, "Failed to query firmware status (%d)", err);
3342 bt_dev_info(hdev, "firmware already downloaded");
3347 err = btusb_mtk_setup_firmware(hdev, fwname);
3352 err = readx_poll_timeout(btusb_mtk_func_query, hdev, status,
3364 bt_dev_info(hdev, "function already on");
3376 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3378 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3390 skb = __hci_cmd_sync(hdev, 0xfc7a, sizeof(tci_sleep), &tci_sleep,
3394 bt_dev_err(hdev, "Failed to apply low power setting (%d)", err);
3403 bt_dev_info(hdev, "Device setup in %llu usecs", duration);
3408 static int btusb_mtk_shutdown(struct hci_dev *hdev)
3421 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3423 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3435 static int marvell_config_oob_wake(struct hci_dev *hdev)
3438 struct btusb_data *data = hci_get_drvdata(hdev);
3459 bt_dev_err(hdev, "%s: No memory\n", __func__);
3466 ret = btusb_send_frame(hdev, skb);
3468 bt_dev_err(hdev, "%s: configuration failed\n", __func__);
3477 static int btusb_set_bdaddr_marvell(struct hci_dev *hdev,
3488 skb = __hci_cmd_sync(hdev, 0xfc22, sizeof(buf), buf, HCI_INIT_TIMEOUT);
3491 bt_dev_err(hdev, "changing Marvell device address failed (%ld)",
3500 static int btusb_set_bdaddr_ath3012(struct hci_dev *hdev,
3513 skb = __hci_cmd_sync(hdev, 0xfc0b, sizeof(buf), buf, HCI_INIT_TIMEOUT);
3516 bt_dev_err(hdev, "Change address command failed (%ld)", ret);
3524 static int btusb_set_bdaddr_wcn6855(struct hci_dev *hdev,
3533 skb = __hci_cmd_sync_ev(hdev, 0xfc14, sizeof(buf), buf,
3537 bt_dev_err(hdev, "Change address command failed (%ld)", ret);
3616 static int btusb_setup_qca_download_fw(struct hci_dev *hdev,
3620 struct btusb_data *btdata = hci_get_drvdata(hdev);
3644 bt_dev_err(hdev, "Failed to send headers (%d)", err);
3665 bt_dev_err(hdev, "Failed to send body at %zd of %zd (%d)",
3671 bt_dev_err(hdev, "Failed to get bulk buffer");
3685 static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
3701 err = request_firmware(&fw, fwname, &hdev->dev);
3703 bt_dev_err(hdev, "failed to request rampatch file: %s (%d)",
3708 bt_dev_info(hdev, "using rampatch file: %s", fwname);
3721 bt_dev_info(hdev, "QCA: patch rome 0x%x build 0x%x, "
3726 bt_dev_err(hdev, "rampatch file version did not match with firmware");
3731 err = btusb_setup_qca_download_fw(hdev, fw, info->rampatch_hdr);
3739 static int btusb_setup_qca_load_nvm(struct hci_dev *hdev,
3750 err = request_firmware(&fw, fwname, &hdev->dev);
3752 bt_dev_err(hdev, "failed to request NVM file: %s (%d)",
3757 bt_dev_info(hdev, "using NVM file: %s", fwname);
3759 err = btusb_setup_qca_download_fw(hdev, fw, info->nvm_hdr);
3778 static int btusb_setup_qca(struct hci_dev *hdev)
3780 struct btusb_data *btdata = hci_get_drvdata(hdev);
3807 bt_dev_err(hdev, "don't support firmware rome 0x%x", ver_rom);
3817 err = btusb_setup_qca_load_rampatch(hdev, &ver, info);
3823 err = btusb_setup_qca_load_nvm(hdev, &ver, info);
3831 static inline int __set_diag_interface(struct hci_dev *hdev)
3833 struct btusb_data *data = hci_get_drvdata(hdev);
3860 bt_dev_err(hdev, "invalid diagnostic descriptors");
3867 static struct urb *alloc_diag_urb(struct hci_dev *hdev, bool enable)
3869 struct btusb_data *data = hci_get_drvdata(hdev);
3895 skb->dev = (void *)hdev;
3900 static int btusb_bcm_set_diag(struct hci_dev *hdev, bool enable)
3902 struct btusb_data *data = hci_get_drvdata(hdev);
3908 if (!test_bit(HCI_RUNNING, &hdev->flags))
3911 urb = alloc_diag_urb(hdev, enable);
3915 return submit_or_queue_tx_urb(hdev, urb);
3943 static int btusb_config_oob_wake(struct hci_dev *hdev)
3945 struct btusb_data *data = hci_get_drvdata(hdev);
3957 bt_dev_dbg(hdev, "%s: no OOB Wakeup IRQ in DT", __func__);
3962 ret = devm_request_irq(&hdev->dev, irq, btusb_oob_wake_handler,
3965 bt_dev_err(hdev, "%s: IRQ request failed", __func__);
3971 bt_dev_err(hdev, "%s: failed to init_wakeup", __func__);
3976 bt_dev_info(hdev, "OOB Wake-on-BT configured at IRQ %u", irq);
3987 static bool btusb_prevent_wake(struct hci_dev *hdev)
3989 struct btusb_data *data = hci_get_drvdata(hdev);
4003 struct hci_dev *hdev;
4100 hdev = hci_alloc_dev();
4101 if (!hdev)
4104 hdev->bus = HCI_USB;
4105 hci_set_drvdata(hdev, data);
4108 hdev->dev_type = HCI_AMP;
4110 hdev->dev_type = HCI_PRIMARY;
4112 data->hdev = hdev;
4114 SET_HCIDEV_DEV(hdev, &intf->dev);
4125 hdev->open = btusb_open;
4126 hdev->close = btusb_close;
4127 hdev->flush = btusb_flush;
4128 hdev->send = btusb_send_frame;
4129 hdev->notify = btusb_notify;
4130 hdev->prevent_wake = btusb_prevent_wake;
4133 err = btusb_config_oob_wake(hdev);
4139 err = marvell_config_oob_wake(hdev);
4145 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
4148 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
4151 hdev->setup = btusb_setup_bcm92035;
4155 hdev->manufacturer = 15;
4156 hdev->setup = btbcm_setup_patchram;
4157 hdev->set_diag = btusb_bcm_set_diag;
4158 hdev->set_bdaddr = btbcm_set_bdaddr;
4166 hdev->manufacturer = 15;
4167 hdev->setup = btbcm_setup_apple;
4168 hdev->set_diag = btusb_bcm_set_diag;
4175 hdev->manufacturer = 2;
4176 hdev->setup = btusb_setup_intel;
4177 hdev->shutdown = btusb_shutdown_intel;
4178 hdev->set_diag = btintel_set_diag_mfg;
4179 hdev->set_bdaddr = btintel_set_bdaddr;
4180 hdev->cmd_timeout = btusb_intel_cmd_timeout;
4181 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
4182 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4183 set_bit(HCI_QUIRK_NON_PERSISTENT_DIAG, &hdev->quirks);
4187 hdev->manufacturer = 2;
4188 hdev->send = btusb_send_frame_intel;
4189 hdev->setup = btusb_setup_intel_new;
4190 hdev->shutdown = btusb_shutdown_intel_new;
4191 hdev->hw_error = btintel_hw_error;
4192 hdev->set_diag = btintel_set_diag;
4193 hdev->set_bdaddr = btintel_set_bdaddr;
4194 hdev->cmd_timeout = btusb_intel_cmd_timeout;
4195 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
4196 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4197 set_bit(HCI_QUIRK_NON_PERSISTENT_DIAG, &hdev->quirks);
4201 hdev->set_bdaddr = btusb_set_bdaddr_marvell;
4205 hdev->setup = btusb_mtk_setup;
4206 hdev->shutdown = btusb_mtk_shutdown;
4207 hdev->manufacturer = 70;
4208 set_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks);
4212 set_bit(HCI_QUIRK_FIXUP_INQUIRY_MODE, &hdev->quirks);
4213 set_bit(HCI_QUIRK_BROKEN_LOCAL_COMMANDS, &hdev->quirks);
4217 hdev->manufacturer = 2;
4218 set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
4223 hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
4224 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4225 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
4230 hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
4231 hdev->cmd_timeout = btusb_qca_cmd_timeout;
4232 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4238 hdev->set_bdaddr = btusb_set_bdaddr_wcn6855;
4239 hdev->cmd_timeout = btusb_qca_cmd_timeout;
4240 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4254 hdev->setup = btrtl_setup_realtek;
4255 hdev->shutdown = btrtl_shutdown_realtek;
4256 hdev->cmd_timeout = btusb_rtl_cmd_timeout;
4267 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4271 set_bit(HCI_QUIRK_FIXUP_BUFFER_SIZE, &hdev->quirks);
4278 set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks);
4281 set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks);
4285 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4294 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4297 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4302 hdev->setup = btusb_setup_csr;
4310 set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
4334 __set_diag_interface(hdev);
4342 err = hci_register_dev(hdev);
4353 hci_free_dev(hdev);
4360 struct hci_dev *hdev;
4367 hdev = data->hdev;
4376 hci_unregister_dev(hdev);
4399 hci_free_dev(hdev);
4461 data->hdev->name, urb, -err);
4482 struct hci_dev *hdev = data->hdev;
4496 if (!test_bit(HCI_RUNNING, &hdev->flags))
4500 err = btusb_submit_intr_urb(hdev, GFP_NOIO);
4508 err = btusb_submit_bulk_urb(hdev, GFP_NOIO);
4514 btusb_submit_bulk_urb(hdev, GFP_NOIO);
4518 if (btusb_submit_isoc_urb(hdev, GFP_NOIO) < 0)
4521 btusb_submit_isoc_urb(hdev, GFP_NOIO);