• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/bluetooth/

Lines Matching refs:data

188 static int inc_tx(struct btusb_data *data)
193 spin_lock_irqsave(&data->txlock, flags);
194 rv = test_bit(BTUSB_SUSPENDING, &data->flags);
196 data->tx_in_flight++;
197 spin_unlock_irqrestore(&data->txlock, flags);
205 struct btusb_data *data = hdev->driver_data;
225 if (!test_bit(BTUSB_INTR_RUNNING, &data->flags))
228 usb_mark_last_busy(data->udev);
229 usb_anchor_urb(urb, &data->intr_anchor);
241 struct btusb_data *data = hdev->driver_data;
249 if (!data->intr_ep)
256 size = le16_to_cpu(data->intr_ep->wMaxPacketSize);
264 pipe = usb_rcvintpipe(data->udev, data->intr_ep->bEndpointAddress);
266 usb_fill_int_urb(urb, data->udev, pipe, buf, size,
268 data->intr_ep->bInterval);
272 usb_anchor_urb(urb, &data->intr_anchor);
289 struct btusb_data *data = hdev->driver_data;
309 if (!test_bit(BTUSB_BULK_RUNNING, &data->flags))
312 usb_anchor_urb(urb, &data->bulk_anchor);
313 usb_mark_last_busy(data->udev);
325 struct btusb_data *data = hdev->driver_data;
333 if (!data->bulk_rx_ep)
346 pipe = usb_rcvbulkpipe(data->udev, data->bulk_rx_ep->bEndpointAddress);
348 usb_fill_bulk_urb(urb, data->udev, pipe,
353 usb_mark_last_busy(data->udev);
354 usb_anchor_urb(urb, &data->bulk_anchor);
371 struct btusb_data *data = hdev->driver_data;
399 if (!test_bit(BTUSB_ISOC_RUNNING, &data->flags))
402 usb_anchor_urb(urb, &data->isoc_anchor);
435 struct btusb_data *data = hdev->driver_data;
443 if (!data->isoc_rx_ep)
450 size = le16_to_cpu(data->isoc_rx_ep->wMaxPacketSize) *
459 pipe = usb_rcvisocpipe(data->udev, data->isoc_rx_ep->bEndpointAddress);
461 urb->dev = data->udev;
465 urb->interval = data->isoc_rx_ep->bInterval;
472 le16_to_cpu(data->isoc_rx_ep->wMaxPacketSize));
474 usb_anchor_urb(urb, &data->isoc_anchor);
492 struct btusb_data *data = hdev->driver_data;
506 spin_lock(&data->txlock);
507 data->tx_in_flight--;
508 spin_unlock(&data->txlock);
539 struct btusb_data *data = hdev->driver_data;
544 err = usb_autopm_get_interface(data->intf);
548 data->intf->needs_remote_wakeup = 1;
553 if (test_and_set_bit(BTUSB_INTR_RUNNING, &data->flags))
562 usb_kill_anchored_urbs(&data->intr_anchor);
566 set_bit(BTUSB_BULK_RUNNING, &data->flags);
570 usb_autopm_put_interface(data->intf);
574 clear_bit(BTUSB_INTR_RUNNING, &data->flags);
576 usb_autopm_put_interface(data->intf);
580 static void btusb_stop_traffic(struct btusb_data *data)
582 usb_kill_anchored_urbs(&data->intr_anchor);
583 usb_kill_anchored_urbs(&data->bulk_anchor);
584 usb_kill_anchored_urbs(&data->isoc_anchor);
589 struct btusb_data *data = hdev->driver_data;
597 cancel_work_sync(&data->work);
598 cancel_work_sync(&data->waker);
600 clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
601 clear_bit(BTUSB_BULK_RUNNING, &data->flags);
602 clear_bit(BTUSB_INTR_RUNNING, &data->flags);
604 btusb_stop_traffic(data);
605 err = usb_autopm_get_interface(data->intf);
609 data->intf->needs_remote_wakeup = 0;
610 usb_autopm_put_interface(data->intf);
613 usb_scuttle_anchored_urbs(&data->deferred);
619 struct btusb_data *data = hdev->driver_data;
623 usb_kill_anchored_urbs(&data->tx_anchor);
631 struct btusb_data *data = hdev->driver_data;
654 dr->bRequestType = data->cmdreq_type;
660 pipe = usb_sndctrlpipe(data->udev, 0x00);
662 usb_fill_control_urb(urb, data->udev, pipe, (void *) dr,
663 skb->data, skb->len, btusb_tx_complete, skb);
669 if (!data->bulk_tx_ep || hdev->conn_hash.acl_num < 1)
676 pipe = usb_sndbulkpipe(data->udev,
677 data->bulk_tx_ep->bEndpointAddress);
679 usb_fill_bulk_urb(urb, data->udev, pipe,
680 skb->data, skb->len, btusb_tx_complete, skb);
686 if (!data->isoc_tx_ep || hdev->conn_hash.sco_num < 1)
693 pipe = usb_sndisocpipe(data->udev,
694 data->isoc_tx_ep->bEndpointAddress);
696 urb->dev = data->udev;
700 urb->interval = data->isoc_tx_ep->bInterval;
703 urb->transfer_buffer = skb->data;
707 le16_to_cpu(data->isoc_tx_ep->wMaxPacketSize));
716 err = inc_tx(data);
718 usb_anchor_urb(urb, &data->deferred);
719 schedule_work(&data->waker);
725 usb_anchor_urb(urb, &data->tx_anchor);
733 usb_mark_last_busy(data->udev);
744 struct btusb_data *data = hdev->driver_data;
748 kfree(data);
753 struct btusb_data *data = hdev->driver_data;
757 if (hdev->conn_hash.sco_num != data->sco_num) {
758 data->sco_num = hdev->conn_hash.sco_num;
759 schedule_work(&data->work);
765 struct btusb_data *data = hdev->driver_data;
766 struct usb_interface *intf = data->isoc;
770 if (!data->isoc)
773 err = usb_set_interface(data->udev, 1, altsetting);
779 data->isoc_altsetting = altsetting;
781 data->isoc_tx_ep = NULL;
782 data->isoc_rx_ep = NULL;
787 if (!data->isoc_tx_ep && usb_endpoint_is_isoc_out(ep_desc)) {
788 data->isoc_tx_ep = ep_desc;
792 if (!data->isoc_rx_ep && usb_endpoint_is_isoc_in(ep_desc)) {
793 data->isoc_rx_ep = ep_desc;
798 if (!data->isoc_tx_ep || !data->isoc_rx_ep) {
808 struct btusb_data *data = container_of(work, struct btusb_data, work);
809 struct hci_dev *hdev = data->hdev;
813 if (!test_bit(BTUSB_DID_ISO_RESUME, &data->flags)) {
814 err = usb_autopm_get_interface(data->isoc);
816 clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
817 usb_kill_anchored_urbs(&data->isoc_anchor);
821 set_bit(BTUSB_DID_ISO_RESUME, &data->flags);
823 if (data->isoc_altsetting != 2) {
824 clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
825 usb_kill_anchored_urbs(&data->isoc_anchor);
831 if (!test_and_set_bit(BTUSB_ISOC_RUNNING, &data->flags)) {
833 clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
838 clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
839 usb_kill_anchored_urbs(&data->isoc_anchor);
842 if (test_and_clear_bit(BTUSB_DID_ISO_RESUME, &data->flags))
843 usb_autopm_put_interface(data->isoc);
849 struct btusb_data *data = container_of(work, struct btusb_data, waker);
852 err = usb_autopm_get_interface(data->intf);
856 usb_autopm_put_interface(data->intf);
863 struct btusb_data *data;
892 data = kzalloc(sizeof(*data), GFP_KERNEL);
893 if (!data)
899 if (!data->intr_ep && usb_endpoint_is_int_in(ep_desc)) {
900 data->intr_ep = ep_desc;
904 if (!data->bulk_tx_ep && usb_endpoint_is_bulk_out(ep_desc)) {
905 data->bulk_tx_ep = ep_desc;
909 if (!data->bulk_rx_ep && usb_endpoint_is_bulk_in(ep_desc)) {
910 data->bulk_rx_ep = ep_desc;
915 if (!data->intr_ep || !data->bulk_tx_ep || !data->bulk_rx_ep) {
916 kfree(data);
920 data->cmdreq_type = USB_TYPE_CLASS;
922 data->udev = interface_to_usbdev(intf);
923 data->intf = intf;
925 spin_lock_init(&data->lock);
927 INIT_WORK(&data->work, btusb_work);
928 INIT_WORK(&data->waker, btusb_waker);
929 spin_lock_init(&data->txlock);
931 init_usb_anchor(&data->tx_anchor);
932 init_usb_anchor(&data->intr_anchor);
933 init_usb_anchor(&data->bulk_anchor);
934 init_usb_anchor(&data->isoc_anchor);
935 init_usb_anchor(&data->deferred);
939 kfree(data);
944 hdev->driver_data = data;
946 data->hdev = hdev;
960 data->isoc = usb_ifnum_to_if(data->udev, 1);
971 data->isoc = NULL;
974 data->cmdreq_type = USB_TYPE_VENDOR;
979 struct usb_device *udev = data->udev;
987 struct usb_device *udev = data->udev;
993 data->isoc = NULL;
1007 if (data->isoc) {
1009 data->isoc, data);
1012 kfree(data);
1020 kfree(data);
1024 usb_set_intfdata(intf, data);
1031 struct btusb_data *data = usb_get_intfdata(intf);
1036 if (!data)
1039 hdev = data->hdev;
1043 usb_set_intfdata(data->intf, NULL);
1045 if (data->isoc)
1046 usb_set_intfdata(data->isoc, NULL);
1050 if (intf == data->isoc)
1051 usb_driver_release_interface(&btusb_driver, data->intf);
1052 else if (data->isoc)
1053 usb_driver_release_interface(&btusb_driver, data->isoc);
1063 struct btusb_data *data = usb_get_intfdata(intf);
1067 if (data->suspend_count++)
1070 spin_lock_irq(&data->txlock);
1071 if (!((message.event & PM_EVENT_AUTO) && data->tx_in_flight)) {
1072 set_bit(BTUSB_SUSPENDING, &data->flags);
1073 spin_unlock_irq(&data->txlock);
1075 spin_unlock_irq(&data->txlock);
1076 data->suspend_count--;
1080 cancel_work_sync(&data->work);
1082 btusb_stop_traffic(data);
1083 usb_kill_anchored_urbs(&data->tx_anchor);
1088 static void play_deferred(struct btusb_data *data)
1093 while ((urb = usb_get_from_anchor(&data->deferred))) {
1098 data->tx_in_flight++;
1100 usb_scuttle_anchored_urbs(&data->deferred);
1105 struct btusb_data *data = usb_get_intfdata(intf);
1106 struct hci_dev *hdev = data->hdev;
1111 if (--data->suspend_count)
1117 if (test_bit(BTUSB_INTR_RUNNING, &data->flags)) {
1120 clear_bit(BTUSB_INTR_RUNNING, &data->flags);
1125 if (test_bit(BTUSB_BULK_RUNNING, &data->flags)) {
1128 clear_bit(BTUSB_BULK_RUNNING, &data->flags);
1135 if (test_bit(BTUSB_ISOC_RUNNING, &data->flags)) {
1137 clear_bit(BTUSB_ISOC_RUNNING, &data->flags);
1142 spin_lock_irq(&data->txlock);
1143 play_deferred(data);
1144 clear_bit(BTUSB_SUSPENDING, &data->flags);
1145 spin_unlock_irq(&data->txlock);
1146 schedule_work(&data->work);
1151 usb_scuttle_anchored_urbs(&data->deferred);
1153 spin_lock_irq(&data->txlock);
1154 clear_bit(BTUSB_SUSPENDING, &data->flags);
1155 spin_unlock_irq(&data->txlock);