Lines Matching refs:devinfo

164 static void brcmf_usb_rx_refill(struct brcmf_usbdev_info *devinfo,
175 return brcmf_usb_get_buspub(dev)->devinfo; in brcmf_usb_get_businfo()
178 static int brcmf_usb_ioctl_resp_wait(struct brcmf_usbdev_info *devinfo) in brcmf_usb_ioctl_resp_wait() argument
180 return wait_event_timeout(devinfo->ioctl_resp_wait, in brcmf_usb_ioctl_resp_wait()
181 devinfo->ctl_completed, in brcmf_usb_ioctl_resp_wait()
185 static void brcmf_usb_ioctl_resp_wake(struct brcmf_usbdev_info *devinfo) in brcmf_usb_ioctl_resp_wake() argument
187 if (waitqueue_active(&devinfo->ioctl_resp_wait)) in brcmf_usb_ioctl_resp_wake()
188 wake_up(&devinfo->ioctl_resp_wait); in brcmf_usb_ioctl_resp_wake()
192 brcmf_usb_ctl_complete(struct brcmf_usbdev_info *devinfo, int type, int status) in brcmf_usb_ctl_complete() argument
196 if (unlikely(devinfo == NULL)) in brcmf_usb_ctl_complete()
201 devinfo->bus_pub.stats.rx_ctlpkts++; in brcmf_usb_ctl_complete()
203 devinfo->bus_pub.stats.rx_ctlerrs++; in brcmf_usb_ctl_complete()
206 devinfo->bus_pub.stats.tx_ctlpkts++; in brcmf_usb_ctl_complete()
208 devinfo->bus_pub.stats.tx_ctlerrs++; in brcmf_usb_ctl_complete()
211 devinfo->ctl_urb_status = status; in brcmf_usb_ctl_complete()
212 devinfo->ctl_completed = true; in brcmf_usb_ctl_complete()
213 brcmf_usb_ioctl_resp_wake(devinfo); in brcmf_usb_ctl_complete()
219 struct brcmf_usbdev_info *devinfo = in brcmf_usb_ctlread_complete() local
223 devinfo->ctl_urb_actual_length = urb->actual_length; in brcmf_usb_ctlread_complete()
224 brcmf_usb_ctl_complete(devinfo, BRCMF_USB_CBCTL_READ, in brcmf_usb_ctlread_complete()
231 struct brcmf_usbdev_info *devinfo = in brcmf_usb_ctlwrite_complete() local
235 brcmf_usb_ctl_complete(devinfo, BRCMF_USB_CBCTL_WRITE, in brcmf_usb_ctlwrite_complete()
240 brcmf_usb_send_ctl(struct brcmf_usbdev_info *devinfo, u8 *buf, int len) in brcmf_usb_send_ctl() argument
246 if (devinfo == NULL || buf == NULL || in brcmf_usb_send_ctl()
247 len == 0 || devinfo->ctl_urb == NULL) in brcmf_usb_send_ctl()
251 devinfo->ctl_write.wLength = cpu_to_le16p(&size); in brcmf_usb_send_ctl()
252 devinfo->ctl_urb->transfer_buffer_length = size; in brcmf_usb_send_ctl()
253 devinfo->ctl_urb_status = 0; in brcmf_usb_send_ctl()
254 devinfo->ctl_urb_actual_length = 0; in brcmf_usb_send_ctl()
256 usb_fill_control_urb(devinfo->ctl_urb, in brcmf_usb_send_ctl()
257 devinfo->usbdev, in brcmf_usb_send_ctl()
258 devinfo->ctl_out_pipe, in brcmf_usb_send_ctl()
259 (unsigned char *) &devinfo->ctl_write, in brcmf_usb_send_ctl()
262 devinfo); in brcmf_usb_send_ctl()
264 ret = usb_submit_urb(devinfo->ctl_urb, GFP_ATOMIC); in brcmf_usb_send_ctl()
272 brcmf_usb_recv_ctl(struct brcmf_usbdev_info *devinfo, u8 *buf, int len) in brcmf_usb_recv_ctl() argument
278 if ((devinfo == NULL) || (buf == NULL) || (len == 0) in brcmf_usb_recv_ctl()
279 || (devinfo->ctl_urb == NULL)) in brcmf_usb_recv_ctl()
283 devinfo->ctl_read.wLength = cpu_to_le16p(&size); in brcmf_usb_recv_ctl()
284 devinfo->ctl_urb->transfer_buffer_length = size; in brcmf_usb_recv_ctl()
286 devinfo->ctl_read.bRequestType = USB_DIR_IN in brcmf_usb_recv_ctl()
288 devinfo->ctl_read.bRequest = 1; in brcmf_usb_recv_ctl()
290 usb_fill_control_urb(devinfo->ctl_urb, in brcmf_usb_recv_ctl()
291 devinfo->usbdev, in brcmf_usb_recv_ctl()
292 devinfo->ctl_in_pipe, in brcmf_usb_recv_ctl()
293 (unsigned char *) &devinfo->ctl_read, in brcmf_usb_recv_ctl()
296 devinfo); in brcmf_usb_recv_ctl()
298 ret = usb_submit_urb(devinfo->ctl_urb, GFP_ATOMIC); in brcmf_usb_recv_ctl()
309 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(dev); in brcmf_usb_tx_ctlpkt() local
312 if (devinfo->bus_pub.state != BRCMFMAC_USB_STATE_UP) in brcmf_usb_tx_ctlpkt()
315 if (test_and_set_bit(0, &devinfo->ctl_op)) in brcmf_usb_tx_ctlpkt()
318 devinfo->ctl_completed = false; in brcmf_usb_tx_ctlpkt()
319 err = brcmf_usb_send_ctl(devinfo, buf, len); in brcmf_usb_tx_ctlpkt()
322 clear_bit(0, &devinfo->ctl_op); in brcmf_usb_tx_ctlpkt()
325 timeout = brcmf_usb_ioctl_resp_wait(devinfo); in brcmf_usb_tx_ctlpkt()
326 clear_bit(0, &devinfo->ctl_op); in brcmf_usb_tx_ctlpkt()
338 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(dev); in brcmf_usb_rx_ctlpkt() local
341 if (devinfo->bus_pub.state != BRCMFMAC_USB_STATE_UP) in brcmf_usb_rx_ctlpkt()
344 if (test_and_set_bit(0, &devinfo->ctl_op)) in brcmf_usb_rx_ctlpkt()
347 devinfo->ctl_completed = false; in brcmf_usb_rx_ctlpkt()
348 err = brcmf_usb_recv_ctl(devinfo, buf, len); in brcmf_usb_rx_ctlpkt()
351 clear_bit(0, &devinfo->ctl_op); in brcmf_usb_rx_ctlpkt()
354 timeout = brcmf_usb_ioctl_resp_wait(devinfo); in brcmf_usb_rx_ctlpkt()
355 err = devinfo->ctl_urb_status; in brcmf_usb_rx_ctlpkt()
356 clear_bit(0, &devinfo->ctl_op); in brcmf_usb_rx_ctlpkt()
362 return devinfo->ctl_urb_actual_length; in brcmf_usb_rx_ctlpkt()
367 static struct brcmf_usbreq *brcmf_usb_deq(struct brcmf_usbdev_info *devinfo, in brcmf_usb_deq() argument
372 spin_lock_irqsave(&devinfo->qlock, flags); in brcmf_usb_deq()
374 spin_unlock_irqrestore(&devinfo->qlock, flags); in brcmf_usb_deq()
381 spin_unlock_irqrestore(&devinfo->qlock, flags); in brcmf_usb_deq()
386 static void brcmf_usb_enq(struct brcmf_usbdev_info *devinfo, in brcmf_usb_enq() argument
391 spin_lock_irqsave(&devinfo->qlock, flags); in brcmf_usb_enq()
395 spin_unlock_irqrestore(&devinfo->qlock, flags); in brcmf_usb_enq()
451 static void brcmf_usb_del_fromq(struct brcmf_usbdev_info *devinfo, in brcmf_usb_del_fromq() argument
456 spin_lock_irqsave(&devinfo->qlock, flags); in brcmf_usb_del_fromq()
458 spin_unlock_irqrestore(&devinfo->qlock, flags); in brcmf_usb_del_fromq()
465 struct brcmf_usbdev_info *devinfo = req->devinfo; in brcmf_usb_tx_complete() local
470 brcmf_usb_del_fromq(devinfo, req); in brcmf_usb_tx_complete()
472 brcmf_txcomplete(devinfo->dev, req->skb, urb->status == 0); in brcmf_usb_tx_complete()
474 brcmf_usb_enq(devinfo, &devinfo->tx_freeq, req, &devinfo->tx_freecount); in brcmf_usb_tx_complete()
475 spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags); in brcmf_usb_tx_complete()
476 if (devinfo->tx_freecount > devinfo->tx_high_watermark && in brcmf_usb_tx_complete()
477 devinfo->tx_flowblock) { in brcmf_usb_tx_complete()
478 brcmf_txflowblock(devinfo->dev, false); in brcmf_usb_tx_complete()
479 devinfo->tx_flowblock = false; in brcmf_usb_tx_complete()
481 spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags); in brcmf_usb_tx_complete()
487 struct brcmf_usbdev_info *devinfo = req->devinfo; in brcmf_usb_rx_complete() local
491 brcmf_usb_del_fromq(devinfo, req); in brcmf_usb_rx_complete()
498 brcmf_usb_enq(devinfo, &devinfo->rx_freeq, req, NULL); in brcmf_usb_rx_complete()
502 if (devinfo->bus_pub.state == BRCMFMAC_USB_STATE_UP) { in brcmf_usb_rx_complete()
504 brcmf_rx_frame(devinfo->dev, skb); in brcmf_usb_rx_complete()
505 brcmf_usb_rx_refill(devinfo, req); in brcmf_usb_rx_complete()
508 brcmf_usb_enq(devinfo, &devinfo->rx_freeq, req, NULL); in brcmf_usb_rx_complete()
514 static void brcmf_usb_rx_refill(struct brcmf_usbdev_info *devinfo, in brcmf_usb_rx_refill() argument
520 if (!req || !devinfo) in brcmf_usb_rx_refill()
523 skb = dev_alloc_skb(devinfo->bus_pub.bus_mtu); in brcmf_usb_rx_refill()
525 brcmf_usb_enq(devinfo, &devinfo->rx_freeq, req, NULL); in brcmf_usb_rx_refill()
530 usb_fill_bulk_urb(req->urb, devinfo->usbdev, devinfo->rx_pipe, in brcmf_usb_rx_refill()
533 req->devinfo = devinfo; in brcmf_usb_rx_refill()
534 brcmf_usb_enq(devinfo, &devinfo->rx_postq, req, NULL); in brcmf_usb_rx_refill()
538 brcmf_usb_del_fromq(devinfo, req); in brcmf_usb_rx_refill()
541 brcmf_usb_enq(devinfo, &devinfo->rx_freeq, req, NULL); in brcmf_usb_rx_refill()
546 static void brcmf_usb_rx_fill_all(struct brcmf_usbdev_info *devinfo) in brcmf_usb_rx_fill_all() argument
550 if (devinfo->bus_pub.state != BRCMFMAC_USB_STATE_UP) { in brcmf_usb_rx_fill_all()
551 brcmf_err("bus is not up=%d\n", devinfo->bus_pub.state); in brcmf_usb_rx_fill_all()
554 while ((req = brcmf_usb_deq(devinfo, &devinfo->rx_freeq, NULL)) != NULL) in brcmf_usb_rx_fill_all()
555 brcmf_usb_rx_refill(devinfo, req); in brcmf_usb_rx_fill_all()
559 brcmf_usb_state_change(struct brcmf_usbdev_info *devinfo, int state) in brcmf_usb_state_change() argument
561 struct brcmf_bus *bcmf_bus = devinfo->bus_pub.bus; in brcmf_usb_state_change()
565 devinfo->bus_pub.state, state); in brcmf_usb_state_change()
567 if (devinfo->bus_pub.state == state) in brcmf_usb_state_change()
570 old_state = devinfo->bus_pub.state; in brcmf_usb_state_change()
571 devinfo->bus_pub.state = state; in brcmf_usb_state_change()
587 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(dev); in brcmf_usb_tx() local
593 if (devinfo->bus_pub.state != BRCMFMAC_USB_STATE_UP) { in brcmf_usb_tx()
598 req = brcmf_usb_deq(devinfo, &devinfo->tx_freeq, in brcmf_usb_tx()
599 &devinfo->tx_freecount); in brcmf_usb_tx()
607 req->devinfo = devinfo; in brcmf_usb_tx()
608 usb_fill_bulk_urb(req->urb, devinfo->usbdev, devinfo->tx_pipe, in brcmf_usb_tx()
611 brcmf_usb_enq(devinfo, &devinfo->tx_postq, req, NULL); in brcmf_usb_tx()
615 brcmf_usb_del_fromq(devinfo, req); in brcmf_usb_tx()
617 brcmf_usb_enq(devinfo, &devinfo->tx_freeq, req, in brcmf_usb_tx()
618 &devinfo->tx_freecount); in brcmf_usb_tx()
622 spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags); in brcmf_usb_tx()
623 if (devinfo->tx_freecount < devinfo->tx_low_watermark && in brcmf_usb_tx()
624 !devinfo->tx_flowblock) { in brcmf_usb_tx()
626 devinfo->tx_flowblock = true; in brcmf_usb_tx()
628 spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags); in brcmf_usb_tx()
638 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(dev); in brcmf_usb_up() local
641 if (devinfo->bus_pub.state == BRCMFMAC_USB_STATE_UP) in brcmf_usb_up()
645 brcmf_usb_state_change(devinfo, BRCMFMAC_USB_STATE_UP); in brcmf_usb_up()
647 if (devinfo->ctl_urb) { in brcmf_usb_up()
648 devinfo->ctl_in_pipe = usb_rcvctrlpipe(devinfo->usbdev, 0); in brcmf_usb_up()
649 devinfo->ctl_out_pipe = usb_sndctrlpipe(devinfo->usbdev, 0); in brcmf_usb_up()
652 devinfo->ctl_write.bRequestType = in brcmf_usb_up()
654 devinfo->ctl_write.bRequest = 0; in brcmf_usb_up()
655 devinfo->ctl_write.wValue = cpu_to_le16(0); in brcmf_usb_up()
656 devinfo->ctl_write.wIndex = cpu_to_le16(devinfo->ifnum); in brcmf_usb_up()
659 devinfo->ctl_read.bRequestType = in brcmf_usb_up()
661 devinfo->ctl_read.bRequest = 1; in brcmf_usb_up()
662 devinfo->ctl_read.wValue = cpu_to_le16(0); in brcmf_usb_up()
663 devinfo->ctl_read.wIndex = cpu_to_le16(devinfo->ifnum); in brcmf_usb_up()
665 brcmf_usb_rx_fill_all(devinfo); in brcmf_usb_up()
669 static void brcmf_cancel_all_urbs(struct brcmf_usbdev_info *devinfo) in brcmf_cancel_all_urbs() argument
671 if (devinfo->ctl_urb) in brcmf_cancel_all_urbs()
672 usb_kill_urb(devinfo->ctl_urb); in brcmf_cancel_all_urbs()
673 if (devinfo->bulk_urb) in brcmf_cancel_all_urbs()
674 usb_kill_urb(devinfo->bulk_urb); in brcmf_cancel_all_urbs()
675 brcmf_usb_free_q(&devinfo->tx_postq, true); in brcmf_cancel_all_urbs()
676 brcmf_usb_free_q(&devinfo->rx_postq, true); in brcmf_cancel_all_urbs()
681 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(dev); in brcmf_usb_down() local
684 if (devinfo == NULL) in brcmf_usb_down()
687 if (devinfo->bus_pub.state == BRCMFMAC_USB_STATE_DOWN) in brcmf_usb_down()
690 brcmf_usb_state_change(devinfo, BRCMFMAC_USB_STATE_DOWN); in brcmf_usb_down()
692 brcmf_cancel_all_urbs(devinfo); in brcmf_usb_down()
698 struct brcmf_usbdev_info *devinfo = in brcmf_usb_sync_complete() local
701 devinfo->ctl_completed = true; in brcmf_usb_sync_complete()
702 brcmf_usb_ioctl_resp_wake(devinfo); in brcmf_usb_sync_complete()
705 static int brcmf_usb_dl_cmd(struct brcmf_usbdev_info *devinfo, u8 cmd, in brcmf_usb_dl_cmd() argument
712 if ((!devinfo) || (devinfo->ctl_urb == NULL)) in brcmf_usb_dl_cmd()
720 devinfo->ctl_urb->transfer_buffer_length = size; in brcmf_usb_dl_cmd()
722 devinfo->ctl_read.wLength = cpu_to_le16p(&size); in brcmf_usb_dl_cmd()
723 devinfo->ctl_read.bRequestType = USB_DIR_IN | USB_TYPE_VENDOR | in brcmf_usb_dl_cmd()
725 devinfo->ctl_read.bRequest = cmd; in brcmf_usb_dl_cmd()
727 usb_fill_control_urb(devinfo->ctl_urb, in brcmf_usb_dl_cmd()
728 devinfo->usbdev, in brcmf_usb_dl_cmd()
729 usb_rcvctrlpipe(devinfo->usbdev, 0), in brcmf_usb_dl_cmd()
730 (unsigned char *) &devinfo->ctl_read, in brcmf_usb_dl_cmd()
732 (usb_complete_t)brcmf_usb_sync_complete, devinfo); in brcmf_usb_dl_cmd()
734 devinfo->ctl_completed = false; in brcmf_usb_dl_cmd()
735 ret = usb_submit_urb(devinfo->ctl_urb, GFP_ATOMIC); in brcmf_usb_dl_cmd()
741 if (!brcmf_usb_ioctl_resp_wait(devinfo)) { in brcmf_usb_dl_cmd()
742 usb_kill_urb(devinfo->ctl_urb); in brcmf_usb_dl_cmd()
754 brcmf_usb_dlneeded(struct brcmf_usbdev_info *devinfo) in brcmf_usb_dlneeded() argument
761 if (devinfo == NULL) in brcmf_usb_dlneeded()
766 brcmf_usb_dl_cmd(devinfo, DL_GETVER, &id, sizeof(id)); in brcmf_usb_dlneeded()
777 brcmf_usb_dl_cmd(devinfo, DL_RESETCFG, &id, sizeof(id)); in brcmf_usb_dlneeded()
780 devinfo->bus_pub.devid = chipid; in brcmf_usb_dlneeded()
781 devinfo->bus_pub.chiprev = chiprev; in brcmf_usb_dlneeded()
787 brcmf_usb_resetcfg(struct brcmf_usbdev_info *devinfo) in brcmf_usb_resetcfg() argument
800 err = brcmf_usb_dl_cmd(devinfo, DL_GETVER, &id, sizeof(id)); in brcmf_usb_resetcfg()
811 brcmf_usb_dl_cmd(devinfo, DL_RESETCFG, &id, sizeof(id)); in brcmf_usb_resetcfg()
822 brcmf_usb_dl_send_bulk(struct brcmf_usbdev_info *devinfo, void *buffer, int len) in brcmf_usb_dl_send_bulk() argument
826 if ((devinfo == NULL) || (devinfo->bulk_urb == NULL)) in brcmf_usb_dl_send_bulk()
830 usb_fill_bulk_urb(devinfo->bulk_urb, devinfo->usbdev, in brcmf_usb_dl_send_bulk()
831 devinfo->tx_pipe, buffer, len, in brcmf_usb_dl_send_bulk()
832 (usb_complete_t)brcmf_usb_sync_complete, devinfo); in brcmf_usb_dl_send_bulk()
834 devinfo->bulk_urb->transfer_flags |= URB_ZERO_PACKET; in brcmf_usb_dl_send_bulk()
836 devinfo->ctl_completed = false; in brcmf_usb_dl_send_bulk()
837 ret = usb_submit_urb(devinfo->bulk_urb, GFP_ATOMIC); in brcmf_usb_dl_send_bulk()
842 ret = brcmf_usb_ioctl_resp_wait(devinfo); in brcmf_usb_dl_send_bulk()
847 brcmf_usb_dl_writeimage(struct brcmf_usbdev_info *devinfo, u8 *fw, int fwlen) in brcmf_usb_dl_writeimage() argument
864 brcmf_usb_dl_cmd(devinfo, DL_START, &state, sizeof(state)); in brcmf_usb_dl_writeimage()
898 if (brcmf_usb_dl_send_bulk(devinfo, bulkchunk, in brcmf_usb_dl_writeimage()
908 err = brcmf_usb_dl_cmd(devinfo, DL_GETSTATE, &state, in brcmf_usb_dl_writeimage()
933 static int brcmf_usb_dlstart(struct brcmf_usbdev_info *devinfo, u8 *fw, int len) in brcmf_usb_dlstart() argument
939 if (devinfo == NULL) in brcmf_usb_dlstart()
942 if (devinfo->bus_pub.devid == 0xDEAD) in brcmf_usb_dlstart()
945 err = brcmf_usb_dl_writeimage(devinfo, fw, len); in brcmf_usb_dlstart()
947 devinfo->bus_pub.state = BRCMFMAC_USB_STATE_DL_DONE; in brcmf_usb_dlstart()
949 devinfo->bus_pub.state = BRCMFMAC_USB_STATE_DL_FAIL; in brcmf_usb_dlstart()
955 static int brcmf_usb_dlrun(struct brcmf_usbdev_info *devinfo) in brcmf_usb_dlrun() argument
960 if (!devinfo) in brcmf_usb_dlrun()
963 if (devinfo->bus_pub.devid == 0xDEAD) in brcmf_usb_dlrun()
968 brcmf_usb_dl_cmd(devinfo, DL_GETSTATE, &state, sizeof(state)); in brcmf_usb_dlrun()
972 if (brcmf_usb_dl_cmd(devinfo, DL_GO, &state, sizeof(state))) in brcmf_usb_dlrun()
974 if (brcmf_usb_resetcfg(devinfo)) in brcmf_usb_dlrun()
1006 brcmf_usb_fw_download(struct brcmf_usbdev_info *devinfo) in brcmf_usb_fw_download() argument
1012 if (devinfo == NULL) in brcmf_usb_fw_download()
1015 devid = devinfo->bus_pub.devid; in brcmf_usb_fw_download()
1016 chiprev = devinfo->bus_pub.chiprev; in brcmf_usb_fw_download()
1024 if (!devinfo->image) { in brcmf_usb_fw_download()
1029 err = brcmf_usb_dlstart(devinfo, in brcmf_usb_fw_download()
1030 (u8 *)devinfo->image, devinfo->image_len); in brcmf_usb_fw_download()
1032 err = brcmf_usb_dlrun(devinfo); in brcmf_usb_fw_download()
1037 static void brcmf_usb_detach(struct brcmf_usbdev_info *devinfo) in brcmf_usb_detach() argument
1039 brcmf_dbg(USB, "Enter, devinfo %p\n", devinfo); in brcmf_usb_detach()
1042 brcmf_usb_free_q(&devinfo->rx_freeq, false); in brcmf_usb_detach()
1043 brcmf_usb_free_q(&devinfo->tx_freeq, false); in brcmf_usb_detach()
1045 usb_free_urb(devinfo->ctl_urb); in brcmf_usb_detach()
1046 usb_free_urb(devinfo->bulk_urb); in brcmf_usb_detach()
1048 kfree(devinfo->tx_reqs); in brcmf_usb_detach()
1049 kfree(devinfo->rx_reqs); in brcmf_usb_detach()
1073 static const char *brcmf_usb_get_fwname(struct brcmf_usbdev_info *devinfo) in brcmf_usb_get_fwname() argument
1075 switch (devinfo->bus_pub.devid) { in brcmf_usb_get_fwname()
1094 struct brcmf_usbdev *brcmf_usb_attach(struct brcmf_usbdev_info *devinfo, in brcmf_usb_attach() argument
1099 devinfo->bus_pub.nrxq = nrxq; in brcmf_usb_attach()
1100 devinfo->rx_low_watermark = nrxq / 2; in brcmf_usb_attach()
1101 devinfo->bus_pub.devinfo = devinfo; in brcmf_usb_attach()
1102 devinfo->bus_pub.ntxq = ntxq; in brcmf_usb_attach()
1103 devinfo->bus_pub.state = BRCMFMAC_USB_STATE_DOWN; in brcmf_usb_attach()
1106 devinfo->tx_low_watermark = ntxq / 4; in brcmf_usb_attach()
1107 devinfo->tx_high_watermark = devinfo->tx_low_watermark * 3; in brcmf_usb_attach()
1108 devinfo->bus_pub.bus_mtu = BRCMF_USB_MAX_PKT_SIZE; in brcmf_usb_attach()
1111 init_waitqueue_head(&devinfo->ioctl_resp_wait); in brcmf_usb_attach()
1114 spin_lock_init(&devinfo->qlock); in brcmf_usb_attach()
1115 spin_lock_init(&devinfo->tx_flowblock_lock); in brcmf_usb_attach()
1117 INIT_LIST_HEAD(&devinfo->rx_freeq); in brcmf_usb_attach()
1118 INIT_LIST_HEAD(&devinfo->rx_postq); in brcmf_usb_attach()
1120 INIT_LIST_HEAD(&devinfo->tx_freeq); in brcmf_usb_attach()
1121 INIT_LIST_HEAD(&devinfo->tx_postq); in brcmf_usb_attach()
1123 devinfo->tx_flowblock = false; in brcmf_usb_attach()
1125 devinfo->rx_reqs = brcmf_usbdev_qinit(&devinfo->rx_freeq, nrxq); in brcmf_usb_attach()
1126 if (!devinfo->rx_reqs) in brcmf_usb_attach()
1129 devinfo->tx_reqs = brcmf_usbdev_qinit(&devinfo->tx_freeq, ntxq); in brcmf_usb_attach()
1130 if (!devinfo->tx_reqs) in brcmf_usb_attach()
1132 devinfo->tx_freecount = ntxq; in brcmf_usb_attach()
1134 devinfo->ctl_urb = usb_alloc_urb(0, GFP_ATOMIC); in brcmf_usb_attach()
1135 if (!devinfo->ctl_urb) { in brcmf_usb_attach()
1139 devinfo->bulk_urb = usb_alloc_urb(0, GFP_ATOMIC); in brcmf_usb_attach()
1140 if (!devinfo->bulk_urb) { in brcmf_usb_attach()
1145 return &devinfo->bus_pub; in brcmf_usb_attach()
1149 brcmf_usb_detach(devinfo); in brcmf_usb_attach()
1155 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(dev); in brcmf_usb_wowl_config() local
1158 devinfo->wowl_enabled = enabled; in brcmf_usb_wowl_config()
1160 device_set_wakeup_enable(devinfo->dev, true); in brcmf_usb_wowl_config()
1162 device_set_wakeup_enable(devinfo->dev, false); in brcmf_usb_wowl_config()
1173 static int brcmf_usb_bus_setup(struct brcmf_usbdev_info *devinfo) in brcmf_usb_bus_setup() argument
1178 ret = brcmf_attach(devinfo->dev); in brcmf_usb_bus_setup()
1184 ret = brcmf_usb_up(devinfo->dev); in brcmf_usb_bus_setup()
1188 ret = brcmf_bus_start(devinfo->dev); in brcmf_usb_bus_setup()
1194 brcmf_detach(devinfo->dev); in brcmf_usb_bus_setup()
1203 struct brcmf_usbdev_info *devinfo; in brcmf_usb_probe_phase2() local
1214 devinfo = bus->bus_priv.usb->devinfo; in brcmf_usb_probe_phase2()
1215 devinfo->image = fw->data; in brcmf_usb_probe_phase2()
1216 devinfo->image_len = fw->size; in brcmf_usb_probe_phase2()
1218 ret = brcmf_usb_fw_download(devinfo); in brcmf_usb_probe_phase2()
1223 ret = brcmf_usb_bus_setup(devinfo); in brcmf_usb_probe_phase2()
1233 static int brcmf_usb_probe_cb(struct brcmf_usbdev_info *devinfo) in brcmf_usb_probe_cb() argument
1237 struct device *dev = devinfo->dev; in brcmf_usb_probe_cb()
1241 bus_pub = brcmf_usb_attach(devinfo, BRCMF_USB_NRXQ, BRCMF_USB_NTXQ); in brcmf_usb_probe_cb()
1262 if (!brcmf_usb_dlneeded(devinfo)) { in brcmf_usb_probe_cb()
1263 ret = brcmf_usb_bus_setup(devinfo); in brcmf_usb_probe_cb()
1273 brcmf_fw_get_firmwares(dev, 0, brcmf_usb_get_fwname(devinfo), NULL, in brcmf_usb_probe_cb()
1280 brcmf_usb_detach(devinfo); in brcmf_usb_probe_cb()
1285 brcmf_usb_disconnect_cb(struct brcmf_usbdev_info *devinfo) in brcmf_usb_disconnect_cb() argument
1287 if (!devinfo) in brcmf_usb_disconnect_cb()
1289 brcmf_dbg(USB, "Enter, bus_pub %p\n", devinfo); in brcmf_usb_disconnect_cb()
1291 brcmf_detach(devinfo->dev); in brcmf_usb_disconnect_cb()
1292 kfree(devinfo->bus_pub.bus); in brcmf_usb_disconnect_cb()
1293 brcmf_usb_detach(devinfo); in brcmf_usb_disconnect_cb()
1300 struct brcmf_usbdev_info *devinfo; in brcmf_usb_probe() local
1309 devinfo = kzalloc(sizeof(*devinfo), GFP_ATOMIC); in brcmf_usb_probe()
1310 if (devinfo == NULL) in brcmf_usb_probe()
1313 devinfo->usbdev = usb; in brcmf_usb_probe()
1314 devinfo->dev = &usb->dev; in brcmf_usb_probe()
1315 usb_set_intfdata(intf, devinfo); in brcmf_usb_probe()
1352 if (!devinfo->rx_pipe) in brcmf_usb_probe()
1353 devinfo->rx_pipe = in brcmf_usb_probe()
1356 if (!devinfo->tx_pipe) in brcmf_usb_probe()
1357 devinfo->tx_pipe = in brcmf_usb_probe()
1361 if (devinfo->rx_pipe == 0) { in brcmf_usb_probe()
1366 if (devinfo->tx_pipe == 0) { in brcmf_usb_probe()
1372 devinfo->ifnum = desc->bInterfaceNumber; in brcmf_usb_probe()
1381 ret = brcmf_usb_probe_cb(devinfo); in brcmf_usb_probe()
1389 kfree(devinfo); in brcmf_usb_probe()
1397 struct brcmf_usbdev_info *devinfo; in brcmf_usb_disconnect() local
1400 devinfo = (struct brcmf_usbdev_info *)usb_get_intfdata(intf); in brcmf_usb_disconnect()
1401 brcmf_usb_disconnect_cb(devinfo); in brcmf_usb_disconnect()
1402 kfree(devinfo); in brcmf_usb_disconnect()
1412 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev); in brcmf_usb_suspend() local
1415 devinfo->bus_pub.state = BRCMFMAC_USB_STATE_SLEEP; in brcmf_usb_suspend()
1416 if (devinfo->wowl_enabled) in brcmf_usb_suspend()
1417 brcmf_cancel_all_urbs(devinfo); in brcmf_usb_suspend()
1429 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev); in brcmf_usb_resume() local
1432 if (!devinfo->wowl_enabled) in brcmf_usb_resume()
1433 return brcmf_usb_bus_setup(devinfo); in brcmf_usb_resume()
1435 devinfo->bus_pub.state = BRCMFMAC_USB_STATE_UP; in brcmf_usb_resume()
1436 brcmf_usb_rx_fill_all(devinfo); in brcmf_usb_resume()
1443 struct brcmf_usbdev_info *devinfo = brcmf_usb_get_businfo(&usb->dev); in brcmf_usb_reset_resume() local
1448 brcmf_usb_get_fwname(devinfo), NULL, in brcmf_usb_reset_resume()