Lines Matching refs:hif_dev
71 static int __hif_usb_tx(struct hif_device_usb *hif_dev);
90 ath9k_htc_txcompletion_cb(cmd->hif_dev->htc_handle, in hif_usb_regout_cb()
101 static int hif_usb_send_regout(struct hif_device_usb *hif_dev, in hif_usb_send_regout() argument
119 cmd->hif_dev = hif_dev; in hif_usb_send_regout()
121 usb_fill_int_urb(urb, hif_dev->udev, in hif_usb_send_regout()
122 usb_sndintpipe(hif_dev->udev, USB_REG_OUT_PIPE), in hif_usb_send_regout()
126 usb_anchor_urb(urb, &hif_dev->regout_submitted); in hif_usb_send_regout()
140 struct hif_device_usb *hif_dev; in hif_usb_mgmt_cb() local
143 if (!cmd || !cmd->skb || !cmd->hif_dev) in hif_usb_mgmt_cb()
146 hif_dev = cmd->hif_dev; in hif_usb_mgmt_cb()
161 spin_lock(&hif_dev->tx.tx_lock); in hif_usb_mgmt_cb()
162 if (hif_dev->tx.flags & HIF_USB_TX_FLUSH) { in hif_usb_mgmt_cb()
163 spin_unlock(&hif_dev->tx.tx_lock); in hif_usb_mgmt_cb()
168 spin_unlock(&hif_dev->tx.tx_lock); in hif_usb_mgmt_cb()
177 ath9k_htc_txcompletion_cb(cmd->hif_dev->htc_handle, in hif_usb_mgmt_cb()
182 static int hif_usb_send_mgmt(struct hif_device_usb *hif_dev, in hif_usb_send_mgmt() argument
201 cmd->hif_dev = hif_dev; in hif_usb_send_mgmt()
207 usb_fill_bulk_urb(urb, hif_dev->udev, in hif_usb_send_mgmt()
208 usb_sndbulkpipe(hif_dev->udev, USB_WLAN_TX_PIPE), in hif_usb_send_mgmt()
212 usb_anchor_urb(urb, &hif_dev->mgmt_submitted); in hif_usb_send_mgmt()
223 static inline void ath9k_skb_queue_purge(struct hif_device_usb *hif_dev, in ath9k_skb_queue_purge() argument
233 static inline void ath9k_skb_queue_complete(struct hif_device_usb *hif_dev, in ath9k_skb_queue_complete() argument
243 ath9k_htc_txcompletion_cb(hif_dev->htc_handle, in ath9k_skb_queue_complete()
257 struct hif_device_usb *hif_dev; in hif_usb_tx_cb() local
260 if (!tx_buf || !tx_buf->hif_dev) in hif_usb_tx_cb()
263 hif_dev = tx_buf->hif_dev; in hif_usb_tx_cb()
278 spin_lock(&hif_dev->tx.tx_lock); in hif_usb_tx_cb()
279 if (hif_dev->tx.flags & HIF_USB_TX_FLUSH) { in hif_usb_tx_cb()
280 spin_unlock(&hif_dev->tx.tx_lock); in hif_usb_tx_cb()
281 ath9k_skb_queue_purge(hif_dev, &tx_buf->skb_queue); in hif_usb_tx_cb()
284 spin_unlock(&hif_dev->tx.tx_lock); in hif_usb_tx_cb()
292 ath9k_skb_queue_complete(hif_dev, &tx_buf->skb_queue, txok); in hif_usb_tx_cb()
299 spin_lock(&hif_dev->tx.tx_lock); in hif_usb_tx_cb()
300 list_move_tail(&tx_buf->list, &hif_dev->tx.tx_buf); in hif_usb_tx_cb()
301 hif_dev->tx.tx_buf_cnt++; in hif_usb_tx_cb()
302 if (!(hif_dev->tx.flags & HIF_USB_TX_STOP)) in hif_usb_tx_cb()
303 __hif_usb_tx(hif_dev); /* Check for pending SKBs */ in hif_usb_tx_cb()
305 spin_unlock(&hif_dev->tx.tx_lock); in hif_usb_tx_cb()
309 static int __hif_usb_tx(struct hif_device_usb *hif_dev) in __hif_usb_tx() argument
318 if (hif_dev->tx.tx_skb_cnt == 0) in __hif_usb_tx()
322 if (list_empty(&hif_dev->tx.tx_buf)) in __hif_usb_tx()
325 tx_buf = list_first_entry(&hif_dev->tx.tx_buf, struct tx_buf, list); in __hif_usb_tx()
326 list_move_tail(&tx_buf->list, &hif_dev->tx.tx_pending); in __hif_usb_tx()
327 hif_dev->tx.tx_buf_cnt--; in __hif_usb_tx()
329 tx_skb_cnt = min_t(u16, hif_dev->tx.tx_skb_cnt, MAX_TX_AGGR_NUM); in __hif_usb_tx()
332 nskb = __skb_dequeue(&hif_dev->tx.tx_skb_queue); in __hif_usb_tx()
337 hif_dev->tx.tx_skb_cnt--; in __hif_usb_tx()
358 usb_fill_bulk_urb(tx_buf->urb, hif_dev->udev, in __hif_usb_tx()
359 usb_sndbulkpipe(hif_dev->udev, USB_WLAN_TX_PIPE), in __hif_usb_tx()
366 ath9k_skb_queue_complete(hif_dev, &tx_buf->skb_queue, false); in __hif_usb_tx()
368 list_move_tail(&tx_buf->list, &hif_dev->tx.tx_buf); in __hif_usb_tx()
369 hif_dev->tx.tx_buf_cnt++; in __hif_usb_tx()
378 static int hif_usb_send_tx(struct hif_device_usb *hif_dev, struct sk_buff *skb) in hif_usb_send_tx() argument
384 spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); in hif_usb_send_tx()
386 if (hif_dev->tx.flags & HIF_USB_TX_STOP) { in hif_usb_send_tx()
387 spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); in hif_usb_send_tx()
392 if (hif_dev->tx.tx_skb_cnt > MAX_TX_BUF_NUM) { in hif_usb_send_tx()
393 spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); in hif_usb_send_tx()
397 spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); in hif_usb_send_tx()
404 ret = hif_usb_send_mgmt(hif_dev, skb); in hif_usb_send_tx()
407 spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); in hif_usb_send_tx()
411 __skb_queue_tail(&hif_dev->tx.tx_skb_queue, skb); in hif_usb_send_tx()
412 hif_dev->tx.tx_skb_cnt++; in hif_usb_send_tx()
416 if ((hif_dev->tx.tx_buf_cnt == MAX_TX_URB_NUM) && in hif_usb_send_tx()
417 (hif_dev->tx.tx_skb_cnt < 2)) { in hif_usb_send_tx()
418 __hif_usb_tx(hif_dev); in hif_usb_send_tx()
421 spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); in hif_usb_send_tx()
428 struct hif_device_usb *hif_dev = (struct hif_device_usb *)hif_handle; in hif_usb_start() local
431 hif_dev->flags |= HIF_USB_START; in hif_usb_start()
433 spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); in hif_usb_start()
434 hif_dev->tx.flags &= ~HIF_USB_TX_STOP; in hif_usb_start()
435 spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); in hif_usb_start()
440 struct hif_device_usb *hif_dev = (struct hif_device_usb *)hif_handle; in hif_usb_stop() local
444 spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); in hif_usb_stop()
445 ath9k_skb_queue_complete(hif_dev, &hif_dev->tx.tx_skb_queue, false); in hif_usb_stop()
446 hif_dev->tx.tx_skb_cnt = 0; in hif_usb_stop()
447 hif_dev->tx.flags |= HIF_USB_TX_STOP; in hif_usb_stop()
448 spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); in hif_usb_stop()
452 &hif_dev->tx.tx_pending, list) { in hif_usb_stop()
456 usb_kill_anchored_urbs(&hif_dev->mgmt_submitted); in hif_usb_stop()
461 struct hif_device_usb *hif_dev = (struct hif_device_usb *)hif_handle; in hif_usb_send() local
466 ret = hif_usb_send_tx(hif_dev, skb); in hif_usb_send()
469 ret = hif_usb_send_regout(hif_dev, skb); in hif_usb_send()
472 dev_err(&hif_dev->udev->dev, in hif_usb_send()
496 struct hif_device_usb *hif_dev = (struct hif_device_usb *)hif_handle; in hif_usb_sta_drain() local
500 spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); in hif_usb_sta_drain()
502 skb_queue_walk_safe(&hif_dev->tx.tx_skb_queue, skb, tmp) { in hif_usb_sta_drain()
504 __skb_unlink(skb, &hif_dev->tx.tx_skb_queue); in hif_usb_sta_drain()
505 ath9k_htc_txcompletion_cb(hif_dev->htc_handle, in hif_usb_sta_drain()
507 hif_dev->tx.tx_skb_cnt--; in hif_usb_sta_drain()
512 spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); in hif_usb_sta_drain()
528 static void ath9k_hif_usb_rx_stream(struct hif_device_usb *hif_dev, in ath9k_hif_usb_rx_stream() argument
537 spin_lock(&hif_dev->rx_lock); in ath9k_hif_usb_rx_stream()
539 rx_remain_len = hif_dev->rx_remain_len; in ath9k_hif_usb_rx_stream()
540 rx_pkt_len = hif_dev->rx_transfer_len; in ath9k_hif_usb_rx_stream()
543 struct sk_buff *remain_skb = hif_dev->remain_skb; in ath9k_hif_usb_rx_stream()
549 rx_remain_len -= hif_dev->rx_pad_len; in ath9k_hif_usb_rx_stream()
555 hif_dev->rx_remain_len = 0; in ath9k_hif_usb_rx_stream()
565 spin_unlock(&hif_dev->rx_lock); in ath9k_hif_usb_rx_stream()
591 spin_lock(&hif_dev->rx_lock); in ath9k_hif_usb_rx_stream()
592 hif_dev->rx_remain_len = index - MAX_RX_BUF_SIZE; in ath9k_hif_usb_rx_stream()
593 hif_dev->rx_transfer_len = in ath9k_hif_usb_rx_stream()
595 hif_dev->rx_pad_len = pad_len; in ath9k_hif_usb_rx_stream()
599 dev_err(&hif_dev->udev->dev, in ath9k_hif_usb_rx_stream()
601 spin_unlock(&hif_dev->rx_lock); in ath9k_hif_usb_rx_stream()
608 hif_dev->rx_transfer_len); in ath9k_hif_usb_rx_stream()
611 hif_dev->remain_skb = nskb; in ath9k_hif_usb_rx_stream()
612 spin_unlock(&hif_dev->rx_lock); in ath9k_hif_usb_rx_stream()
616 dev_err(&hif_dev->udev->dev, in ath9k_hif_usb_rx_stream()
632 ath9k_htc_rx_msg(hif_dev->htc_handle, skb_pool[i], in ath9k_hif_usb_rx_stream()
641 struct hif_device_usb *hif_dev = in ath9k_hif_usb_rx_cb() local
648 if (!hif_dev) in ath9k_hif_usb_rx_cb()
665 ath9k_hif_usb_rx_stream(hif_dev, skb); in ath9k_hif_usb_rx_cb()
672 usb_anchor_urb(urb, &hif_dev->rx_submitted); in ath9k_hif_usb_rx_cb()
688 struct hif_device_usb *hif_dev = in ath9k_hif_usb_reg_in_cb() local
695 if (!hif_dev) in ath9k_hif_usb_reg_in_cb()
717 ath9k_htc_rx_msg(hif_dev->htc_handle, skb, in ath9k_hif_usb_reg_in_cb()
723 dev_err(&hif_dev->udev->dev, in ath9k_hif_usb_reg_in_cb()
729 usb_fill_int_urb(urb, hif_dev->udev, in ath9k_hif_usb_reg_in_cb()
730 usb_rcvintpipe(hif_dev->udev, in ath9k_hif_usb_reg_in_cb()
737 usb_anchor_urb(urb, &hif_dev->reg_in_submitted); in ath9k_hif_usb_reg_in_cb()
750 static void ath9k_hif_usb_dealloc_tx_urbs(struct hif_device_usb *hif_dev) in ath9k_hif_usb_dealloc_tx_urbs() argument
756 &hif_dev->tx.tx_buf, list) { in ath9k_hif_usb_dealloc_tx_urbs()
764 spin_lock_irqsave(&hif_dev->tx.tx_lock, flags); in ath9k_hif_usb_dealloc_tx_urbs()
765 hif_dev->tx.flags |= HIF_USB_TX_FLUSH; in ath9k_hif_usb_dealloc_tx_urbs()
766 spin_unlock_irqrestore(&hif_dev->tx.tx_lock, flags); in ath9k_hif_usb_dealloc_tx_urbs()
769 &hif_dev->tx.tx_pending, list) { in ath9k_hif_usb_dealloc_tx_urbs()
777 usb_kill_anchored_urbs(&hif_dev->mgmt_submitted); in ath9k_hif_usb_dealloc_tx_urbs()
780 static int ath9k_hif_usb_alloc_tx_urbs(struct hif_device_usb *hif_dev) in ath9k_hif_usb_alloc_tx_urbs() argument
785 INIT_LIST_HEAD(&hif_dev->tx.tx_buf); in ath9k_hif_usb_alloc_tx_urbs()
786 INIT_LIST_HEAD(&hif_dev->tx.tx_pending); in ath9k_hif_usb_alloc_tx_urbs()
787 spin_lock_init(&hif_dev->tx.tx_lock); in ath9k_hif_usb_alloc_tx_urbs()
788 __skb_queue_head_init(&hif_dev->tx.tx_skb_queue); in ath9k_hif_usb_alloc_tx_urbs()
789 init_usb_anchor(&hif_dev->mgmt_submitted); in ath9k_hif_usb_alloc_tx_urbs()
804 tx_buf->hif_dev = hif_dev; in ath9k_hif_usb_alloc_tx_urbs()
807 list_add_tail(&tx_buf->list, &hif_dev->tx.tx_buf); in ath9k_hif_usb_alloc_tx_urbs()
810 hif_dev->tx.tx_buf_cnt = MAX_TX_URB_NUM; in ath9k_hif_usb_alloc_tx_urbs()
818 ath9k_hif_usb_dealloc_tx_urbs(hif_dev); in ath9k_hif_usb_alloc_tx_urbs()
822 static void ath9k_hif_usb_dealloc_rx_urbs(struct hif_device_usb *hif_dev) in ath9k_hif_usb_dealloc_rx_urbs() argument
824 usb_kill_anchored_urbs(&hif_dev->rx_submitted); in ath9k_hif_usb_dealloc_rx_urbs()
827 static int ath9k_hif_usb_alloc_rx_urbs(struct hif_device_usb *hif_dev) in ath9k_hif_usb_alloc_rx_urbs() argument
833 init_usb_anchor(&hif_dev->rx_submitted); in ath9k_hif_usb_alloc_rx_urbs()
834 spin_lock_init(&hif_dev->rx_lock); in ath9k_hif_usb_alloc_rx_urbs()
852 usb_fill_bulk_urb(urb, hif_dev->udev, in ath9k_hif_usb_alloc_rx_urbs()
853 usb_rcvbulkpipe(hif_dev->udev, in ath9k_hif_usb_alloc_rx_urbs()
859 usb_anchor_urb(urb, &hif_dev->rx_submitted); in ath9k_hif_usb_alloc_rx_urbs()
882 ath9k_hif_usb_dealloc_rx_urbs(hif_dev); in ath9k_hif_usb_alloc_rx_urbs()
886 static void ath9k_hif_usb_dealloc_reg_in_urbs(struct hif_device_usb *hif_dev) in ath9k_hif_usb_dealloc_reg_in_urbs() argument
888 usb_kill_anchored_urbs(&hif_dev->reg_in_submitted); in ath9k_hif_usb_dealloc_reg_in_urbs()
891 static int ath9k_hif_usb_alloc_reg_in_urbs(struct hif_device_usb *hif_dev) in ath9k_hif_usb_alloc_reg_in_urbs() argument
897 init_usb_anchor(&hif_dev->reg_in_submitted); in ath9k_hif_usb_alloc_reg_in_urbs()
915 usb_fill_int_urb(urb, hif_dev->udev, in ath9k_hif_usb_alloc_reg_in_urbs()
916 usb_rcvintpipe(hif_dev->udev, in ath9k_hif_usb_alloc_reg_in_urbs()
922 usb_anchor_urb(urb, &hif_dev->reg_in_submitted); in ath9k_hif_usb_alloc_reg_in_urbs()
945 ath9k_hif_usb_dealloc_reg_in_urbs(hif_dev); in ath9k_hif_usb_alloc_reg_in_urbs()
949 static int ath9k_hif_usb_alloc_urbs(struct hif_device_usb *hif_dev) in ath9k_hif_usb_alloc_urbs() argument
952 init_usb_anchor(&hif_dev->regout_submitted); in ath9k_hif_usb_alloc_urbs()
955 if (ath9k_hif_usb_alloc_tx_urbs(hif_dev) < 0) in ath9k_hif_usb_alloc_urbs()
959 if (ath9k_hif_usb_alloc_rx_urbs(hif_dev) < 0) in ath9k_hif_usb_alloc_urbs()
963 if (ath9k_hif_usb_alloc_reg_in_urbs(hif_dev) < 0) in ath9k_hif_usb_alloc_urbs()
968 ath9k_hif_usb_dealloc_rx_urbs(hif_dev); in ath9k_hif_usb_alloc_urbs()
970 ath9k_hif_usb_dealloc_tx_urbs(hif_dev); in ath9k_hif_usb_alloc_urbs()
975 static void ath9k_hif_usb_dealloc_urbs(struct hif_device_usb *hif_dev) in ath9k_hif_usb_dealloc_urbs() argument
977 usb_kill_anchored_urbs(&hif_dev->regout_submitted); in ath9k_hif_usb_dealloc_urbs()
978 ath9k_hif_usb_dealloc_reg_in_urbs(hif_dev); in ath9k_hif_usb_dealloc_urbs()
979 ath9k_hif_usb_dealloc_tx_urbs(hif_dev); in ath9k_hif_usb_dealloc_urbs()
980 ath9k_hif_usb_dealloc_rx_urbs(hif_dev); in ath9k_hif_usb_dealloc_urbs()
983 static int ath9k_hif_usb_download_fw(struct hif_device_usb *hif_dev) in ath9k_hif_usb_download_fw() argument
986 const void *data = hif_dev->fw_data; in ath9k_hif_usb_download_fw()
987 size_t len = hif_dev->fw_size; in ath9k_hif_usb_download_fw()
999 err = usb_control_msg(hif_dev->udev, in ath9k_hif_usb_download_fw()
1000 usb_sndctrlpipe(hif_dev->udev, 0), in ath9k_hif_usb_download_fw()
1014 if (IS_AR7010_DEVICE(hif_dev->usb_device_id->driver_info)) in ath9k_hif_usb_download_fw()
1022 err = usb_control_msg(hif_dev->udev, usb_sndctrlpipe(hif_dev->udev, 0), in ath9k_hif_usb_download_fw()
1029 dev_info(&hif_dev->udev->dev, "ath9k_htc: Transferred FW: %s, size: %ld\n", in ath9k_hif_usb_download_fw()
1030 hif_dev->fw_name, (unsigned long) hif_dev->fw_size); in ath9k_hif_usb_download_fw()
1035 static int ath9k_hif_usb_dev_init(struct hif_device_usb *hif_dev) in ath9k_hif_usb_dev_init() argument
1039 ret = ath9k_hif_usb_download_fw(hif_dev); in ath9k_hif_usb_dev_init()
1041 dev_err(&hif_dev->udev->dev, in ath9k_hif_usb_dev_init()
1043 hif_dev->fw_name); in ath9k_hif_usb_dev_init()
1048 ret = ath9k_hif_usb_alloc_urbs(hif_dev); in ath9k_hif_usb_dev_init()
1050 dev_err(&hif_dev->udev->dev, in ath9k_hif_usb_dev_init()
1058 static void ath9k_hif_usb_dev_deinit(struct hif_device_usb *hif_dev) in ath9k_hif_usb_dev_deinit() argument
1060 ath9k_hif_usb_dealloc_urbs(hif_dev); in ath9k_hif_usb_dev_deinit()
1067 static void ath9k_hif_usb_firmware_fail(struct hif_device_usb *hif_dev) in ath9k_hif_usb_firmware_fail() argument
1069 struct device *dev = &hif_dev->udev->dev; in ath9k_hif_usb_firmware_fail()
1072 complete_all(&hif_dev->fw_done); in ath9k_hif_usb_firmware_fail()
1085 struct hif_device_usb *hif_dev = context; in ath9k_hif_usb_firmware_cb() local
1089 dev_err(&hif_dev->udev->dev, in ath9k_hif_usb_firmware_cb()
1091 hif_dev->fw_name); in ath9k_hif_usb_firmware_cb()
1095 hif_dev->htc_handle = ath9k_htc_hw_alloc(hif_dev, &hif_usb, in ath9k_hif_usb_firmware_cb()
1096 &hif_dev->udev->dev); in ath9k_hif_usb_firmware_cb()
1097 if (hif_dev->htc_handle == NULL) in ath9k_hif_usb_firmware_cb()
1100 hif_dev->fw_data = fw->data; in ath9k_hif_usb_firmware_cb()
1101 hif_dev->fw_size = fw->size; in ath9k_hif_usb_firmware_cb()
1105 ret = ath9k_hif_usb_dev_init(hif_dev); in ath9k_hif_usb_firmware_cb()
1109 ret = ath9k_htc_hw_init(hif_dev->htc_handle, in ath9k_hif_usb_firmware_cb()
1110 &hif_dev->interface->dev, in ath9k_hif_usb_firmware_cb()
1111 hif_dev->usb_device_id->idProduct, in ath9k_hif_usb_firmware_cb()
1112 hif_dev->udev->product, in ath9k_hif_usb_firmware_cb()
1113 hif_dev->usb_device_id->driver_info); in ath9k_hif_usb_firmware_cb()
1120 hif_dev->flags |= HIF_USB_READY; in ath9k_hif_usb_firmware_cb()
1121 complete_all(&hif_dev->fw_done); in ath9k_hif_usb_firmware_cb()
1126 ath9k_hif_usb_dev_deinit(hif_dev); in ath9k_hif_usb_firmware_cb()
1128 ath9k_htc_hw_free(hif_dev->htc_handle); in ath9k_hif_usb_firmware_cb()
1132 ath9k_hif_usb_firmware_fail(hif_dev); in ath9k_hif_usb_firmware_cb()
1194 struct hif_device_usb *hif_dev; in ath9k_hif_usb_probe() local
1200 hif_dev = kzalloc(sizeof(struct hif_device_usb), GFP_KERNEL); in ath9k_hif_usb_probe()
1201 if (!hif_dev) { in ath9k_hif_usb_probe()
1208 hif_dev->udev = udev; in ath9k_hif_usb_probe()
1209 hif_dev->interface = interface; in ath9k_hif_usb_probe()
1210 hif_dev->usb_device_id = id; in ath9k_hif_usb_probe()
1214 usb_set_intfdata(interface, hif_dev); in ath9k_hif_usb_probe()
1216 init_completion(&hif_dev->fw_done); in ath9k_hif_usb_probe()
1221 hif_dev->fw_name = FIRMWARE_AR7010_1_1; in ath9k_hif_usb_probe()
1223 hif_dev->fw_name = FIRMWARE_AR9271; in ath9k_hif_usb_probe()
1225 ret = request_firmware_nowait(THIS_MODULE, true, hif_dev->fw_name, in ath9k_hif_usb_probe()
1226 &hif_dev->udev->dev, GFP_KERNEL, in ath9k_hif_usb_probe()
1227 hif_dev, ath9k_hif_usb_firmware_cb); in ath9k_hif_usb_probe()
1229 dev_err(&hif_dev->udev->dev, in ath9k_hif_usb_probe()
1231 hif_dev->fw_name); in ath9k_hif_usb_probe()
1235 dev_info(&hif_dev->udev->dev, "ath9k_htc: Firmware %s requested\n", in ath9k_hif_usb_probe()
1236 hif_dev->fw_name); in ath9k_hif_usb_probe()
1242 kfree(hif_dev); in ath9k_hif_usb_probe()
1269 struct hif_device_usb *hif_dev = usb_get_intfdata(interface); in ath9k_hif_usb_disconnect() local
1272 if (!hif_dev) in ath9k_hif_usb_disconnect()
1275 wait_for_completion(&hif_dev->fw_done); in ath9k_hif_usb_disconnect()
1277 if (hif_dev->flags & HIF_USB_READY) { in ath9k_hif_usb_disconnect()
1278 ath9k_htc_hw_deinit(hif_dev->htc_handle, unplugged); in ath9k_hif_usb_disconnect()
1279 ath9k_htc_hw_free(hif_dev->htc_handle); in ath9k_hif_usb_disconnect()
1280 ath9k_hif_usb_dev_deinit(hif_dev); in ath9k_hif_usb_disconnect()
1287 if (!unplugged && (hif_dev->flags & HIF_USB_READY)) in ath9k_hif_usb_disconnect()
1290 kfree(hif_dev); in ath9k_hif_usb_disconnect()
1299 struct hif_device_usb *hif_dev = usb_get_intfdata(interface); in ath9k_hif_usb_suspend() local
1305 if (!(hif_dev->flags & HIF_USB_START)) in ath9k_hif_usb_suspend()
1306 ath9k_htc_suspend(hif_dev->htc_handle); in ath9k_hif_usb_suspend()
1308 wait_for_completion(&hif_dev->fw_done); in ath9k_hif_usb_suspend()
1310 if (hif_dev->flags & HIF_USB_READY) in ath9k_hif_usb_suspend()
1311 ath9k_hif_usb_dealloc_urbs(hif_dev); in ath9k_hif_usb_suspend()
1318 struct hif_device_usb *hif_dev = usb_get_intfdata(interface); in ath9k_hif_usb_resume() local
1319 struct htc_target *htc_handle = hif_dev->htc_handle; in ath9k_hif_usb_resume()
1323 ret = ath9k_hif_usb_alloc_urbs(hif_dev); in ath9k_hif_usb_resume()
1327 if (hif_dev->flags & HIF_USB_READY) { in ath9k_hif_usb_resume()
1329 ret = request_firmware(&fw, hif_dev->fw_name, in ath9k_hif_usb_resume()
1330 &hif_dev->udev->dev); in ath9k_hif_usb_resume()
1334 hif_dev->fw_data = fw->data; in ath9k_hif_usb_resume()
1335 hif_dev->fw_size = fw->size; in ath9k_hif_usb_resume()
1336 ret = ath9k_hif_usb_download_fw(hif_dev); in ath9k_hif_usb_resume()
1341 ath9k_hif_usb_dealloc_urbs(hif_dev); in ath9k_hif_usb_resume()
1355 ath9k_hif_usb_dealloc_urbs(hif_dev); in ath9k_hif_usb_resume()