Lines Matching defs:hdev
793 struct hci_dev *hdev;
845 int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb);
846 int (*recv_acl)(struct hci_dev *hdev, struct sk_buff *skb);
849 int (*setup_on_usb)(struct hci_dev *hdev);
857 static void btusb_reset(struct hci_dev *hdev)
862 if (hdev->reset) {
863 hdev->reset(hdev);
867 data = hci_get_drvdata(hdev);
871 bt_dev_err(hdev, "Failed usb_autopm_get_interface: %d", err);
875 bt_dev_err(hdev, "Resetting usb device.");
879 static void btusb_intel_cmd_timeout(struct hci_dev *hdev)
881 struct btusb_data *data = hci_get_drvdata(hdev);
883 struct btintel_data *intel_data = hci_get_priv(hdev);
890 bt_dev_err(hdev, "acpi: last reset failed ? Not resetting again");
894 bt_dev_err(hdev, "Initiating acpi reset method");
898 if (!intel_data->acpi_reset_method(hdev)) {
904 btusb_reset(hdev);
916 bt_dev_err(hdev, "last reset failed? Not resetting again");
920 bt_dev_err(hdev, "Initiating HW reset via gpio");
938 static inline void btusb_rtl_alloc_devcoredump(struct hci_dev *hdev,
951 if (!hci_devcd_init(hdev, skb->len)) {
952 hci_devcd_append(hdev, skb);
953 hci_devcd_complete(hdev);
955 bt_dev_err(hdev, "RTL: Failed to generate devcoredump");
960 static void btusb_rtl_cmd_timeout(struct hci_dev *hdev)
962 struct btusb_data *data = hci_get_drvdata(hdev);
968 btusb_rtl_alloc_devcoredump(hdev, &hdr, NULL, 0);
974 btusb_reset(hdev);
985 bt_dev_err(hdev, "last reset failed? Not resetting again");
989 bt_dev_err(hdev, "Reset Realtek device via gpio");
995 static void btusb_rtl_hw_error(struct hci_dev *hdev, u8 code)
1002 bt_dev_err(hdev, "RTL: hw err, trigger devcoredump (%d)", code);
1004 btusb_rtl_alloc_devcoredump(hdev, &hdr, NULL, 0);
1007 static void btusb_qca_cmd_timeout(struct hci_dev *hdev)
1009 struct btusb_data *data = hci_get_drvdata(hdev);
1013 bt_dev_info(hdev, "Ramdump in progress, defer cmd_timeout");
1021 bt_dev_err(hdev, "Reset qca device via bt_en gpio");
1030 bt_dev_err(hdev, "last reset failed? Not resetting again");
1041 btusb_reset(hdev);
1069 return data->recv_event(data->hdev, skb);
1134 return data->recv_acl(data->hdev, skb);
1200 static bool btusb_validate_sco_handle(struct hci_dev *hdev,
1205 if (hci_dev_test_flag(hdev, HCI_USER_CHANNEL))
1219 switch (hci_conn_lookup_type(hdev, handle)) {
1265 !btusb_validate_sco_handle(data->hdev, hdr)) {
1276 hci_recv_frame(data->hdev, skb);
1289 struct hci_dev *hdev = urb->context;
1290 struct btusb_data *data = hci_get_drvdata(hdev);
1293 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1296 if (!test_bit(HCI_RUNNING, &hdev->flags))
1300 hdev->stat.byte_rx += urb->actual_length;
1304 bt_dev_err(hdev, "corrupted event packet");
1305 hdev->stat.err_rx++;
1324 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1327 hci_cmd_sync_cancel(hdev, -err);
1332 static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags)
1334 struct btusb_data *data = hci_get_drvdata(hdev);
1340 BT_DBG("%s", hdev->name);
1360 btusb_intr_complete, hdev, data->intr_ep->bInterval);
1369 bt_dev_err(hdev, "urb %p submission failed (%d)",
1372 hci_cmd_sync_cancel(hdev, -err);
1405 struct hci_dev *hdev = urb->context;
1406 struct btusb_data *data = hci_get_drvdata(hdev);
1409 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1412 if (!test_bit(HCI_RUNNING, &hdev->flags))
1416 hdev->stat.byte_rx += urb->actual_length;
1420 bt_dev_err(hdev, "corrupted ACL packet");
1421 hdev->stat.err_rx++;
1440 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1446 static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags)
1448 struct btusb_data *data = hci_get_drvdata(hdev);
1454 BT_DBG("%s", hdev->name);
1472 btusb_bulk_complete, hdev);
1482 bt_dev_err(hdev, "urb %p submission failed (%d)",
1494 struct hci_dev *hdev = urb->context;
1495 struct btusb_data *data = hci_get_drvdata(hdev);
1498 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1501 if (!test_bit(HCI_RUNNING, &hdev->flags))
1512 hdev->stat.byte_rx += length;
1516 bt_dev_err(hdev, "corrupted SCO packet");
1517 hdev->stat.err_rx++;
1536 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1606 static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags)
1608 struct btusb_data *data = hci_get_drvdata(hdev);
1614 BT_DBG("%s", hdev->name);
1635 hdev, data->isoc_rx_ep->bInterval);
1647 bt_dev_err(hdev, "urb %p submission failed (%d)",
1659 struct hci_dev *hdev = urb->context;
1660 struct btusb_data *data = hci_get_drvdata(hdev);
1663 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1673 hci_recv_diag(hdev, skb);
1692 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
1698 static int btusb_submit_diag_urb(struct hci_dev *hdev, gfp_t mem_flags)
1700 struct btusb_data *data = hci_get_drvdata(hdev);
1706 BT_DBG("%s", hdev->name);
1724 btusb_diag_complete, hdev);
1734 bt_dev_err(hdev, "urb %p submission failed (%d)",
1747 struct hci_dev *hdev = (struct hci_dev *)skb->dev;
1748 struct btusb_data *data = hci_get_drvdata(hdev);
1751 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1754 if (!test_bit(HCI_RUNNING, &hdev->flags))
1758 hdev->stat.byte_tx += urb->transfer_buffer_length;
1761 hci_cmd_sync_cancel(hdev, -urb->status);
1762 hdev->stat.err_tx++;
1778 struct hci_dev *hdev = (struct hci_dev *)skb->dev;
1780 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status,
1783 if (!test_bit(HCI_RUNNING, &hdev->flags))
1787 hdev->stat.byte_tx += urb->transfer_buffer_length;
1789 hdev->stat.err_tx++;
1797 static int btusb_open(struct hci_dev *hdev)
1799 struct btusb_data *data = hci_get_drvdata(hdev);
1802 BT_DBG("%s", hdev->name);
1812 err = data->setup_on_usb(hdev);
1822 err = btusb_submit_intr_urb(hdev, GFP_KERNEL);
1826 err = btusb_submit_bulk_urb(hdev, GFP_KERNEL);
1833 btusb_submit_bulk_urb(hdev, GFP_KERNEL);
1836 if (!btusb_submit_diag_urb(hdev, GFP_KERNEL))
1860 static int btusb_close(struct hci_dev *hdev)
1862 struct btusb_data *data = hci_get_drvdata(hdev);
1865 BT_DBG("%s", hdev->name);
1898 static int btusb_flush(struct hci_dev *hdev)
1900 struct btusb_data *data = hci_get_drvdata(hdev);
1902 BT_DBG("%s", hdev->name);
1914 static struct urb *alloc_ctrl_urb(struct hci_dev *hdev, struct sk_buff *skb)
1916 struct btusb_data *data = hci_get_drvdata(hdev);
1942 skb->dev = (void *)hdev;
1947 static struct urb *alloc_bulk_urb(struct hci_dev *hdev, struct sk_buff *skb)
1949 struct btusb_data *data = hci_get_drvdata(hdev);
1965 skb->dev = (void *)hdev;
1970 static struct urb *alloc_isoc_urb(struct hci_dev *hdev, struct sk_buff *skb)
1972 struct btusb_data *data = hci_get_drvdata(hdev);
1998 skb->dev = (void *)hdev;
2003 static int submit_tx_urb(struct hci_dev *hdev, struct urb *urb)
2005 struct btusb_data *data = hci_get_drvdata(hdev);
2013 bt_dev_err(hdev, "urb %p submission failed (%d)",
2025 static int submit_or_queue_tx_urb(struct hci_dev *hdev, struct urb *urb)
2027 struct btusb_data *data = hci_get_drvdata(hdev);
2038 return submit_tx_urb(hdev, urb);
2047 static int btusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb)
2051 BT_DBG("%s", hdev->name);
2055 urb = alloc_ctrl_urb(hdev, skb);
2059 hdev->stat.cmd_tx++;
2060 return submit_or_queue_tx_urb(hdev, urb);
2063 urb = alloc_bulk_urb(hdev, skb);
2067 hdev->stat.acl_tx++;
2068 return submit_or_queue_tx_urb(hdev, urb);
2071 if (hci_conn_num(hdev, SCO_LINK) < 1)
2074 urb = alloc_isoc_urb(hdev, skb);
2078 hdev->stat.sco_tx++;
2079 return submit_tx_urb(hdev, urb);
2082 urb = alloc_bulk_urb(hdev, skb);
2086 return submit_or_queue_tx_urb(hdev, urb);
2092 static void btusb_notify(struct hci_dev *hdev, unsigned int evt)
2094 struct btusb_data *data = hci_get_drvdata(hdev);
2096 BT_DBG("%s evt %d", hdev->name, evt);
2098 if (hci_conn_num(hdev, SCO_LINK) != data->sco_num) {
2099 data->sco_num = hci_conn_num(hdev, SCO_LINK);
2105 static inline int __set_isoc_interface(struct hci_dev *hdev, int altsetting)
2107 struct btusb_data *data = hci_get_drvdata(hdev);
2117 bt_dev_err(hdev, "setting interface failed (%d)", -err);
2141 bt_dev_err(hdev, "invalid SCO descriptors");
2148 static int btusb_switch_alt_setting(struct hci_dev *hdev, int new_alts)
2150 struct btusb_data *data = hci_get_drvdata(hdev);
2173 err = __set_isoc_interface(hdev, new_alts);
2179 if (btusb_submit_isoc_urb(hdev, GFP_KERNEL) < 0)
2182 btusb_submit_isoc_urb(hdev, GFP_KERNEL);
2210 struct hci_dev *hdev = data->hdev;
2227 if (hdev->voice_setting & 0x0020) {
2247 hdev->sco_mtu >= 72 &&
2254 if (btusb_switch_alt_setting(hdev, new_alts) < 0)
2255 bt_dev_err(hdev, "set USB alt:(%d) failed!", new_alts);
2260 __set_isoc_interface(hdev, 0);
2287 data->recv_acl(data->hdev, skb);
2290 static int btusb_setup_bcm92035(struct hci_dev *hdev)
2295 BT_DBG("%s", hdev->name);
2297 skb = __hci_cmd_sync(hdev, 0xfc3b, 1, &val, HCI_INIT_TIMEOUT);
2299 bt_dev_err(hdev, "BCM92035 command failed (%ld)", PTR_ERR(skb));
2306 static int btusb_setup_csr(struct hci_dev *hdev)
2308 struct btusb_data *data = hci_get_drvdata(hdev);
2315 BT_DBG("%s", hdev->name);
2317 skb = __hci_cmd_sync(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL,
2321 bt_dev_err(hdev, "CSR: Local version failed (%d)", err);
2327 bt_dev_err(hdev, "CSR: Local version length mismatch");
2332 bt_dev_info(hdev, "CSR: Setting up dongle with HCI ver=%u rev=%04x",
2335 bt_dev_info(hdev, "LMP ver=%u subver=%04x; manufacturer=%u",
2393 bt_dev_warn(hdev, "CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...");
2400 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
2401 set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
2402 set_bit(HCI_QUIRK_BROKEN_FILTER_CLEAR_ALL, &hdev->quirks);
2403 set_bit(HCI_QUIRK_NO_SUSPEND_NOTIFIER, &hdev->quirks);
2408 clear_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
2409 clear_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
2443 bt_dev_warn(hdev, "CSR: Couldn't suspend the device for our Barrot 8041a02 receive-issue workaround");
2459 static int inject_cmd_complete(struct hci_dev *hdev, __u16 opcode)
2481 return hci_recv_frame(hdev, skb);
2487 struct hci_dev *hdev = data->hdev;
2493 if (btintel_test_flag(hdev, INTEL_BOOTLOADER))
2499 static int btusb_send_frame_intel(struct hci_dev *hdev, struct sk_buff *skb)
2503 BT_DBG("%s", hdev->name);
2507 if (btintel_test_flag(hdev, INTEL_BOOTLOADER)) {
2516 urb = alloc_bulk_urb(hdev, skb);
2518 urb = alloc_ctrl_urb(hdev, skb);
2526 inject_cmd_complete(hdev, opcode);
2528 urb = alloc_ctrl_urb(hdev, skb);
2533 hdev->stat.cmd_tx++;
2534 return submit_or_queue_tx_urb(hdev, urb);
2537 urb = alloc_bulk_urb(hdev, skb);
2541 hdev->stat.acl_tx++;
2542 return submit_or_queue_tx_urb(hdev, urb);
2545 if (hci_conn_num(hdev, SCO_LINK) < 1)
2548 urb = alloc_isoc_urb(hdev, skb);
2552 hdev->stat.sco_tx++;
2553 return submit_tx_urb(hdev, urb);
2556 urb = alloc_bulk_urb(hdev, skb);
2560 return submit_or_queue_tx_urb(hdev, urb);
2566 static int btusb_setup_realtek(struct hci_dev *hdev)
2568 struct btusb_data *data = hci_get_drvdata(hdev);
2571 ret = btrtl_setup_realtek(hdev);
2573 if (btrealtek_test_flag(data->hdev, REALTEK_ALT6_CONTINUOUS_TX_CHIP))
2579 static int btusb_recv_event_realtek(struct hci_dev *hdev, struct sk_buff *skb)
2586 bt_dev_dbg(hdev, "RTL: received coredump vendor evt, len %u",
2589 btusb_rtl_alloc_devcoredump(hdev, &hdr, skb->data, skb->len);
2595 return hci_recv_frame(hdev, skb);
2613 struct hci_dev *hdev = urb->context;
2614 struct btusb_data *data = hci_get_drvdata(hdev);
2619 hdev->stat.byte_rx += urb->actual_length;
2626 hdev->stat.err_rx++;
2646 err = hci_recv_frame(hdev, skb);
2687 bt_dev_err(hdev, "urb %p failed to resubmit (%d)",
2693 static int btusb_mtk_submit_wmt_recv_urb(struct hci_dev *hdev)
2695 struct btusb_data *data = hci_get_drvdata(hdev);
2728 buf, size, btusb_mtk_wmt_recv, hdev);
2736 bt_dev_err(hdev, "urb %p submission failed (%d)",
2746 static int btusb_mtk_hci_wmt_sync(struct hci_dev *hdev,
2749 struct btusb_data *data = hci_get_drvdata(hdev);
2785 err = __hci_cmd_send(hdev, 0xfc6f, hlen, wc);
2794 err = btusb_mtk_submit_wmt_recv_urb(hdev);
2813 bt_dev_err(hdev, "Execution of wmt command interrupted");
2819 bt_dev_err(hdev, "Execution of wmt command timed out");
2831 bt_dev_err(hdev, "Wrong op received %d expected %d",
2874 static int btusb_mtk_func_query(struct hci_dev *hdev)
2887 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
2889 bt_dev_err(hdev, "Failed to query function status (%d)", err);
2898 struct hci_dev *hdev = data->hdev;
2914 bt_dev_err(hdev, "Failed to write uhw reg(%d)", err);
2926 struct hci_dev *hdev = data->hdev;
2940 bt_dev_err(hdev, "Failed to read uhw reg(%d)", err);
2945 bt_dev_dbg(hdev, "reg=%x, value=0x%08x", reg, *val);
2983 static u32 btusb_mtk_reset_done(struct hci_dev *hdev)
2985 struct btusb_data *data = hci_get_drvdata(hdev);
2993 static int btusb_mtk_reset(struct hci_dev *hdev, void *rst_data)
2995 struct btusb_data *data = hci_get_drvdata(hdev);
3002 bt_dev_err(hdev, "last reset failed? Not resetting again");
3012 mediatek = hci_get_priv(hdev);
3033 bt_dev_dbg(hdev, "Initiating reset mechanism via uhw");
3049 err = readx_poll_timeout(btusb_mtk_reset_done, hdev, val,
3052 bt_dev_err(hdev, "Reset timeout");
3056 bt_dev_err(hdev, "Can't get device id, subsys reset fail.");
3065 static int btusb_mtk_setup(struct hci_dev *hdev)
3067 struct btusb_data *data = hci_get_drvdata(hdev);
3085 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3092 bt_dev_err(hdev, "Failed to get device id (%d)", err);
3097 bt_dev_err(hdev, "Failed to get fw version (%d)", err);
3102 mediatek = hci_get_priv(hdev);
3106 err = btmtk_register_coredump(hdev, btusb_driver.name, fw_version);
3108 bt_dev_err(hdev, "Failed to register coredump (%d)", err);
3129 err = btmtk_setup_firmware_79xx(hdev, fw_bin_name,
3132 bt_dev_err(hdev, "Failed to set up firmware (%d)", err);
3147 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3149 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3153 hci_set_msft_opcode(hdev, 0xFD30);
3154 hci_set_aosp_capable(hdev);
3157 bt_dev_err(hdev, "Unsupported hardware variant (%08x)",
3169 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3171 bt_dev_err(hdev, "Failed to query firmware status (%d)", err);
3176 bt_dev_info(hdev, "firmware already downloaded");
3181 err = btmtk_setup_firmware(hdev, fwname,
3187 err = readx_poll_timeout(btusb_mtk_func_query, hdev, status,
3199 bt_dev_info(hdev, "function already on");
3211 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3213 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3225 skb = __hci_cmd_sync(hdev, 0xfc7a, sizeof(tci_sleep), &tci_sleep,
3229 bt_dev_err(hdev, "Failed to apply low power setting (%d)", err);
3239 bt_dev_info(hdev, "Device setup in %llu usecs", duration);
3244 static int btusb_mtk_shutdown(struct hci_dev *hdev)
3257 err = btusb_mtk_hci_wmt_sync(hdev, &wmt_params);
3259 bt_dev_err(hdev, "Failed to send wmt func ctrl (%d)", err);
3266 static int btusb_recv_acl_mtk(struct hci_dev *hdev, struct sk_buff *skb)
3268 struct btusb_data *data = hci_get_drvdata(hdev);
3286 btmtk_process_coredump(hdev, skb_cd);
3292 return hci_recv_diag(hdev, skb);
3295 return hci_recv_frame(hdev, skb);
3300 static int marvell_config_oob_wake(struct hci_dev *hdev)
3303 struct btusb_data *data = hci_get_drvdata(hdev);
3324 bt_dev_err(hdev, "%s: No memory", __func__);
3331 ret = btusb_send_frame(hdev, skb);
3333 bt_dev_err(hdev, "%s: configuration failed", __func__);
3342 static int btusb_set_bdaddr_marvell(struct hci_dev *hdev,
3353 skb = __hci_cmd_sync(hdev, 0xfc22, sizeof(buf), buf, HCI_INIT_TIMEOUT);
3356 bt_dev_err(hdev, "changing Marvell device address failed (%ld)",
3365 static int btusb_set_bdaddr_ath3012(struct hci_dev *hdev,
3378 skb = __hci_cmd_sync(hdev, 0xfc0b, sizeof(buf), buf, HCI_INIT_TIMEOUT);
3381 bt_dev_err(hdev, "Change address command failed (%ld)", ret);
3389 static int btusb_set_bdaddr_wcn6855(struct hci_dev *hdev,
3398 skb = __hci_cmd_sync_ev(hdev, 0xfc14, sizeof(buf), buf,
3402 bt_dev_err(hdev, "Change address command failed (%ld)", ret);
3432 static void btusb_dump_hdr_qca(struct hci_dev *hdev, struct sk_buff *skb)
3435 struct btusb_data *btdata = hci_get_drvdata(hdev);
3454 hdev->lmp_subver);
3458 static void btusb_coredump_qca(struct hci_dev *hdev)
3463 skb = __hci_cmd_sync(hdev, 0xfc0c, 1, param, HCI_CMD_TIMEOUT);
3465 bt_dev_err(hdev, "%s: triggle crash failed (%ld)", __func__, PTR_ERR(skb));
3474 static int handle_dump_pkt_qca(struct hci_dev *hdev, struct sk_buff *skb)
3486 struct btusb_data *btdata = hci_get_drvdata(hdev);
3524 bt_dev_err(hdev, "Invalid memdump size(%u)",
3529 ret = hci_devcd_init(hdev, dump_size);
3531 bt_dev_err(hdev, "memdump init error(%d)", ret);
3541 bt_dev_info(hdev, "%s memdump size(%u)\n",
3551 bt_dev_err(hdev, "memdump is not active");
3557 hci_devcd_append_pattern(hdev, 0x0, dump_size);
3558 bt_dev_err(hdev,
3567 hci_devcd_append(hdev, skb);
3570 bt_dev_info(hdev,
3574 hci_devcd_complete(hdev);
3591 static int btusb_recv_acl_qca(struct hci_dev *hdev, struct sk_buff *skb)
3593 if (handle_dump_pkt_qca(hdev, skb))
3595 return hci_recv_frame(hdev, skb);
3598 static int btusb_recv_evt_qca(struct hci_dev *hdev, struct sk_buff *skb)
3600 if (handle_dump_pkt_qca(hdev, skb))
3602 return hci_recv_frame(hdev, skb);
3686 static int btusb_setup_qca_download_fw(struct hci_dev *hdev,
3690 struct btusb_data *btdata = hci_get_drvdata(hdev);
3714 bt_dev_err(hdev, "Failed to send headers (%d)", err);
3735 bt_dev_err(hdev, "Failed to send body at %zd of %zd (%d)",
3741 bt_dev_err(hdev, "Failed to get bulk buffer");
3755 static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev,
3771 err = request_firmware(&fw, fwname, &hdev->dev);
3773 bt_dev_err(hdev, "failed to request rampatch file: %s (%d)",
3778 bt_dev_info(hdev, "using rampatch file: %s", fwname);
3791 bt_dev_info(hdev, "QCA: patch rome 0x%x build 0x%x, "
3796 bt_dev_err(hdev, "rampatch file version did not match with firmware");
3801 err = btusb_setup_qca_download_fw(hdev, fw, info->rampatch_hdr);
3853 static int btusb_setup_qca_load_nvm(struct hci_dev *hdev,
3863 err = request_firmware(&fw, fwname, &hdev->dev);
3865 bt_dev_err(hdev, "failed to request NVM file: %s (%d)",
3870 bt_dev_info(hdev, "using NVM file: %s", fwname);
3872 err = btusb_setup_qca_download_fw(hdev, fw, info->nvm_hdr);
3891 static int btusb_setup_qca(struct hci_dev *hdev)
3893 struct btusb_data *btdata = hci_get_drvdata(hdev);
3920 bt_dev_err(hdev, "don't support firmware rome 0x%x", ver_rom);
3930 err = btusb_setup_qca_load_rampatch(hdev, &ver, info);
3944 err = btusb_setup_qca_load_nvm(hdev, &ver, info);
3959 set_bit(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN, &hdev->quirks);
3964 static inline int __set_diag_interface(struct hci_dev *hdev)
3966 struct btusb_data *data = hci_get_drvdata(hdev);
3993 bt_dev_err(hdev, "invalid diagnostic descriptors");
4000 static struct urb *alloc_diag_urb(struct hci_dev *hdev, bool enable)
4002 struct btusb_data *data = hci_get_drvdata(hdev);
4028 skb->dev = (void *)hdev;
4033 static int btusb_bcm_set_diag(struct hci_dev *hdev, bool enable)
4035 struct btusb_data *data = hci_get_drvdata(hdev);
4041 if (!test_bit(HCI_RUNNING, &hdev->flags))
4044 urb = alloc_diag_urb(hdev, enable);
4048 return submit_or_queue_tx_urb(hdev, urb);
4076 static int btusb_config_oob_wake(struct hci_dev *hdev)
4078 struct btusb_data *data = hci_get_drvdata(hdev);
4090 bt_dev_dbg(hdev, "%s: no OOB Wakeup IRQ in DT", __func__);
4095 ret = devm_request_irq(&hdev->dev, irq, btusb_oob_wake_handler,
4098 bt_dev_err(hdev, "%s: IRQ request failed", __func__);
4104 bt_dev_err(hdev, "%s: failed to init_wakeup", __func__);
4109 bt_dev_info(hdev, "OOB Wake-on-BT configured at IRQ %u", irq);
4120 static bool btusb_wakeup(struct hci_dev *hdev)
4122 struct btusb_data *data = hci_get_drvdata(hdev);
4127 static int btusb_shutdown_qca(struct hci_dev *hdev)
4131 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT);
4133 bt_dev_err(hdev, "HCI reset during shutdown failed");
4166 if (test_bit(HCI_UP, &data->hdev->flags))
4190 struct hci_dev *hdev;
4303 hdev = hci_alloc_dev_priv(priv_size);
4304 if (!hdev)
4307 hdev->bus = HCI_USB;
4308 hci_set_drvdata(hdev, data);
4311 hdev->dev_type = HCI_AMP;
4313 hdev->dev_type = HCI_PRIMARY;
4315 data->hdev = hdev;
4317 SET_HCIDEV_DEV(hdev, &intf->dev);
4328 hdev->open = btusb_open;
4329 hdev->close = btusb_close;
4330 hdev->flush = btusb_flush;
4331 hdev->send = btusb_send_frame;
4332 hdev->notify = btusb_notify;
4333 hdev->wakeup = btusb_wakeup;
4336 err = btusb_config_oob_wake(hdev);
4342 err = marvell_config_oob_wake(hdev);
4348 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
4351 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks);
4354 hdev->setup = btusb_setup_bcm92035;
4358 hdev->manufacturer = 15;
4359 hdev->setup = btbcm_setup_patchram;
4360 hdev->set_diag = btusb_bcm_set_diag;
4361 hdev->set_bdaddr = btbcm_set_bdaddr;
4369 hdev->manufacturer = 15;
4370 hdev->setup = btbcm_setup_apple;
4371 hdev->set_diag = btusb_bcm_set_diag;
4379 err = btintel_configure_setup(hdev, btusb_driver.name);
4384 hdev->send = btusb_send_frame_intel;
4385 hdev->cmd_timeout = btusb_intel_cmd_timeout;
4388 btintel_set_flag(hdev, INTEL_ROM_LEGACY_NO_WBS_SUPPORT);
4391 btintel_set_flag(hdev, INTEL_BROKEN_INITIAL_NCMD);
4394 btintel_set_flag(hdev, INTEL_BROKEN_SHUTDOWN_LED);
4398 hdev->set_bdaddr = btusb_set_bdaddr_marvell;
4402 hdev->setup = btusb_mtk_setup;
4403 hdev->shutdown = btusb_mtk_shutdown;
4404 hdev->manufacturer = 70;
4405 hdev->cmd_timeout = btmtk_reset_sync;
4406 hdev->set_bdaddr = btmtk_set_bdaddr;
4407 set_bit(HCI_QUIRK_BROKEN_ENHANCED_SETUP_SYNC_CONN, &hdev->quirks);
4408 set_bit(HCI_QUIRK_NON_PERSISTENT_SETUP, &hdev->quirks);
4413 set_bit(HCI_QUIRK_FIXUP_INQUIRY_MODE, &hdev->quirks);
4414 set_bit(HCI_QUIRK_BROKEN_LOCAL_COMMANDS, &hdev->quirks);
4418 hdev->manufacturer = 2;
4419 set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
4424 hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
4425 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4426 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks);
4431 hdev->shutdown = btusb_shutdown_qca;
4432 hdev->set_bdaddr = btusb_set_bdaddr_ath3012;
4433 hdev->cmd_timeout = btusb_qca_cmd_timeout;
4434 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4443 hci_devcd_register(hdev, btusb_coredump_qca, btusb_dump_hdr_qca, NULL);
4445 hdev->shutdown = btusb_shutdown_qca;
4446 hdev->set_bdaddr = btusb_set_bdaddr_wcn6855;
4447 hdev->cmd_timeout = btusb_qca_cmd_timeout;
4448 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4449 hci_set_msft_opcode(hdev, 0xFD70);
4463 btrtl_set_driver_name(hdev, btusb_driver.name);
4464 hdev->setup = btusb_setup_realtek;
4465 hdev->shutdown = btrtl_shutdown_realtek;
4466 hdev->cmd_timeout = btusb_rtl_cmd_timeout;
4467 hdev->hw_error = btusb_rtl_hw_error;
4476 set_bit(HCI_QUIRK_BROKEN_ERR_DATA_REPORTING, &hdev->quirks);
4477 set_bit(HCI_QUIRK_BROKEN_READ_TRANSMIT_POWER, &hdev->quirks);
4478 set_bit(HCI_QUIRK_BROKEN_SET_RPA_TIMEOUT, &hdev->quirks);
4479 set_bit(HCI_QUIRK_BROKEN_EXT_SCAN, &hdev->quirks);
4483 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4487 set_bit(HCI_QUIRK_FIXUP_BUFFER_SIZE, &hdev->quirks);
4494 set_bit(HCI_QUIRK_WIDEBAND_SPEECH_SUPPORTED, &hdev->quirks);
4497 set_bit(HCI_QUIRK_VALID_LE_STATES, &hdev->quirks);
4501 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4510 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks);
4513 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks);
4518 hdev->setup = btusb_setup_csr;
4526 set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks);
4550 __set_diag_interface(hdev);
4560 err = hci_register_dev(hdev);
4566 debugfs_create_file("force_poll_sync", 0644, hdev->debugfs, data,
4574 hci_free_dev(hdev);
4581 struct hci_dev *hdev;
4588 hdev = data->hdev;
4597 hci_unregister_dev(hdev);
4620 hci_free_dev(hdev);
4685 data->hdev->name, urb, -err);
4706 struct hci_dev *hdev = data->hdev;
4720 if (!test_bit(HCI_RUNNING, &hdev->flags))
4724 err = btusb_submit_intr_urb(hdev, GFP_NOIO);
4732 err = btusb_submit_bulk_urb(hdev, GFP_NOIO);
4738 btusb_submit_bulk_urb(hdev, GFP_NOIO);
4742 if (btusb_submit_isoc_urb(hdev, GFP_NOIO) < 0)
4745 btusb_submit_isoc_urb(hdev, GFP_NOIO);
4771 struct hci_dev *hdev = data->hdev;
4773 if (hdev->dump.coredump)
4774 hdev->dump.coredump(hdev);