Lines Matching defs:hdev

836 	struct hci_dev       *hdev;
888 int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb);
889 int (*recv_acl)(struct hci_dev *hdev, struct sk_buff *skb);
892 int (*setup_on_usb)(struct hci_dev *hdev);
900 static void btusb_reset(struct hci_dev *hdev)
905 if (hdev->reset) {
906 hdev->reset(hdev);
910 data = hci_get_drvdata(hdev);
914 bt_dev_err(hdev, "Failed usb_autopm_get_interface: %d", err);
918 bt_dev_err(hdev, "Resetting usb device.");
922 static void btusb_intel_cmd_timeout(struct hci_dev *hdev)
924 struct btusb_data *data = hci_get_drvdata(hdev);
926 struct btintel_data *intel_data = hci_get_priv(hdev);
933 bt_dev_err(hdev, "acpi: last reset failed ? Not resetting again");
937 bt_dev_err(hdev, "Initiating acpi reset method");
941 if (!intel_data->acpi_reset_method(hdev)) {
947 btusb_reset(hdev);
959 bt_dev_err(hdev, "last reset failed? Not resetting again");
963 bt_dev_err(hdev, "Initiating HW reset via gpio");
981 static inline void btusb_rtl_alloc_devcoredump(struct hci_dev *hdev,
994 if (!hci_devcd_init(hdev, skb->len)) {
995 hci_devcd_append(hdev, skb);
996 hci_devcd_complete(hdev);
998 bt_dev_err(hdev, "RTL: Failed to generate devcoredump");
1003 static void btusb_rtl_cmd_timeout(struct hci_dev *hdev)
1005 struct btusb_data *data = hci_get_drvdata(hdev);
1011 btusb_rtl_alloc_devcoredump(hdev, &hdr, NULL, 0);
1017 btusb_reset(hdev);
1028 bt_dev_err(hdev, "last reset failed? Not resetting again");
1032 bt_dev_err(hdev, "Reset Realtek device via gpio");
1038 static void btusb_rtl_hw_error(struct hci_dev *hdev, u8 code)
1045 bt_dev_err(hdev, "RTL: hw err, trigger devcoredump (%d)", code);
1047 btusb_rtl_alloc_devcoredump(hdev, &hdr, NULL, 0);
1050 static void btusb_qca_cmd_timeout(struct hci_dev *hdev)
1052 struct btusb_data *data = hci_get_drvdata(hdev);
1056 bt_dev_info(hdev, "Ramdump in progress, defer cmd_timeout");
1064 bt_dev_err(hdev, "Reset qca device via bt_en gpio");
1073 bt_dev_err(hdev, "last reset failed? Not resetting again");
1084 btusb_reset(hdev);
1112 return data->recv_event(data->hdev, skb);
1177 return data->recv_acl(data->hdev, skb);
1243 static bool btusb_validate_sco_handle(struct hci_dev *hdev,
1248 if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL))
1262 switch (hci_conn_lookup_type(hdev, handle)) {
1308 !btusb_validate_sco_handle(data->hdev, hdr)) {
1319 hci_recv_frame(data->hdev, skb);
1332 struct hci_dev *hdev = urb->context;
1333 struct btusb_data *data = hci_get_drvdata(hdev);
1336 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1339 if (!test_bit(HCI_RUNNING, &hdev->flags))
1343 hdev->stat.byte_rx += urb->actual_length;
1347 bt_dev_err(hdev, "corrupted event packet");
1348 hdev->stat.err_rx++;
1367 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1370 hci_cmd_sync_cancel(hdev, -err);
1375 static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
1377 struct btusb_data *data = hci_get_drvdata(hdev);
1383 BT_DBG("%s", hdev->name);
1403 btusb_intr_complete, hdev, data->intr_ep->bInterval);
1412 bt_dev_err(hdev, "urb %p submission failed (%d)",
1415 hci_cmd_sync_cancel(hdev, -err);
1448 struct hci_dev *hdev = urb->context;
1449 struct btusb_data *data = hci_get_drvdata(hdev);
1452 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1455 if (!test_bit(HCI_RUNNING, &hdev->flags))
1459 hdev->stat.byte_rx += urb->actual_length;
1463 bt_dev_err(hdev, "corrupted ACL packet");
1464 hdev->stat.err_rx++;
1483 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1489 static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags)
1491 struct btusb_data *data = hci_get_drvdata(hdev);
1497 BT_DBG("%s", hdev->name);
1515 btusb_bulk_complete, hdev);
1525 bt_dev_err(hdev, "urb %p submission failed (%d)",
1537 struct hci_dev *hdev = urb->context;
1538 struct btusb_data *data = hci_get_drvdata(hdev);
1541 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1544 if (!test_bit(HCI_RUNNING, &hdev->flags))
1555 hdev->stat.byte_rx += length;
1559 bt_dev_err(hdev, "corrupted SCO packet");
1560 hdev->stat.err_rx++;
1579 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1649 static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags)
1651 struct btusb_data *data = hci_get_drvdata(hdev);
1657 BT_DBG("%s", hdev->name);
1678 hdev, data->isoc_rx_ep->bInterval);
1690 bt_dev_err(hdev, "urb %p submission failed (%d)",
1702 struct hci_dev *hdev = urb->context;
1703 struct btusb_data *data = hci_get_drvdata(hdev);
1706 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1716 hci_recv_diag(hdev, skb);
1735 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1741 static int btusb_submit_diag_urb(struct hci_dev *hdev, gfp_t mem_flags)
1743 struct btusb_data *data = hci_get_drvdata(hdev);
1749 BT_DBG("%s", hdev->name);
1767 btusb_diag_complete, hdev);
1777 bt_dev_err(hdev, "urb %p submission failed (%d)",
1790 struct hci_dev *hdev = (struct hci_dev *)skb->dev;
1791 struct btusb_data *data = hci_get_drvdata(hdev);
1794 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1797 if (!test_bit(HCI_RUNNING, &hdev->flags))
1801 hdev->stat.byte_tx += urb->transfer_buffer_length;
1804 hci_cmd_sync_cancel(hdev, -urb->status);
1805 hdev->stat.err_tx++;
1821 struct hci_dev *hdev = (struct hci_dev *)skb->dev;
1823 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1826 if (!test_bit(HCI_RUNNING, &hdev->flags))
1830 hdev->stat.byte_tx += urb->transfer_buffer_length;
1832 hdev->stat.err_tx++;
1840 static int btusb_open(struct hci_dev *hdev)
1842 struct btusb_data *data = hci_get_drvdata(hdev);
1845 BT_DBG("%s", hdev->name);
1855 err = data->setup_on_usb(hdev);
1865 err = btusb_submit_intr_urb(hdev, GFP_KERNEL);
1869 err = btusb_submit_bulk_urb(hdev, GFP_KERNEL);
1876 btusb_submit_bulk_urb(hdev, GFP_KERNEL);
1879 if (!btusb_submit_diag_urb(hdev, GFP_KERNEL))
1903 static int btusb_close(struct hci_dev *hdev)
1905 struct btusb_data *data = hci_get_drvdata(hdev);
1908 BT_DBG("%s", hdev->name);
1941 static int btusb_flush(struct hci_dev *hdev)
1943 struct btusb_data *data = hci_get_drvdata(hdev);
1945 BT_DBG("%s", hdev->name);
1957 static struct urb *alloc_ctrl_urb(struct hci_dev *hdev, struct sk_buff *skb)
1959 struct btusb_data *data = hci_get_drvdata(hdev);
1985 skb->dev = (void *)hdev;
1990 static struct urb *alloc_bulk_urb(struct hci_dev *hdev, struct sk_buff *skb)
1992 struct btusb_data *data = hci_get_drvdata(hdev);
2008 skb->dev = (void *)hdev;
2013 static struct urb *alloc_isoc_urb(struct hci_dev *hdev, struct sk_buff *skb)
2015 struct btusb_data *data = hci_get_drvdata(hdev);
2041 skb->dev = (void *)hdev;
2046 static int submit_tx_urb(struct hci_dev *hdev, struct urb *urb)
2048 struct btusb_data *data = hci_get_drvdata(hdev);
2056 bt_dev_err(hdev, "urb %p submission failed (%d)",
2068 static int submit_or_queue_tx_urb(struct hci_dev *hdev, struct urb *urb)
2070 struct btusb_data *data = hci_get_drvdata(hdev);
2081 return submit_tx_urb(hdev, urb);
2090 static int btusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
2094 BT_DBG("%s", hdev->name);
2098 urb = alloc_ctrl_urb(hdev, skb);
2102 hdev->stat.cmd_tx++;
2103 return submit_or_queue_tx_urb(hdev, urb);
2106 urb = alloc_bulk_urb(hdev, skb);
2110 hdev->stat.acl_tx++;
2111 return submit_or_queue_tx_urb(hdev, urb);
2114 if (hci_conn_num(hdev, SCO_LINK) < 1)
2117 urb = alloc_isoc_urb(hdev, skb);
2121 hdev->stat.sco_tx++;
2122 return submit_tx_urb(hdev, urb);
2125 urb = alloc_bulk_urb(hdev, skb);
2129 return submit_or_queue_tx_urb(hdev, urb);
2135 static void btusb_notify(struct hci_dev *hdev, unsigned int evt)
2137 struct btusb_data *data = hci_get_drvdata(hdev);
2139 BT_DBG("%s evt %d", hdev->name, evt);
2141 if (hci_conn_num(hdev, SCO_LINK) != data->sco_num) {
2142 data->sco_num = hci_conn_num(hdev, SCO_LINK);
2148 static inline int __set_isoc_interface(struct hci_dev *hdev, int altsetting)
2150 struct btusb_data *data = hci_get_drvdata(hdev);
2160 bt_dev_err(hdev, "setting interface failed (%d)", -err);
2184 bt_dev_err(hdev, "invalid SCO descriptors");
2191 static int btusb_switch_alt_setting(struct hci_dev *hdev, int new_alts)
2193 struct btusb_data *data = hci_get_drvdata(hdev);
2216 err = __set_isoc_interface(hdev, new_alts);
2222 if (btusb_submit_isoc_urb(hdev, GFP_KERNEL) < 0)
2225 btusb_submit_isoc_urb(hdev, GFP_KERNEL);
2253 struct hci_dev *hdev = data->hdev;
2270 if (hdev->voice_setting & 0x0020) {
2290 hdev->sco_mtu >= 72 &&
2297 if (btusb_switch_alt_setting(hdev, new_alts) < 0)
2298 bt_dev_err(hdev, "set USB alt:(%d) failed!", new_alts);
2303 __set_isoc_interface(hdev, 0);
2330 data->recv_acl(data->hdev, skb);
2333 static int btusb_setup_bcm92035(struct hci_dev *hdev)
2338 BT_DBG("%s", hdev->name);
2340 skb = __hci_cmd_sync(hdev, 0xfc3b, 1, &val, HCI_INIT_TIMEOUT);
2342 bt_dev_err(hdev, "BCM92035 command failed (%ld)", PTR_ERR(skb));
2349 static int btusb_setup_csr(struct hci_dev *hdev)
2351 struct btusb_data *data = hci_get_drvdata(hdev);
2358 BT_DBG("%s", hdev->name);
2360 skb = __hci_cmd_sync(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL,
2364 bt_dev_err(hdev, "CSR: Local version failed (%d)", err);
2370 bt_dev_err(hdev, "CSR: Local version length mismatch");
2375 bt_dev_info(hdev, "CSR: Setting up dongle with HCI ver=%u rev=%04x",
2378 bt_dev_info(hdev, "LMP ver=%u subver=%04x; manufacturer=%u",
2436 bt_dev_warn(hdev, "CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...");
2443 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
2444 set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
2445 set_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks);
2446 set_bit(HCI_QUIRK_NO_SUSPEND_NOTIFIER, &hdev->quirks);
2451 clear_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
2452 clear_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
2486 bt_dev_warn(hdev, "CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround");
2502 static int inject_cmd_complete(struct hci_dev *hdev, __u16 opcode)
2524 return hci_recv_frame(hdev, skb);
2530 struct hci_dev *hdev = data->hdev;
2536 if (btintel_test_flag(hdev, INTEL_BOOTLOADER))
2542 static int btusb_send_frame_intel(struct hci_dev *hdev, struct sk_buff *skb)
2546 BT_DBG("%s", hdev->name);
2550 if (btintel_test_flag(hdev, INTEL_BOOTLOADER)) {
2559 urb = alloc_bulk_urb(hdev, skb);
2561 urb = alloc_ctrl_urb(hdev, skb);
2569 inject_cmd_complete(hdev, opcode);
2571 urb = alloc_ctrl_urb(hdev, skb);
2576 hdev->stat.cmd_tx++;
2577 return submit_or_queue_tx_urb(hdev, urb);
2580 urb = alloc_bulk_urb(hdev, skb);
2584 hdev->stat.acl_tx++;
2585 return submit_or_queue_tx_urb(hdev, urb);
2588 if (hci_conn_num(hdev, SCO_LINK) < 1)
2591 urb = alloc_isoc_urb(hdev, skb);
2595 hdev->stat.sco_tx++;
2596 return submit_tx_urb(hdev, urb);
2599 urb = alloc_bulk_urb(hdev, skb);
2603 return submit_or_queue_tx_urb(hdev, urb);
2609 static int btusb_setup_realtek(struct hci_dev *hdev)
2611 struct btusb_data *data = hci_get_drvdata(hdev);
2614 ret = btrtl_setup_realtek(hdev);
2616 if (btrealtek_test_flag(data->hdev, REALTEK_ALT6_CONTINUOUS_TX_CHIP))
2622 static int btusb_recv_event_realtek(struct hci_dev *hdev, struct sk_buff *skb)
2629 bt_dev_dbg(hdev, "RTL: received coredump vendor evt, len %u",
2632 btusb_rtl_alloc_devcoredump(hdev, &hdr, skb->data, skb->len);
2638 return hci_recv_frame(hdev, skb);
2656 struct hci_dev *hdev = urb->context;
2657 struct btusb_data *data = hci_get_drvdata(hdev);
2662 hdev->stat.byte_rx += urb->actual_length;
2669 hdev->stat.err_rx++;
2689 err = hci_recv_frame(hdev, skb);
2730 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
2736 static int btusb_mtk_submit_wmt_recv_urb(struct hci_dev *hdev)
2738 struct btusb_data *data = hci_get_drvdata(hdev);
2771 buf, size, btusb_mtk_wmt_recv, hdev);
2779 bt_dev_err(hdev, "urb %p submission failed (%d)",
2789 static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
2792 struct btusb_data *data = hci_get_drvdata(hdev);
2828 err = __hci_cmd_send(hdev, 0xfc6f, hlen, wc);
2837 err = btusb_mtk_submit_wmt_recv_urb(hdev);
2856 bt_dev_err(hdev, "Execution of wmt command interrupted");
2862 bt_dev_err(hdev, "Execution of wmt command timed out");
2874 bt_dev_err(hdev, "Wrong op received %d expected %d",
2917 static int btusb_mtk_func_query(struct hci_dev *hdev)
2930 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
2932 bt_dev_err(hdev, "Failed to query function status (%d)", err);
2941 struct hci_dev *hdev = data->hdev;
2957 bt_dev_err(hdev, "Failed to write uhw reg(%d)", err);
2969 struct hci_dev *hdev = data->hdev;
2983 bt_dev_err(hdev, "Failed to read uhw reg(%d)", err);
2988 bt_dev_dbg(hdev, "reg=%x, value=0x%08x", reg, *val);
3026 static u32 btusb_mtk_reset_done(struct hci_dev *hdev)
3028 struct btusb_data *data = hci_get_drvdata(hdev);
3036 static int btusb_mtk_reset(struct hci_dev *hdev, void *rst_data)
3038 struct btusb_data *data = hci_get_drvdata(hdev);
3045 bt_dev_err(hdev, "last reset failed? Not resetting again");
3055 mediatek = hci_get_priv(hdev);
3076 bt_dev_dbg(hdev, "Initiating reset mechanism via uhw");
3092 err = readx_poll_timeout(btusb_mtk_reset_done, hdev, val,
3095 bt_dev_err(hdev, "Reset timeout");
3099 bt_dev_err(hdev, "Can't get device id, subsys reset fail.");
3108 static int btusb_mtk_setup(struct hci_dev *hdev)
3110 struct btusb_data *data = hci_get_drvdata(hdev);
3128 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3135 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3140 bt_dev_err(hdev, "Failed to get fw version (%d)", err);
3145 bt_dev_err(hdev, "Failed to get fw flavor (%d)", err);
3151 mediatek = hci_get_priv(hdev);
3155 err = btmtk_register_coredump(hdev, btusb_driver.name, fw_version);
3157 bt_dev_err(hdev, "Failed to register coredump (%d)", err);
3182 err = btmtk_setup_firmware_79xx(hdev, fw_bin_name,
3185 bt_dev_err(hdev, "Failed to set up firmware (%d)", err);
3200 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3202 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3206 hci_set_msft_opcode(hdev, 0xFD30);
3207 hci_set_aosp_capable(hdev);
3210 bt_dev_err(hdev, "Unsupported hardware variant (%08x)",
3222 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3224 bt_dev_err(hdev, "Failed to query firmware status (%d)", err);
3229 bt_dev_info(hdev, "firmware already downloaded");
3234 err = btmtk_setup_firmware(hdev, fwname,
3240 err = readx_poll_timeout(btusb_mtk_func_query, hdev, status,
3252 bt_dev_info(hdev, "function already on");
3264 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3266 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3278 skb = __hci_cmd_sync(hdev, 0xfc7a, sizeof(tci_sleep), &tci_sleep,
3282 bt_dev_err(hdev, "Failed to apply low power setting (%d)", err);
3292 bt_dev_info(hdev, "Device setup in %llu usecs", duration);
3297 static int btusb_mtk_shutdown(struct hci_dev *hdev)
3310 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3312 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3319 static int btusb_recv_acl_mtk(struct hci_dev *hdev, struct sk_buff *skb)
3321 struct btusb_data *data = hci_get_drvdata(hdev);
3339 btmtk_process_coredump(hdev, skb_cd);
3345 return hci_recv_diag(hdev, skb);
3348 return hci_recv_frame(hdev, skb);
3353 static int marvell_config_oob_wake(struct hci_dev *hdev)
3356 struct btusb_data *data = hci_get_drvdata(hdev);
3377 bt_dev_err(hdev, "%s: No memory", __func__);
3384 ret = btusb_send_frame(hdev, skb);
3386 bt_dev_err(hdev, "%s: configuration failed", __func__);
3395 static int btusb_set_bdaddr_marvell(struct hci_dev *hdev,
3406 skb = __hci_cmd_sync(hdev, 0xfc22, sizeof(buf), buf, HCI_INIT_TIMEOUT);
3409 bt_dev_err(hdev, "changing Marvell device address failed (%ld)",
3418 static int btusb_set_bdaddr_ath3012(struct hci_dev *hdev,
3431 skb = __hci_cmd_sync(hdev, 0xfc0b, sizeof(buf), buf, HCI_INIT_TIMEOUT);
3434 bt_dev_err(hdev, "Change address command failed (%ld)", ret);
3442 static int btusb_set_bdaddr_wcn6855(struct hci_dev *hdev,
3451 skb = __hci_cmd_sync_ev(hdev, 0xfc14, sizeof(buf), buf,
3455 bt_dev_err(hdev, "Change address command failed (%ld)", ret);
3485 static void btusb_dump_hdr_qca(struct hci_dev *hdev, struct sk_buff *skb)
3488 struct btusb_data *btdata = hci_get_drvdata(hdev);
3507 hdev->lmp_subver);
3511 static void btusb_coredump_qca(struct hci_dev *hdev)
3516 err = __hci_cmd_send(hdev, 0xfc0c, 1, param);
3518 bt_dev_err(hdev, "%s: triggle crash failed (%d)", __func__, err);
3526 static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb)
3538 struct btusb_data *btdata = hci_get_drvdata(hdev);
3576 bt_dev_err(hdev, "Invalid memdump size(%u)",
3581 ret = hci_devcd_init(hdev, dump_size);
3583 bt_dev_err(hdev, "memdump init error(%d)", ret);
3593 bt_dev_info(hdev, "%s memdump size(%u)\n",
3603 bt_dev_err(hdev, "memdump is not active");
3609 hci_devcd_append_pattern(hdev, 0x0, dump_size);
3610 bt_dev_err(hdev,
3619 hci_devcd_append(hdev, skb);
3622 bt_dev_info(hdev,
3626 hci_devcd_complete(hdev);
3643 static int btusb_recv_acl_qca(struct hci_dev *hdev, struct sk_buff *skb)
3645 if (handle_dump_pkt_qca(hdev, skb))
3647 return hci_recv_frame(hdev, skb);
3650 static int btusb_recv_evt_qca(struct hci_dev *hdev, struct sk_buff *skb)
3652 if (handle_dump_pkt_qca(hdev, skb))
3654 return hci_recv_frame(hdev, skb);
3738 static int btusb_setup_qca_download_fw(struct hci_dev *hdev,
3742 struct btusb_data *btdata = hci_get_drvdata(hdev);
3766 bt_dev_err(hdev, "Failed to send headers (%d)", err);
3787 bt_dev_err(hdev, "Failed to send body at %zd of %zd (%d)",
3793 bt_dev_err(hdev, "Failed to get bulk buffer");
3807 static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
3823 err = request_firmware(&fw, fwname, &hdev->dev);
3825 bt_dev_err(hdev, "failed to request rampatch file: %s (%d)",
3830 bt_dev_info(hdev, "using rampatch file: %s", fwname);
3843 bt_dev_info(hdev, "QCA: patch rome 0x%x build 0x%x, "
3848 bt_dev_err(hdev, "rampatch file version did not match with firmware");
3853 err = btusb_setup_qca_download_fw(hdev, fw, info->rampatch_hdr);
3905 static int btusb_setup_qca_load_nvm(struct hci_dev *hdev,
3915 err = request_firmware(&fw, fwname, &hdev->dev);
3917 bt_dev_err(hdev, "failed to request NVM file: %s (%d)",
3922 bt_dev_info(hdev, "using NVM file: %s", fwname);
3924 err = btusb_setup_qca_download_fw(hdev, fw, info->nvm_hdr);
3943 static int btusb_setup_qca(struct hci_dev *hdev)
3945 struct btusb_data *btdata = hci_get_drvdata(hdev);
3972 bt_dev_err(hdev, "don't support firmware rome 0x%x", ver_rom);
3982 err = btusb_setup_qca_load_rampatch(hdev, &ver, info);
3996 err = btusb_setup_qca_load_nvm(hdev, &ver, info);
4011 set_bit(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN, &hdev->quirks);
4016 static inline int __set_diag_interface(struct hci_dev *hdev)
4018 struct btusb_data *data = hci_get_drvdata(hdev);
4045 bt_dev_err(hdev, "invalid diagnostic descriptors");
4052 static struct urb *alloc_diag_urb(struct hci_dev *hdev, bool enable)
4054 struct btusb_data *data = hci_get_drvdata(hdev);
4080 skb->dev = (void *)hdev;
4085 static int btusb_bcm_set_diag(struct hci_dev *hdev, bool enable)
4087 struct btusb_data *data = hci_get_drvdata(hdev);
4093 if (!test_bit(HCI_RUNNING, &hdev->flags))
4096 urb = alloc_diag_urb(hdev, enable);
4100 return submit_or_queue_tx_urb(hdev, urb);
4128 static int btusb_config_oob_wake(struct hci_dev *hdev)
4130 struct btusb_data *data = hci_get_drvdata(hdev);
4142 bt_dev_dbg(hdev, "%s: no OOB Wakeup IRQ in DT", __func__);
4147 ret = devm_request_irq(&hdev->dev, irq, btusb_oob_wake_handler,
4150 bt_dev_err(hdev, "%s: IRQ request failed", __func__);
4156 bt_dev_err(hdev, "%s: failed to init_wakeup", __func__);
4161 bt_dev_info(hdev, "OOB Wake-on-BT configured at IRQ %u", irq);
4172 static bool btusb_wakeup(struct hci_dev *hdev)
4174 struct btusb_data *data = hci_get_drvdata(hdev);
4179 static int btusb_shutdown_qca(struct hci_dev *hdev)
4183 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
4185 bt_dev_err(hdev, "HCI reset during shutdown failed");
4218 if (test_bit(HCI_UP, &data->hdev->flags))
4242 struct hci_dev *hdev;
4355 hdev = hci_alloc_dev_priv(priv_size);
4356 if (!hdev)
4359 hdev->bus = HCI_USB;
4360 hci_set_drvdata(hdev, data);
4362 data->hdev = hdev;
4364 SET_HCIDEV_DEV(hdev, &intf->dev);
4375 hdev->open = btusb_open;
4376 hdev->close = btusb_close;
4377 hdev->flush = btusb_flush;
4378 hdev->send = btusb_send_frame;
4379 hdev->notify = btusb_notify;
4380 hdev->wakeup = btusb_wakeup;
4383 err = btusb_config_oob_wake(hdev);
4389 err = marvell_config_oob_wake(hdev);
4395 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
4398 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
4401 hdev->setup = btusb_setup_bcm92035;
4405 hdev->manufacturer = 15;
4406 hdev->setup = btbcm_setup_patchram;
4407 hdev->set_diag = btusb_bcm_set_diag;
4408 hdev->set_bdaddr = btbcm_set_bdaddr;
4416 hdev->manufacturer = 15;
4417 hdev->setup = btbcm_setup_apple;
4418 hdev->set_diag = btusb_bcm_set_diag;
4426 err = btintel_configure_setup(hdev, btusb_driver.name);
4431 hdev->send = btusb_send_frame_intel;
4432 hdev->cmd_timeout = btusb_intel_cmd_timeout;
4435 btintel_set_flag(hdev, INTEL_ROM_LEGACY_NO_WBS_SUPPORT);
4438 btintel_set_flag(hdev, INTEL_BROKEN_INITIAL_NCMD);
4441 btintel_set_flag(hdev, INTEL_BROKEN_SHUTDOWN_LED);
4445 hdev->set_bdaddr = btusb_set_bdaddr_marvell;
4449 hdev->setup = btusb_mtk_setup;
4450 hdev->shutdown = btusb_mtk_shutdown;
4451 hdev->manufacturer = 70;
4452 hdev->cmd_timeout = btmtk_reset_sync;
4453 hdev->set_bdaddr = btmtk_set_bdaddr;
4454 set_bit(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN, &hdev->quirks);
4455 set_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks);
4460 set_bit(HCI_QUIRK_FIXUP_INQUIRY_MODE, &hdev->quirks);
4461 set_bit(HCI_QUIRK_BROKEN_LOCAL_COMMANDS, &hdev->quirks);
4465 hdev->manufacturer = 2;
4466 set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
4471 hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
4472 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4473 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
4478 hdev->shutdown = btusb_shutdown_qca;
4479 hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
4480 hdev->cmd_timeout = btusb_qca_cmd_timeout;
4481 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4490 hci_devcd_register(hdev, btusb_coredump_qca, btusb_dump_hdr_qca, NULL);
4492 hdev->shutdown = btusb_shutdown_qca;
4493 hdev->set_bdaddr = btusb_set_bdaddr_wcn6855;
4494 hdev->cmd_timeout = btusb_qca_cmd_timeout;
4495 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4496 hci_set_msft_opcode(hdev, 0xFD70);
4510 btrtl_set_driver_name(hdev, btusb_driver.name);
4511 hdev->setup = btusb_setup_realtek;
4512 hdev->shutdown = btrtl_shutdown_realtek;
4513 hdev->cmd_timeout = btusb_rtl_cmd_timeout;
4514 hdev->hw_error = btusb_rtl_hw_error;
4523 set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
4524 set_bit(HCI_QUIRK_BROKEN_READ_TRANSMIT_POWER, &hdev->quirks);
4525 set_bit(HCI_QUIRK_BROKEN_SET_RPA_TIMEOUT, &hdev->quirks);
4526 set_bit(HCI_QUIRK_BROKEN_EXT_SCAN, &hdev->quirks);
4527 set_bit(HCI_QUIRK_BROKEN_READ_ENC_KEY_SIZE, &hdev->quirks);
4531 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4535 set_bit(HCI_QUIRK_FIXUP_BUFFER_SIZE, &hdev->quirks);
4542 set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks);
4545 set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks);
4549 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4558 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4561 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4566 hdev->setup = btusb_setup_csr;
4574 set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
4598 __set_diag_interface(hdev);
4608 err = hci_register_dev(hdev);
4614 debugfs_create_file("force_poll_sync", 0644, hdev->debugfs, data,
4622 hci_free_dev(hdev);
4629 struct hci_dev *hdev;
4636 hdev = data->hdev;
4645 hci_unregister_dev(hdev);
4668 hci_free_dev(hdev);
4679 if (hci_conn_count(data->hdev))
4737 data->hdev->name, urb, -err);
4758 struct hci_dev *hdev = data->hdev;
4772 if (!test_bit(HCI_RUNNING, &hdev->flags))
4776 err = btusb_submit_intr_urb(hdev, GFP_NOIO);
4784 err = btusb_submit_bulk_urb(hdev, GFP_NOIO);
4790 btusb_submit_bulk_urb(hdev, GFP_NOIO);
4794 if (btusb_submit_isoc_urb(hdev, GFP_NOIO) < 0)
4797 btusb_submit_isoc_urb(hdev, GFP_NOIO);
4823 struct hci_dev *hdev = data->hdev;
4825 if (hdev->dump.coredump)
4826 hdev->dump.coredump(hdev);