Lines Matching refs:hdev

365 	struct hci_dev       *hdev;  member
406 int (*recv_event)(struct hci_dev *hdev, struct sk_buff *skb);
409 int (*setup_on_usb)(struct hci_dev *hdev);
474 data->recv_event(data->hdev, skb); in btusb_recv_intr()
531 hci_recv_frame(data->hdev, skb); in btusb_recv_bulk()
586 hci_recv_frame(data->hdev, skb); in btusb_recv_isoc()
599 struct hci_dev *hdev = urb->context; in btusb_intr_complete() local
600 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_intr_complete()
603 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_intr_complete()
606 if (!test_bit(HCI_RUNNING, &hdev->flags)) in btusb_intr_complete()
610 hdev->stat.byte_rx += urb->actual_length; in btusb_intr_complete()
614 BT_ERR("%s corrupted event packet", hdev->name); in btusb_intr_complete()
615 hdev->stat.err_rx++; in btusb_intr_complete()
634 hdev->name, urb, -err); in btusb_intr_complete()
639 static int btusb_submit_intr_urb(struct hci_dev *hdev, gfp_t mem_flags) in btusb_submit_intr_urb() argument
641 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_submit_intr_urb()
647 BT_DBG("%s", hdev->name); in btusb_submit_intr_urb()
667 btusb_intr_complete, hdev, data->intr_ep->bInterval); in btusb_submit_intr_urb()
677 hdev->name, urb, -err); in btusb_submit_intr_urb()
688 struct hci_dev *hdev = urb->context; in btusb_bulk_complete() local
689 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_bulk_complete()
692 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_bulk_complete()
695 if (!test_bit(HCI_RUNNING, &hdev->flags)) in btusb_bulk_complete()
699 hdev->stat.byte_rx += urb->actual_length; in btusb_bulk_complete()
703 BT_ERR("%s corrupted ACL packet", hdev->name); in btusb_bulk_complete()
704 hdev->stat.err_rx++; in btusb_bulk_complete()
723 hdev->name, urb, -err); in btusb_bulk_complete()
728 static int btusb_submit_bulk_urb(struct hci_dev *hdev, gfp_t mem_flags) in btusb_submit_bulk_urb() argument
730 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_submit_bulk_urb()
736 BT_DBG("%s", hdev->name); in btusb_submit_bulk_urb()
754 btusb_bulk_complete, hdev); in btusb_submit_bulk_urb()
765 hdev->name, urb, -err); in btusb_submit_bulk_urb()
776 struct hci_dev *hdev = urb->context; in btusb_isoc_complete() local
777 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_isoc_complete()
780 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_isoc_complete()
783 if (!test_bit(HCI_RUNNING, &hdev->flags)) in btusb_isoc_complete()
794 hdev->stat.byte_rx += length; in btusb_isoc_complete()
798 BT_ERR("%s corrupted SCO packet", hdev->name); in btusb_isoc_complete()
799 hdev->stat.err_rx++; in btusb_isoc_complete()
818 hdev->name, urb, -err); in btusb_isoc_complete()
844 static int btusb_submit_isoc_urb(struct hci_dev *hdev, gfp_t mem_flags) in btusb_submit_isoc_urb() argument
846 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_submit_isoc_urb()
852 BT_DBG("%s", hdev->name); in btusb_submit_isoc_urb()
873 hdev, data->isoc_rx_ep->bInterval); in btusb_submit_isoc_urb()
886 hdev->name, urb, -err); in btusb_submit_isoc_urb()
897 struct hci_dev *hdev = urb->context; in btusb_diag_complete() local
898 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_diag_complete()
901 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_diag_complete()
911 hci_recv_diag(hdev, skb); in btusb_diag_complete()
930 hdev->name, urb, -err); in btusb_diag_complete()
935 static int btusb_submit_diag_urb(struct hci_dev *hdev, gfp_t mem_flags) in btusb_submit_diag_urb() argument
937 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_submit_diag_urb()
943 BT_DBG("%s", hdev->name); in btusb_submit_diag_urb()
961 btusb_diag_complete, hdev); in btusb_submit_diag_urb()
972 hdev->name, urb, -err); in btusb_submit_diag_urb()
984 struct hci_dev *hdev = (struct hci_dev *)skb->dev; in btusb_tx_complete() local
985 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_tx_complete()
987 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_tx_complete()
990 if (!test_bit(HCI_RUNNING, &hdev->flags)) in btusb_tx_complete()
994 hdev->stat.byte_tx += urb->transfer_buffer_length; in btusb_tx_complete()
996 hdev->stat.err_tx++; in btusb_tx_complete()
1011 struct hci_dev *hdev = (struct hci_dev *)skb->dev; in btusb_isoc_tx_complete() local
1013 BT_DBG("%s urb %p status %d count %d", hdev->name, urb, urb->status, in btusb_isoc_tx_complete()
1016 if (!test_bit(HCI_RUNNING, &hdev->flags)) in btusb_isoc_tx_complete()
1020 hdev->stat.byte_tx += urb->transfer_buffer_length; in btusb_isoc_tx_complete()
1022 hdev->stat.err_tx++; in btusb_isoc_tx_complete()
1030 static int btusb_open(struct hci_dev *hdev) in btusb_open() argument
1032 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_open()
1035 BT_DBG("%s", hdev->name); in btusb_open()
1041 err = data->setup_on_usb(hdev); in btusb_open()
1055 err = btusb_submit_intr_urb(hdev, GFP_KERNEL); in btusb_open()
1059 err = btusb_submit_bulk_urb(hdev, GFP_KERNEL); in btusb_open()
1066 btusb_submit_bulk_urb(hdev, GFP_KERNEL); in btusb_open()
1069 if (!btusb_submit_diag_urb(hdev, GFP_KERNEL)) in btusb_open()
1091 static int btusb_close(struct hci_dev *hdev) in btusb_close() argument
1093 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_close()
1096 BT_DBG("%s", hdev->name); in btusb_close()
1121 static int btusb_flush(struct hci_dev *hdev) in btusb_flush() argument
1123 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_flush()
1125 BT_DBG("%s", hdev->name); in btusb_flush()
1133 static struct urb *alloc_ctrl_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_ctrl_urb() argument
1135 struct btusb_data *data = hci_get_drvdata(hdev); in alloc_ctrl_urb()
1161 skb->dev = (void *)hdev; in alloc_ctrl_urb()
1166 static struct urb *alloc_bulk_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_bulk_urb() argument
1168 struct btusb_data *data = hci_get_drvdata(hdev); in alloc_bulk_urb()
1184 skb->dev = (void *)hdev; in alloc_bulk_urb()
1189 static struct urb *alloc_isoc_urb(struct hci_dev *hdev, struct sk_buff *skb) in alloc_isoc_urb() argument
1191 struct btusb_data *data = hci_get_drvdata(hdev); in alloc_isoc_urb()
1213 skb->dev = (void *)hdev; in alloc_isoc_urb()
1218 static int submit_tx_urb(struct hci_dev *hdev, struct urb *urb) in submit_tx_urb() argument
1220 struct btusb_data *data = hci_get_drvdata(hdev); in submit_tx_urb()
1229 hdev->name, urb, -err); in submit_tx_urb()
1240 static int submit_or_queue_tx_urb(struct hci_dev *hdev, struct urb *urb) in submit_or_queue_tx_urb() argument
1242 struct btusb_data *data = hci_get_drvdata(hdev); in submit_or_queue_tx_urb()
1253 return submit_tx_urb(hdev, urb); in submit_or_queue_tx_urb()
1262 static int btusb_send_frame(struct hci_dev *hdev, struct sk_buff *skb) in btusb_send_frame() argument
1266 BT_DBG("%s", hdev->name); in btusb_send_frame()
1270 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame()
1274 hdev->stat.cmd_tx++; in btusb_send_frame()
1275 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame()
1278 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame()
1282 hdev->stat.acl_tx++; in btusb_send_frame()
1283 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame()
1286 if (hci_conn_num(hdev, SCO_LINK) < 1) in btusb_send_frame()
1289 urb = alloc_isoc_urb(hdev, skb); in btusb_send_frame()
1293 hdev->stat.sco_tx++; in btusb_send_frame()
1294 return submit_tx_urb(hdev, urb); in btusb_send_frame()
1300 static void btusb_notify(struct hci_dev *hdev, unsigned int evt) in btusb_notify() argument
1302 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_notify()
1304 BT_DBG("%s evt %d", hdev->name, evt); in btusb_notify()
1306 if (hci_conn_num(hdev, SCO_LINK) != data->sco_num) { in btusb_notify()
1307 data->sco_num = hci_conn_num(hdev, SCO_LINK); in btusb_notify()
1312 static inline int __set_isoc_interface(struct hci_dev *hdev, int altsetting) in __set_isoc_interface() argument
1314 struct btusb_data *data = hci_get_drvdata(hdev); in __set_isoc_interface()
1324 BT_ERR("%s setting interface failed (%d)", hdev->name, -err); in __set_isoc_interface()
1348 BT_ERR("%s invalid SCO descriptors", hdev->name); in __set_isoc_interface()
1358 struct hci_dev *hdev = data->hdev; in btusb_work() local
1374 if (hdev->voice_setting & 0x0020) { in btusb_work()
1402 if (__set_isoc_interface(hdev, new_alts) < 0) in btusb_work()
1407 if (btusb_submit_isoc_urb(hdev, GFP_KERNEL) < 0) in btusb_work()
1410 btusb_submit_isoc_urb(hdev, GFP_KERNEL); in btusb_work()
1416 __set_isoc_interface(hdev, 0); in btusb_work()
1434 static int btusb_setup_bcm92035(struct hci_dev *hdev) in btusb_setup_bcm92035() argument
1439 BT_DBG("%s", hdev->name); in btusb_setup_bcm92035()
1441 skb = __hci_cmd_sync(hdev, 0xfc3b, 1, &val, HCI_INIT_TIMEOUT); in btusb_setup_bcm92035()
1450 static int btusb_setup_csr(struct hci_dev *hdev) in btusb_setup_csr() argument
1455 BT_DBG("%s", hdev->name); in btusb_setup_csr()
1457 skb = __hci_cmd_sync(hdev, HCI_OP_READ_LOCAL_VERSION, 0, NULL, in btusb_setup_csr()
1461 BT_ERR("%s: CSR: Local version failed (%d)", hdev->name, err); in btusb_setup_csr()
1466 BT_ERR("%s: CSR: Local version length mismatch", hdev->name); in btusb_setup_csr()
1479 clear_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); in btusb_setup_csr()
1484 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks); in btusb_setup_csr()
1492 static const struct firmware *btusb_setup_intel_get_fw(struct hci_dev *hdev, in btusb_setup_intel_get_fw() argument
1505 ret = request_firmware(&fw, fwname, &hdev->dev); in btusb_setup_intel_get_fw()
1509 hdev->name, ret); in btusb_setup_intel_get_fw()
1514 hdev->name, fwname, ret); in btusb_setup_intel_get_fw()
1521 if (request_firmware(&fw, fwname, &hdev->dev) < 0) { in btusb_setup_intel_get_fw()
1523 hdev->name, fwname); in btusb_setup_intel_get_fw()
1528 BT_INFO("%s: Intel Bluetooth firmware file: %s", hdev->name, fwname); in btusb_setup_intel_get_fw()
1533 static int btusb_setup_intel_patching(struct hci_dev *hdev, in btusb_setup_intel_patching() argument
1552 BT_ERR("%s Intel fw corrupted: invalid cmd read", hdev->name); in btusb_setup_intel_patching()
1566 BT_ERR("%s Intel fw corrupted: invalid cmd len", hdev->name); in btusb_setup_intel_patching()
1600 hdev->name); in btusb_setup_intel_patching()
1614 BT_ERR("%s Intel fw corrupted: invalid evt read", hdev->name); in btusb_setup_intel_patching()
1618 skb = __hci_cmd_sync_ev(hdev, le16_to_cpu(cmd->opcode), cmd->plen, in btusb_setup_intel_patching()
1622 hdev->name, cmd->opcode, PTR_ERR(skb)); in btusb_setup_intel_patching()
1631 BT_ERR("%s mismatch event length (opcode 0x%4.4x)", hdev->name, in btusb_setup_intel_patching()
1639 hdev->name, le16_to_cpu(cmd->opcode)); in btusb_setup_intel_patching()
1648 static int btusb_setup_intel(struct hci_dev *hdev) in btusb_setup_intel() argument
1661 BT_DBG("%s", hdev->name); in btusb_setup_intel()
1671 skb = __hci_cmd_sync(hdev, HCI_OP_RESET, 0, NULL, HCI_INIT_TIMEOUT); in btusb_setup_intel()
1674 hdev->name, PTR_ERR(skb)); in btusb_setup_intel()
1685 skb = __hci_cmd_sync(hdev, 0xfc05, 0, NULL, HCI_INIT_TIMEOUT); in btusb_setup_intel()
1688 hdev->name, PTR_ERR(skb)); in btusb_setup_intel()
1693 BT_ERR("%s Intel version event length mismatch", hdev->name); in btusb_setup_intel()
1701 hdev->name, ver->hw_platform, ver->hw_variant, in btusb_setup_intel()
1712 hdev->name, ver->fw_patch_num); in btusb_setup_intel()
1723 fw = btusb_setup_intel_get_fw(hdev, ver); in btusb_setup_intel()
1738 skb = __hci_cmd_sync(hdev, 0xfc11, 2, mfg_enable, HCI_INIT_TIMEOUT); in btusb_setup_intel()
1741 hdev->name, PTR_ERR(skb)); in btusb_setup_intel()
1773 ret = btusb_setup_intel_patching(hdev, fw, &fw_ptr, in btusb_setup_intel()
1787 skb = __hci_cmd_sync(hdev, 0xfc11, sizeof(mfg_reset_activate), in btusb_setup_intel()
1791 hdev->name, PTR_ERR(skb)); in btusb_setup_intel()
1797 hdev->name); in btusb_setup_intel()
1803 skb = __hci_cmd_sync(hdev, 0xfc11, sizeof(mfg_disable), mfg_disable, in btusb_setup_intel()
1807 hdev->name, PTR_ERR(skb)); in btusb_setup_intel()
1812 BT_INFO("%s: Intel Bluetooth firmware patch completed", hdev->name); in btusb_setup_intel()
1822 skb = __hci_cmd_sync(hdev, 0xfc11, sizeof(mfg_reset_deactivate), in btusb_setup_intel()
1826 hdev->name, PTR_ERR(skb)); in btusb_setup_intel()
1832 hdev->name); in btusb_setup_intel()
1838 btintel_set_event_mask_mfg(hdev, false); in btusb_setup_intel()
1840 btintel_check_bdaddr(hdev); in btusb_setup_intel()
1844 static int inject_cmd_complete(struct hci_dev *hdev, __u16 opcode) in inject_cmd_complete() argument
1866 return hci_recv_frame(hdev, skb); in inject_cmd_complete()
1914 static int btusb_recv_event_intel(struct hci_dev *hdev, struct sk_buff *skb) in btusb_recv_event_intel() argument
1916 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_recv_event_intel()
1946 return hci_recv_frame(hdev, skb); in btusb_recv_event_intel()
1949 static int btusb_send_frame_intel(struct hci_dev *hdev, struct sk_buff *skb) in btusb_send_frame_intel() argument
1951 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_send_frame_intel()
1954 BT_DBG("%s", hdev->name); in btusb_send_frame_intel()
1967 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame_intel()
1969 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame_intel()
1977 inject_cmd_complete(hdev, opcode); in btusb_send_frame_intel()
1979 urb = alloc_ctrl_urb(hdev, skb); in btusb_send_frame_intel()
1984 hdev->stat.cmd_tx++; in btusb_send_frame_intel()
1985 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame_intel()
1988 urb = alloc_bulk_urb(hdev, skb); in btusb_send_frame_intel()
1992 hdev->stat.acl_tx++; in btusb_send_frame_intel()
1993 return submit_or_queue_tx_urb(hdev, urb); in btusb_send_frame_intel()
1996 if (hci_conn_num(hdev, SCO_LINK) < 1) in btusb_send_frame_intel()
1999 urb = alloc_isoc_urb(hdev, skb); in btusb_send_frame_intel()
2003 hdev->stat.sco_tx++; in btusb_send_frame_intel()
2004 return submit_tx_urb(hdev, urb); in btusb_send_frame_intel()
2010 static int btusb_setup_intel_new(struct hci_dev *hdev) in btusb_setup_intel_new() argument
2014 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_setup_intel_new()
2026 BT_DBG("%s", hdev->name); in btusb_setup_intel_new()
2034 skb = __hci_cmd_sync(hdev, 0xfc05, 0, NULL, HCI_INIT_TIMEOUT); in btusb_setup_intel_new()
2037 hdev->name, PTR_ERR(skb)); in btusb_setup_intel_new()
2042 BT_ERR("%s: Intel version event size mismatch", hdev->name); in btusb_setup_intel_new()
2054 hdev->name, ver->hw_platform); in btusb_setup_intel_new()
2066 hdev->name, ver->hw_variant); in btusb_setup_intel_new()
2071 btintel_version_info(hdev, ver); in btusb_setup_intel_new()
2089 btintel_check_bdaddr(hdev); in btusb_setup_intel_new()
2098 hdev->name, ver->fw_variant); in btusb_setup_intel_new()
2108 skb = __hci_cmd_sync(hdev, 0xfc0d, 0, NULL, HCI_INIT_TIMEOUT); in btusb_setup_intel_new()
2111 hdev->name, PTR_ERR(skb)); in btusb_setup_intel_new()
2116 BT_ERR("%s: Intel boot parameters size mismatch", hdev->name); in btusb_setup_intel_new()
2123 BT_INFO("%s: Device revision is %u", hdev->name, in btusb_setup_intel_new()
2126 BT_INFO("%s: Secure boot is %s", hdev->name, in btusb_setup_intel_new()
2129 BT_INFO("%s: OTP lock is %s", hdev->name, in btusb_setup_intel_new()
2132 BT_INFO("%s: API lock is %s", hdev->name, in btusb_setup_intel_new()
2135 BT_INFO("%s: Debug lock is %s", hdev->name, in btusb_setup_intel_new()
2138 BT_INFO("%s: Minimum firmware build %u week %u %u", hdev->name, in btusb_setup_intel_new()
2148 hdev->name, params->limited_cce); in btusb_setup_intel_new()
2157 BT_INFO("%s: No device address configured", hdev->name); in btusb_setup_intel_new()
2158 set_bit(HCI_QUIRK_INVALID_BDADDR, &hdev->quirks); in btusb_setup_intel_new()
2170 err = request_firmware(&fw, fwname, &hdev->dev); in btusb_setup_intel_new()
2173 hdev->name, err); in btusb_setup_intel_new()
2178 BT_INFO("%s: Found device firmware: %s", hdev->name, fwname); in btusb_setup_intel_new()
2190 hdev->name, fw->size); in btusb_setup_intel_new()
2200 err = btintel_secure_send(hdev, 0x00, 128, fw->data); in btusb_setup_intel_new()
2203 hdev->name, err); in btusb_setup_intel_new()
2210 err = btintel_secure_send(hdev, 0x03, 256, fw->data + 128); in btusb_setup_intel_new()
2213 hdev->name, err); in btusb_setup_intel_new()
2220 err = btintel_secure_send(hdev, 0x02, 256, fw->data + 388); in btusb_setup_intel_new()
2223 hdev->name, err); in btusb_setup_intel_new()
2244 err = btintel_secure_send(hdev, 0x01, frag_len, fw_ptr); in btusb_setup_intel_new()
2247 hdev->name, err); in btusb_setup_intel_new()
2258 BT_INFO("%s: Waiting for firmware download to complete", hdev->name); in btusb_setup_intel_new()
2275 BT_ERR("%s: Firmware loading interrupted", hdev->name); in btusb_setup_intel_new()
2281 BT_ERR("%s: Firmware loading timeout", hdev->name); in btusb_setup_intel_new()
2287 BT_ERR("%s: Firmware loading failed", hdev->name); in btusb_setup_intel_new()
2296 BT_INFO("%s: Firmware loaded in %llu usecs", hdev->name, duration); in btusb_setup_intel_new()
2308 skb = __hci_cmd_sync(hdev, 0xfc01, sizeof(reset_param), reset_param, in btusb_setup_intel_new()
2322 BT_INFO("%s: Waiting for device to boot", hdev->name); in btusb_setup_intel_new()
2329 BT_ERR("%s: Device boot interrupted", hdev->name); in btusb_setup_intel_new()
2334 BT_ERR("%s: Device boot timeout", hdev->name); in btusb_setup_intel_new()
2342 BT_INFO("%s: Device booted in %llu usecs", hdev->name, duration); in btusb_setup_intel_new()
2352 btintel_load_ddc_config(hdev, fwname); in btusb_setup_intel_new()
2361 btintel_set_event_mask(hdev, false); in btusb_setup_intel_new()
2366 static int btusb_shutdown_intel(struct hci_dev *hdev) in btusb_shutdown_intel() argument
2375 skb = __hci_cmd_sync(hdev, 0xfc3f, 0, NULL, HCI_INIT_TIMEOUT); in btusb_shutdown_intel()
2379 hdev->name, ret); in btusb_shutdown_intel()
2387 static int btusb_set_bdaddr_marvell(struct hci_dev *hdev, in btusb_set_bdaddr_marvell() argument
2398 skb = __hci_cmd_sync(hdev, 0xfc22, sizeof(buf), buf, HCI_INIT_TIMEOUT); in btusb_set_bdaddr_marvell()
2402 hdev->name, ret); in btusb_set_bdaddr_marvell()
2410 static int btusb_set_bdaddr_ath3012(struct hci_dev *hdev, in btusb_set_bdaddr_ath3012() argument
2423 skb = __hci_cmd_sync(hdev, 0xfc0b, sizeof(buf), buf, HCI_INIT_TIMEOUT); in btusb_set_bdaddr_ath3012()
2427 hdev->name, ret); in btusb_set_bdaddr_ath3012()
2474 static int btusb_qca_send_vendor_req(struct hci_dev *hdev, u8 request, in btusb_qca_send_vendor_req() argument
2477 struct btusb_data *btdata = hci_get_drvdata(hdev); in btusb_qca_send_vendor_req()
2493 BT_ERR("%s: Failed to access otp area (%d)", hdev->name, err); in btusb_qca_send_vendor_req()
2505 static int btusb_setup_qca_download_fw(struct hci_dev *hdev, in btusb_setup_qca_download_fw() argument
2509 struct btusb_data *btdata = hci_get_drvdata(hdev); in btusb_setup_qca_download_fw()
2533 BT_ERR("%s: Failed to send headers (%d)", hdev->name, err); in btusb_setup_qca_download_fw()
2550 hdev->name, sent, firmware->size, err); in btusb_setup_qca_download_fw()
2555 BT_ERR("%s: Failed to get bulk buffer", hdev->name); in btusb_setup_qca_download_fw()
2569 static int btusb_setup_qca_load_rampatch(struct hci_dev *hdev, in btusb_setup_qca_load_rampatch() argument
2585 err = request_firmware(&fw, fwname, &hdev->dev); in btusb_setup_qca_load_rampatch()
2588 hdev->name, fwname, err); in btusb_setup_qca_load_rampatch()
2592 BT_INFO("%s: using rampatch file: %s", hdev->name, fwname); in btusb_setup_qca_load_rampatch()
2599 "build 0x%x", hdev->name, rver_rom, rver_patch, ver_rom, in btusb_setup_qca_load_rampatch()
2604 hdev->name); in btusb_setup_qca_load_rampatch()
2609 err = btusb_setup_qca_download_fw(hdev, fw, info->rampatch_hdr); in btusb_setup_qca_load_rampatch()
2617 static int btusb_setup_qca_load_nvm(struct hci_dev *hdev, in btusb_setup_qca_load_nvm() argument
2628 err = request_firmware(&fw, fwname, &hdev->dev); in btusb_setup_qca_load_nvm()
2631 hdev->name, fwname, err); in btusb_setup_qca_load_nvm()
2635 BT_INFO("%s: using NVM file: %s", hdev->name, fwname); in btusb_setup_qca_load_nvm()
2637 err = btusb_setup_qca_download_fw(hdev, fw, info->nvm_hdr); in btusb_setup_qca_load_nvm()
2644 static int btusb_setup_qca(struct hci_dev *hdev) in btusb_setup_qca() argument
2652 err = btusb_qca_send_vendor_req(hdev, QCA_GET_TARGET_VERSION, &ver, in btusb_setup_qca()
2663 BT_ERR("%s: don't support firmware rome 0x%x", hdev->name, in btusb_setup_qca()
2668 err = btusb_qca_send_vendor_req(hdev, QCA_CHECK_STATUS, &status, in btusb_setup_qca()
2674 err = btusb_setup_qca_load_rampatch(hdev, &ver, info); in btusb_setup_qca()
2680 err = btusb_setup_qca_load_nvm(hdev, &ver, info); in btusb_setup_qca()
2689 static inline int __set_diag_interface(struct hci_dev *hdev) in __set_diag_interface() argument
2691 struct btusb_data *data = hci_get_drvdata(hdev); in __set_diag_interface()
2718 BT_ERR("%s invalid diagnostic descriptors", hdev->name); in __set_diag_interface()
2725 static struct urb *alloc_diag_urb(struct hci_dev *hdev, bool enable) in alloc_diag_urb() argument
2727 struct btusb_data *data = hci_get_drvdata(hdev); in alloc_diag_urb()
2753 skb->dev = (void *)hdev; in alloc_diag_urb()
2758 static int btusb_bcm_set_diag(struct hci_dev *hdev, bool enable) in btusb_bcm_set_diag() argument
2760 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_bcm_set_diag()
2766 if (!test_bit(HCI_RUNNING, &hdev->flags)) in btusb_bcm_set_diag()
2769 urb = alloc_diag_urb(hdev, enable); in btusb_bcm_set_diag()
2773 return submit_or_queue_tx_urb(hdev, urb); in btusb_bcm_set_diag()
2782 struct hci_dev *hdev; in btusb_probe() local
2876 hdev = hci_alloc_dev(); in btusb_probe()
2877 if (!hdev) in btusb_probe()
2880 hdev->bus = HCI_USB; in btusb_probe()
2881 hci_set_drvdata(hdev, data); in btusb_probe()
2884 hdev->dev_type = HCI_AMP; in btusb_probe()
2886 hdev->dev_type = HCI_BREDR; in btusb_probe()
2888 data->hdev = hdev; in btusb_probe()
2890 SET_HCIDEV_DEV(hdev, &intf->dev); in btusb_probe()
2892 hdev->open = btusb_open; in btusb_probe()
2893 hdev->close = btusb_close; in btusb_probe()
2894 hdev->flush = btusb_flush; in btusb_probe()
2895 hdev->send = btusb_send_frame; in btusb_probe()
2896 hdev->notify = btusb_notify; in btusb_probe()
2899 set_bit(HCI_QUIRK_BROKEN_STORED_LINK_KEY, &hdev->quirks); in btusb_probe()
2902 hdev->setup = btusb_setup_bcm92035; in btusb_probe()
2906 hdev->manufacturer = 15; in btusb_probe()
2907 hdev->setup = btbcm_setup_patchram; in btusb_probe()
2908 hdev->set_diag = btusb_bcm_set_diag; in btusb_probe()
2909 hdev->set_bdaddr = btbcm_set_bdaddr; in btusb_probe()
2916 hdev->manufacturer = 15; in btusb_probe()
2917 hdev->setup = btbcm_setup_apple; in btusb_probe()
2918 hdev->set_diag = btusb_bcm_set_diag; in btusb_probe()
2926 hdev->manufacturer = 2; in btusb_probe()
2927 hdev->setup = btusb_setup_intel; in btusb_probe()
2928 hdev->shutdown = btusb_shutdown_intel; in btusb_probe()
2929 hdev->set_diag = btintel_set_diag_mfg; in btusb_probe()
2930 hdev->set_bdaddr = btintel_set_bdaddr; in btusb_probe()
2931 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); in btusb_probe()
2932 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); in btusb_probe()
2933 set_bit(HCI_QUIRK_NON_PERSISTENT_DIAG, &hdev->quirks); in btusb_probe()
2937 hdev->manufacturer = 2; in btusb_probe()
2938 hdev->send = btusb_send_frame_intel; in btusb_probe()
2939 hdev->setup = btusb_setup_intel_new; in btusb_probe()
2940 hdev->hw_error = btintel_hw_error; in btusb_probe()
2941 hdev->set_diag = btintel_set_diag; in btusb_probe()
2942 hdev->set_bdaddr = btintel_set_bdaddr; in btusb_probe()
2943 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); in btusb_probe()
2944 set_bit(HCI_QUIRK_NON_PERSISTENT_DIAG, &hdev->quirks); in btusb_probe()
2948 hdev->set_bdaddr = btusb_set_bdaddr_marvell; in btusb_probe()
2951 set_bit(HCI_QUIRK_FIXUP_INQUIRY_MODE, &hdev->quirks); in btusb_probe()
2952 set_bit(HCI_QUIRK_BROKEN_LOCAL_COMMANDS, &hdev->quirks); in btusb_probe()
2956 hdev->manufacturer = 2; in btusb_probe()
2957 set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks); in btusb_probe()
2961 hdev->set_bdaddr = btusb_set_bdaddr_ath3012; in btusb_probe()
2962 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); in btusb_probe()
2963 set_bit(HCI_QUIRK_STRICT_DUPLICATE_FILTER, &hdev->quirks); in btusb_probe()
2968 hdev->set_bdaddr = btusb_set_bdaddr_ath3012; in btusb_probe()
2973 hdev->setup = btrtl_setup_realtek; in btusb_probe()
2992 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); in btusb_probe()
2996 set_bit(HCI_QUIRK_FIXUP_BUFFER_SIZE, &hdev->quirks); in btusb_probe()
3004 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); in btusb_probe()
3013 set_bit(HCI_QUIRK_RESET_ON_CLOSE, &hdev->quirks); in btusb_probe()
3017 hdev->setup = btusb_setup_csr; in btusb_probe()
3019 set_bit(HCI_QUIRK_SIMULTANEOUS_DISCOVERY, &hdev->quirks); in btusb_probe()
3027 set_bit(HCI_QUIRK_RAW_DEVICE, &hdev->quirks); in btusb_probe()
3037 hci_free_dev(hdev); in btusb_probe()
3046 hci_free_dev(hdev); in btusb_probe()
3055 __set_diag_interface(hdev); in btusb_probe()
3061 err = hci_register_dev(hdev); in btusb_probe()
3063 hci_free_dev(hdev); in btusb_probe()
3075 struct hci_dev *hdev; in btusb_disconnect() local
3082 hdev = data->hdev; in btusb_disconnect()
3091 hci_unregister_dev(hdev); in btusb_disconnect()
3108 hci_free_dev(hdev); in btusb_disconnect()
3165 struct hci_dev *hdev = data->hdev; in btusb_resume() local
3173 if (!test_bit(HCI_RUNNING, &hdev->flags)) in btusb_resume()
3177 err = btusb_submit_intr_urb(hdev, GFP_NOIO); in btusb_resume()
3185 err = btusb_submit_bulk_urb(hdev, GFP_NOIO); in btusb_resume()
3191 btusb_submit_bulk_urb(hdev, GFP_NOIO); in btusb_resume()
3195 if (btusb_submit_isoc_urb(hdev, GFP_NOIO) < 0) in btusb_resume()
3198 btusb_submit_isoc_urb(hdev, GFP_NOIO); in btusb_resume()