Lines Matching refs:data

407 	int (*recv_bulk)(struct btusb_data *data, void *buffer, int count);
412 static inline void btusb_free_frags(struct btusb_data *data) in btusb_free_frags() argument
416 spin_lock_irqsave(&data->rxlock, flags); in btusb_free_frags()
418 kfree_skb(data->evt_skb); in btusb_free_frags()
419 data->evt_skb = NULL; in btusb_free_frags()
421 kfree_skb(data->acl_skb); in btusb_free_frags()
422 data->acl_skb = NULL; in btusb_free_frags()
424 kfree_skb(data->sco_skb); in btusb_free_frags()
425 data->sco_skb = NULL; in btusb_free_frags()
427 spin_unlock_irqrestore(&data->rxlock, flags); in btusb_free_frags()
430 static int btusb_recv_intr(struct btusb_data *data, void *buffer, int count) in btusb_recv_intr() argument
435 spin_lock(&data->rxlock); in btusb_recv_intr()
436 skb = data->evt_skb; in btusb_recv_intr()
474 data->recv_event(data->hdev, skb); in btusb_recv_intr()
479 data->evt_skb = skb; in btusb_recv_intr()
480 spin_unlock(&data->rxlock); in btusb_recv_intr()
485 static int btusb_recv_bulk(struct btusb_data *data, void *buffer, int count) in btusb_recv_bulk() argument
490 spin_lock(&data->rxlock); in btusb_recv_bulk()
491 skb = data->acl_skb; in btusb_recv_bulk()
531 hci_recv_frame(data->hdev, skb); in btusb_recv_bulk()
536 data->acl_skb = skb; in btusb_recv_bulk()
537 spin_unlock(&data->rxlock); in btusb_recv_bulk()
542 static int btusb_recv_isoc(struct btusb_data *data, void *buffer, int count) in btusb_recv_isoc() argument
547 spin_lock(&data->rxlock); in btusb_recv_isoc()
548 skb = data->sco_skb; in btusb_recv_isoc()
586 hci_recv_frame(data->hdev, skb); in btusb_recv_isoc()
591 data->sco_skb = skb; in btusb_recv_isoc()
592 spin_unlock(&data->rxlock); in btusb_recv_isoc()
600 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_intr_complete() local
612 if (btusb_recv_intr(data, urb->transfer_buffer, in btusb_intr_complete()
622 if (!test_bit(BTUSB_INTR_RUNNING, &data->flags)) in btusb_intr_complete()
625 usb_mark_last_busy(data->udev); in btusb_intr_complete()
626 usb_anchor_urb(urb, &data->intr_anchor); in btusb_intr_complete()
641 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_submit_intr_urb() local
649 if (!data->intr_ep) in btusb_submit_intr_urb()
656 size = le16_to_cpu(data->intr_ep->wMaxPacketSize); in btusb_submit_intr_urb()
664 pipe = usb_rcvintpipe(data->udev, data->intr_ep->bEndpointAddress); in btusb_submit_intr_urb()
666 usb_fill_int_urb(urb, data->udev, pipe, buf, size, in btusb_submit_intr_urb()
667 btusb_intr_complete, hdev, data->intr_ep->bInterval); in btusb_submit_intr_urb()
671 usb_anchor_urb(urb, &data->intr_anchor); in btusb_submit_intr_urb()
689 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_bulk_complete() local
701 if (data->recv_bulk(data, urb->transfer_buffer, in btusb_bulk_complete()
711 if (!test_bit(BTUSB_BULK_RUNNING, &data->flags)) in btusb_bulk_complete()
714 usb_anchor_urb(urb, &data->bulk_anchor); in btusb_bulk_complete()
715 usb_mark_last_busy(data->udev); in btusb_bulk_complete()
730 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_submit_bulk_urb() local
738 if (!data->bulk_rx_ep) in btusb_submit_bulk_urb()
751 pipe = usb_rcvbulkpipe(data->udev, data->bulk_rx_ep->bEndpointAddress); in btusb_submit_bulk_urb()
753 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size, in btusb_submit_bulk_urb()
758 usb_mark_last_busy(data->udev); in btusb_submit_bulk_urb()
759 usb_anchor_urb(urb, &data->bulk_anchor); in btusb_submit_bulk_urb()
777 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_isoc_complete() local
796 if (btusb_recv_isoc(data, urb->transfer_buffer + offset, in btusb_isoc_complete()
807 if (!test_bit(BTUSB_ISOC_RUNNING, &data->flags)) in btusb_isoc_complete()
810 usb_anchor_urb(urb, &data->isoc_anchor); in btusb_isoc_complete()
846 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_submit_isoc_urb() local
854 if (!data->isoc_rx_ep) in btusb_submit_isoc_urb()
861 size = le16_to_cpu(data->isoc_rx_ep->wMaxPacketSize) * in btusb_submit_isoc_urb()
870 pipe = usb_rcvisocpipe(data->udev, data->isoc_rx_ep->bEndpointAddress); in btusb_submit_isoc_urb()
872 usb_fill_int_urb(urb, data->udev, pipe, buf, size, btusb_isoc_complete, in btusb_submit_isoc_urb()
873 hdev, data->isoc_rx_ep->bInterval); in btusb_submit_isoc_urb()
878 le16_to_cpu(data->isoc_rx_ep->wMaxPacketSize)); in btusb_submit_isoc_urb()
880 usb_anchor_urb(urb, &data->isoc_anchor); in btusb_submit_isoc_urb()
898 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_diag_complete() local
918 if (!test_bit(BTUSB_DIAG_RUNNING, &data->flags)) in btusb_diag_complete()
921 usb_anchor_urb(urb, &data->diag_anchor); in btusb_diag_complete()
922 usb_mark_last_busy(data->udev); in btusb_diag_complete()
937 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_submit_diag_urb() local
945 if (!data->diag_rx_ep) in btusb_submit_diag_urb()
958 pipe = usb_rcvbulkpipe(data->udev, data->diag_rx_ep->bEndpointAddress); in btusb_submit_diag_urb()
960 usb_fill_bulk_urb(urb, data->udev, pipe, buf, size, in btusb_submit_diag_urb()
965 usb_mark_last_busy(data->udev); in btusb_submit_diag_urb()
966 usb_anchor_urb(urb, &data->diag_anchor); in btusb_submit_diag_urb()
985 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_tx_complete() local
999 spin_lock(&data->txlock); in btusb_tx_complete()
1000 data->tx_in_flight--; in btusb_tx_complete()
1001 spin_unlock(&data->txlock); in btusb_tx_complete()
1032 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_open() local
1040 if (data->setup_on_usb) { in btusb_open()
1041 err = data->setup_on_usb(hdev); in btusb_open()
1046 err = usb_autopm_get_interface(data->intf); in btusb_open()
1050 data->intf->needs_remote_wakeup = 1; in btusb_open()
1052 if (test_and_set_bit(BTUSB_INTR_RUNNING, &data->flags)) in btusb_open()
1061 usb_kill_anchored_urbs(&data->intr_anchor); in btusb_open()
1065 set_bit(BTUSB_BULK_RUNNING, &data->flags); in btusb_open()
1068 if (data->diag) { in btusb_open()
1070 set_bit(BTUSB_DIAG_RUNNING, &data->flags); in btusb_open()
1074 usb_autopm_put_interface(data->intf); in btusb_open()
1078 clear_bit(BTUSB_INTR_RUNNING, &data->flags); in btusb_open()
1079 usb_autopm_put_interface(data->intf); in btusb_open()
1083 static void btusb_stop_traffic(struct btusb_data *data) in btusb_stop_traffic() argument
1085 usb_kill_anchored_urbs(&data->intr_anchor); in btusb_stop_traffic()
1086 usb_kill_anchored_urbs(&data->bulk_anchor); in btusb_stop_traffic()
1087 usb_kill_anchored_urbs(&data->isoc_anchor); in btusb_stop_traffic()
1088 usb_kill_anchored_urbs(&data->diag_anchor); in btusb_stop_traffic()
1093 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_close() local
1098 cancel_work_sync(&data->work); in btusb_close()
1099 cancel_work_sync(&data->waker); in btusb_close()
1101 clear_bit(BTUSB_ISOC_RUNNING, &data->flags); in btusb_close()
1102 clear_bit(BTUSB_BULK_RUNNING, &data->flags); in btusb_close()
1103 clear_bit(BTUSB_INTR_RUNNING, &data->flags); in btusb_close()
1104 clear_bit(BTUSB_DIAG_RUNNING, &data->flags); in btusb_close()
1106 btusb_stop_traffic(data); in btusb_close()
1107 btusb_free_frags(data); in btusb_close()
1109 err = usb_autopm_get_interface(data->intf); in btusb_close()
1113 data->intf->needs_remote_wakeup = 0; in btusb_close()
1114 usb_autopm_put_interface(data->intf); in btusb_close()
1117 usb_scuttle_anchored_urbs(&data->deferred); in btusb_close()
1123 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_flush() local
1127 usb_kill_anchored_urbs(&data->tx_anchor); in btusb_flush()
1128 btusb_free_frags(data); in btusb_flush()
1135 struct btusb_data *data = hci_get_drvdata(hdev); in alloc_ctrl_urb() local
1150 dr->bRequestType = data->cmdreq_type; in alloc_ctrl_urb()
1151 dr->bRequest = data->cmdreq; in alloc_ctrl_urb()
1156 pipe = usb_sndctrlpipe(data->udev, 0x00); in alloc_ctrl_urb()
1158 usb_fill_control_urb(urb, data->udev, pipe, (void *)dr, in alloc_ctrl_urb()
1159 skb->data, skb->len, btusb_tx_complete, skb); in alloc_ctrl_urb()
1168 struct btusb_data *data = hci_get_drvdata(hdev); in alloc_bulk_urb() local
1172 if (!data->bulk_tx_ep) in alloc_bulk_urb()
1179 pipe = usb_sndbulkpipe(data->udev, data->bulk_tx_ep->bEndpointAddress); in alloc_bulk_urb()
1181 usb_fill_bulk_urb(urb, data->udev, pipe, in alloc_bulk_urb()
1182 skb->data, skb->len, btusb_tx_complete, skb); in alloc_bulk_urb()
1191 struct btusb_data *data = hci_get_drvdata(hdev); in alloc_isoc_urb() local
1195 if (!data->isoc_tx_ep) in alloc_isoc_urb()
1202 pipe = usb_sndisocpipe(data->udev, data->isoc_tx_ep->bEndpointAddress); in alloc_isoc_urb()
1204 usb_fill_int_urb(urb, data->udev, pipe, in alloc_isoc_urb()
1205 skb->data, skb->len, btusb_isoc_tx_complete, in alloc_isoc_urb()
1206 skb, data->isoc_tx_ep->bInterval); in alloc_isoc_urb()
1211 le16_to_cpu(data->isoc_tx_ep->wMaxPacketSize)); in alloc_isoc_urb()
1220 struct btusb_data *data = hci_get_drvdata(hdev); in submit_tx_urb() local
1223 usb_anchor_urb(urb, &data->tx_anchor); in submit_tx_urb()
1233 usb_mark_last_busy(data->udev); in submit_tx_urb()
1242 struct btusb_data *data = hci_get_drvdata(hdev); in submit_or_queue_tx_urb() local
1246 spin_lock_irqsave(&data->txlock, flags); in submit_or_queue_tx_urb()
1247 suspending = test_bit(BTUSB_SUSPENDING, &data->flags); in submit_or_queue_tx_urb()
1249 data->tx_in_flight++; in submit_or_queue_tx_urb()
1250 spin_unlock_irqrestore(&data->txlock, flags); in submit_or_queue_tx_urb()
1255 usb_anchor_urb(urb, &data->deferred); in submit_or_queue_tx_urb()
1256 schedule_work(&data->waker); in submit_or_queue_tx_urb()
1302 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_notify() local
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()
1308 schedule_work(&data->work); in btusb_notify()
1314 struct btusb_data *data = hci_get_drvdata(hdev); in __set_isoc_interface() local
1315 struct usb_interface *intf = data->isoc; in __set_isoc_interface()
1319 if (!data->isoc) in __set_isoc_interface()
1322 err = usb_set_interface(data->udev, 1, altsetting); in __set_isoc_interface()
1328 data->isoc_altsetting = altsetting; in __set_isoc_interface()
1330 data->isoc_tx_ep = NULL; in __set_isoc_interface()
1331 data->isoc_rx_ep = NULL; in __set_isoc_interface()
1336 if (!data->isoc_tx_ep && usb_endpoint_is_isoc_out(ep_desc)) { in __set_isoc_interface()
1337 data->isoc_tx_ep = ep_desc; in __set_isoc_interface()
1341 if (!data->isoc_rx_ep && usb_endpoint_is_isoc_in(ep_desc)) { in __set_isoc_interface()
1342 data->isoc_rx_ep = ep_desc; in __set_isoc_interface()
1347 if (!data->isoc_tx_ep || !data->isoc_rx_ep) { in __set_isoc_interface()
1357 struct btusb_data *data = container_of(work, struct btusb_data, work); in btusb_work() local
1358 struct hci_dev *hdev = data->hdev; in btusb_work()
1362 if (data->sco_num > 0) { in btusb_work()
1363 if (!test_bit(BTUSB_DID_ISO_RESUME, &data->flags)) { in btusb_work()
1364 err = usb_autopm_get_interface(data->isoc ? data->isoc : data->intf); in btusb_work()
1366 clear_bit(BTUSB_ISOC_RUNNING, &data->flags); in btusb_work()
1367 usb_kill_anchored_urbs(&data->isoc_anchor); in btusb_work()
1371 set_bit(BTUSB_DID_ISO_RESUME, &data->flags); in btusb_work()
1377 new_alts = alts[data->sco_num - 1]; in btusb_work()
1379 new_alts = data->sco_num; in btusb_work()
1382 if (data->isoc_altsetting != new_alts) { in btusb_work()
1385 clear_bit(BTUSB_ISOC_RUNNING, &data->flags); in btusb_work()
1386 usb_kill_anchored_urbs(&data->isoc_anchor); in btusb_work()
1397 spin_lock_irqsave(&data->rxlock, flags); in btusb_work()
1398 kfree_skb(data->sco_skb); in btusb_work()
1399 data->sco_skb = NULL; in btusb_work()
1400 spin_unlock_irqrestore(&data->rxlock, flags); in btusb_work()
1406 if (!test_and_set_bit(BTUSB_ISOC_RUNNING, &data->flags)) { in btusb_work()
1408 clear_bit(BTUSB_ISOC_RUNNING, &data->flags); in btusb_work()
1413 clear_bit(BTUSB_ISOC_RUNNING, &data->flags); in btusb_work()
1414 usb_kill_anchored_urbs(&data->isoc_anchor); in btusb_work()
1417 if (test_and_clear_bit(BTUSB_DID_ISO_RESUME, &data->flags)) in btusb_work()
1418 usb_autopm_put_interface(data->isoc ? data->isoc : data->intf); in btusb_work()
1424 struct btusb_data *data = container_of(work, struct btusb_data, waker); in btusb_waker() local
1427 err = usb_autopm_get_interface(data->intf); in btusb_waker()
1431 usb_autopm_put_interface(data->intf); in btusb_waker()
1471 rp = (struct hci_rp_read_local_version *)skb->data; in btusb_setup_csr()
1542 int remain = fw->size - (*fw_ptr - fw->data); in btusb_setup_intel_patching()
1637 if (memcmp(skb->data, evt_param, evt->plen)) { in btusb_setup_intel_patching()
1698 ver = (struct intel_version *)skb->data; in btusb_setup_intel()
1728 fw_ptr = fw->data; in btusb_setup_intel()
1770 while (fw->size > fw_ptr - fw->data) { in btusb_setup_intel()
1869 static int btusb_recv_bulk_intel(struct btusb_data *data, void *buffer, in btusb_recv_bulk_intel() argument
1876 if (test_bit(BTUSB_BOOTLOADER, &data->flags)) in btusb_recv_bulk_intel()
1877 return btusb_recv_intr(data, buffer, count); in btusb_recv_bulk_intel()
1879 return btusb_recv_bulk(data, buffer, count); in btusb_recv_bulk_intel()
1882 static void btusb_intel_bootup(struct btusb_data *data, const void *ptr, in btusb_intel_bootup() argument
1890 if (test_and_clear_bit(BTUSB_BOOTING, &data->flags)) { in btusb_intel_bootup()
1892 wake_up_bit(&data->flags, BTUSB_BOOTING); in btusb_intel_bootup()
1896 static void btusb_intel_secure_send_result(struct btusb_data *data, in btusb_intel_secure_send_result() argument
1905 set_bit(BTUSB_FIRMWARE_FAILED, &data->flags); in btusb_intel_secure_send_result()
1907 if (test_and_clear_bit(BTUSB_DOWNLOADING, &data->flags) && in btusb_intel_secure_send_result()
1908 test_bit(BTUSB_FIRMWARE_LOADED, &data->flags)) { in btusb_intel_secure_send_result()
1910 wake_up_bit(&data->flags, BTUSB_DOWNLOADING); in btusb_intel_secure_send_result()
1916 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_recv_event_intel() local
1918 if (test_bit(BTUSB_BOOTLOADER, &data->flags)) { in btusb_recv_event_intel()
1919 struct hci_event_hdr *hdr = (void *)skb->data; in btusb_recv_event_intel()
1923 const void *ptr = skb->data + HCI_EVENT_HDR_SIZE + 1; in btusb_recv_event_intel()
1926 switch (skb->data[2]) { in btusb_recv_event_intel()
1932 btusb_intel_bootup(data, ptr, len); in btusb_recv_event_intel()
1940 btusb_intel_secure_send_result(data, ptr, len); in btusb_recv_event_intel()
1951 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_send_frame_intel() local
1958 if (test_bit(BTUSB_BOOTLOADER, &data->flags)) { in btusb_send_frame_intel()
1959 struct hci_command_hdr *cmd = (void *)skb->data; in btusb_send_frame_intel()
2014 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_setup_intel_new() local
2047 ver = (struct intel_version *)skb->data; in btusb_setup_intel_new()
2088 clear_bit(BTUSB_BOOTLOADER, &data->flags); in btusb_setup_intel_new()
2121 params = (struct intel_boot_params *)skb->data; in btusb_setup_intel_new()
2195 set_bit(BTUSB_DOWNLOADING, &data->flags); in btusb_setup_intel_new()
2200 err = btintel_secure_send(hdev, 0x00, 128, fw->data); in btusb_setup_intel_new()
2210 err = btintel_secure_send(hdev, 0x03, 256, fw->data + 128); in btusb_setup_intel_new()
2220 err = btintel_secure_send(hdev, 0x02, 256, fw->data + 388); in btusb_setup_intel_new()
2227 fw_ptr = fw->data + 644; in btusb_setup_intel_new()
2230 while (fw_ptr - fw->data < fw->size) { in btusb_setup_intel_new()
2256 set_bit(BTUSB_FIRMWARE_LOADED, &data->flags); in btusb_setup_intel_new()
2271 err = wait_on_bit_timeout(&data->flags, BTUSB_DOWNLOADING, in btusb_setup_intel_new()
2286 if (test_bit(BTUSB_FIRMWARE_FAILED, &data->flags)) { in btusb_setup_intel_new()
2306 set_bit(BTUSB_BOOTING, &data->flags); in btusb_setup_intel_new()
2324 err = wait_on_bit_timeout(&data->flags, BTUSB_BOOTING, in btusb_setup_intel_new()
2344 clear_bit(BTUSB_BOOTLOADER, &data->flags); in btusb_setup_intel_new()
2475 void *data, u16 size) in btusb_qca_send_vendor_req() argument
2497 memcpy(data, buf, size); in btusb_qca_send_vendor_req()
2522 memcpy(buf, firmware->data, size); in btusb_setup_qca_download_fw()
2543 memcpy(buf, firmware->data + sent, size); in btusb_setup_qca_download_fw()
2594 rver = (struct qca_rampatch_version *)(fw->data + info->ver_offset); in btusb_setup_qca_load_rampatch()
2691 struct btusb_data *data = hci_get_drvdata(hdev); in __set_diag_interface() local
2692 struct usb_interface *intf = data->diag; in __set_diag_interface()
2695 if (!data->diag) in __set_diag_interface()
2698 data->diag_tx_ep = NULL; in __set_diag_interface()
2699 data->diag_rx_ep = NULL; in __set_diag_interface()
2706 if (!data->diag_tx_ep && usb_endpoint_is_bulk_out(ep_desc)) { in __set_diag_interface()
2707 data->diag_tx_ep = ep_desc; in __set_diag_interface()
2711 if (!data->diag_rx_ep && usb_endpoint_is_bulk_in(ep_desc)) { in __set_diag_interface()
2712 data->diag_rx_ep = ep_desc; in __set_diag_interface()
2717 if (!data->diag_tx_ep || !data->diag_rx_ep) { in __set_diag_interface()
2727 struct btusb_data *data = hci_get_drvdata(hdev); in alloc_diag_urb() local
2732 if (!data->diag_tx_ep) in alloc_diag_urb()
2748 pipe = usb_sndbulkpipe(data->udev, data->diag_tx_ep->bEndpointAddress); in alloc_diag_urb()
2750 usb_fill_bulk_urb(urb, data->udev, pipe, in alloc_diag_urb()
2751 skb->data, skb->len, btusb_tx_complete, skb); in alloc_diag_urb()
2760 struct btusb_data *data = hci_get_drvdata(hdev); in btusb_bcm_set_diag() local
2763 if (!data->diag) in btusb_bcm_set_diag()
2781 struct btusb_data *data; in btusb_probe() local
2818 data = devm_kzalloc(&intf->dev, sizeof(*data), GFP_KERNEL); in btusb_probe()
2819 if (!data) in btusb_probe()
2825 if (!data->intr_ep && usb_endpoint_is_int_in(ep_desc)) { in btusb_probe()
2826 data->intr_ep = ep_desc; in btusb_probe()
2830 if (!data->bulk_tx_ep && usb_endpoint_is_bulk_out(ep_desc)) { in btusb_probe()
2831 data->bulk_tx_ep = ep_desc; in btusb_probe()
2835 if (!data->bulk_rx_ep && usb_endpoint_is_bulk_in(ep_desc)) { in btusb_probe()
2836 data->bulk_rx_ep = ep_desc; in btusb_probe()
2841 if (!data->intr_ep || !data->bulk_tx_ep || !data->bulk_rx_ep) in btusb_probe()
2845 data->cmdreq_type = USB_TYPE_CLASS | 0x01; in btusb_probe()
2846 data->cmdreq = 0x2b; in btusb_probe()
2848 data->cmdreq_type = USB_TYPE_CLASS; in btusb_probe()
2849 data->cmdreq = 0x00; in btusb_probe()
2852 data->udev = interface_to_usbdev(intf); in btusb_probe()
2853 data->intf = intf; in btusb_probe()
2855 INIT_WORK(&data->work, btusb_work); in btusb_probe()
2856 INIT_WORK(&data->waker, btusb_waker); in btusb_probe()
2857 init_usb_anchor(&data->deferred); in btusb_probe()
2858 init_usb_anchor(&data->tx_anchor); in btusb_probe()
2859 spin_lock_init(&data->txlock); in btusb_probe()
2861 init_usb_anchor(&data->intr_anchor); in btusb_probe()
2862 init_usb_anchor(&data->bulk_anchor); in btusb_probe()
2863 init_usb_anchor(&data->isoc_anchor); in btusb_probe()
2864 init_usb_anchor(&data->diag_anchor); in btusb_probe()
2865 spin_lock_init(&data->rxlock); in btusb_probe()
2868 data->recv_event = btusb_recv_event_intel; in btusb_probe()
2869 data->recv_bulk = btusb_recv_bulk_intel; in btusb_probe()
2870 set_bit(BTUSB_BOOTLOADER, &data->flags); in btusb_probe()
2872 data->recv_event = hci_recv_frame; in btusb_probe()
2873 data->recv_bulk = btusb_recv_bulk; in btusb_probe()
2881 hci_set_drvdata(hdev, data); in btusb_probe()
2888 data->hdev = hdev; in btusb_probe()
2912 data->diag = usb_ifnum_to_if(data->udev, ifnum_base + 2); in btusb_probe()
2921 data->diag = usb_ifnum_to_if(data->udev, ifnum_base + 2); in btusb_probe()
2967 data->setup_on_usb = btusb_setup_qca; in btusb_probe()
2979 set_bit(BTUSB_RESET_RESUME, &data->flags); in btusb_probe()
2985 data->isoc = NULL; in btusb_probe()
2988 data->isoc = usb_ifnum_to_if(data->udev, ifnum_base + 1); in btusb_probe()
3000 data->isoc = NULL; in btusb_probe()
3003 data->cmdreq_type = USB_TYPE_VENDOR; in btusb_probe()
3008 struct usb_device *udev = data->udev; in btusb_probe()
3023 struct usb_device *udev = data->udev; in btusb_probe()
3034 err = usb_set_interface(data->udev, 0, 0); in btusb_probe()
3042 if (data->isoc) { in btusb_probe()
3044 data->isoc, data); in btusb_probe()
3052 if (data->diag) { in btusb_probe()
3054 data->diag, data)) in btusb_probe()
3057 data->diag = NULL; in btusb_probe()
3067 usb_set_intfdata(intf, data); in btusb_probe()
3074 struct btusb_data *data = usb_get_intfdata(intf); in btusb_disconnect() local
3079 if (!data) in btusb_disconnect()
3082 hdev = data->hdev; in btusb_disconnect()
3083 usb_set_intfdata(data->intf, NULL); in btusb_disconnect()
3085 if (data->isoc) in btusb_disconnect()
3086 usb_set_intfdata(data->isoc, NULL); in btusb_disconnect()
3088 if (data->diag) in btusb_disconnect()
3089 usb_set_intfdata(data->diag, NULL); in btusb_disconnect()
3093 if (intf == data->intf) { in btusb_disconnect()
3094 if (data->isoc) in btusb_disconnect()
3095 usb_driver_release_interface(&btusb_driver, data->isoc); in btusb_disconnect()
3096 if (data->diag) in btusb_disconnect()
3097 usb_driver_release_interface(&btusb_driver, data->diag); in btusb_disconnect()
3098 } else if (intf == data->isoc) { in btusb_disconnect()
3099 if (data->diag) in btusb_disconnect()
3100 usb_driver_release_interface(&btusb_driver, data->diag); in btusb_disconnect()
3101 usb_driver_release_interface(&btusb_driver, data->intf); in btusb_disconnect()
3102 } else if (intf == data->diag) { in btusb_disconnect()
3103 usb_driver_release_interface(&btusb_driver, data->intf); in btusb_disconnect()
3104 if (data->isoc) in btusb_disconnect()
3105 usb_driver_release_interface(&btusb_driver, data->isoc); in btusb_disconnect()
3114 struct btusb_data *data = usb_get_intfdata(intf); in btusb_suspend() local
3118 if (data->suspend_count++) in btusb_suspend()
3121 spin_lock_irq(&data->txlock); in btusb_suspend()
3122 if (!(PMSG_IS_AUTO(message) && data->tx_in_flight)) { in btusb_suspend()
3123 set_bit(BTUSB_SUSPENDING, &data->flags); in btusb_suspend()
3124 spin_unlock_irq(&data->txlock); in btusb_suspend()
3126 spin_unlock_irq(&data->txlock); in btusb_suspend()
3127 data->suspend_count--; in btusb_suspend()
3131 cancel_work_sync(&data->work); in btusb_suspend()
3133 btusb_stop_traffic(data); in btusb_suspend()
3134 usb_kill_anchored_urbs(&data->tx_anchor); in btusb_suspend()
3140 if (test_bit(BTUSB_RESET_RESUME, &data->flags) && in btusb_suspend()
3141 !device_may_wakeup(&data->udev->dev)) in btusb_suspend()
3142 data->udev->reset_resume = 1; in btusb_suspend()
3147 static void play_deferred(struct btusb_data *data) in play_deferred() argument
3152 while ((urb = usb_get_from_anchor(&data->deferred))) { in play_deferred()
3157 data->tx_in_flight++; in play_deferred()
3159 usb_scuttle_anchored_urbs(&data->deferred); in play_deferred()
3164 struct btusb_data *data = usb_get_intfdata(intf); in btusb_resume() local
3165 struct hci_dev *hdev = data->hdev; in btusb_resume()
3170 if (--data->suspend_count) in btusb_resume()
3176 if (test_bit(BTUSB_INTR_RUNNING, &data->flags)) { in btusb_resume()
3179 clear_bit(BTUSB_INTR_RUNNING, &data->flags); in btusb_resume()
3184 if (test_bit(BTUSB_BULK_RUNNING, &data->flags)) { in btusb_resume()
3187 clear_bit(BTUSB_BULK_RUNNING, &data->flags); in btusb_resume()
3194 if (test_bit(BTUSB_ISOC_RUNNING, &data->flags)) { in btusb_resume()
3196 clear_bit(BTUSB_ISOC_RUNNING, &data->flags); in btusb_resume()
3201 spin_lock_irq(&data->txlock); in btusb_resume()
3202 play_deferred(data); in btusb_resume()
3203 clear_bit(BTUSB_SUSPENDING, &data->flags); in btusb_resume()
3204 spin_unlock_irq(&data->txlock); in btusb_resume()
3205 schedule_work(&data->work); in btusb_resume()
3210 usb_scuttle_anchored_urbs(&data->deferred); in btusb_resume()
3212 spin_lock_irq(&data->txlock); in btusb_resume()
3213 clear_bit(BTUSB_SUSPENDING, &data->flags); in btusb_resume()
3214 spin_unlock_irq(&data->txlock); in btusb_resume()