Lines Matching refs:cardp
44 static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
46 static void if_usb_free(struct if_usb_card *cardp);
47 static int if_usb_submit_rx_urb(struct if_usb_card *cardp);
72 static void if_usb_free(struct if_usb_card *cardp) in if_usb_free() argument
77 usb_kill_urb(cardp->tx_urb); in if_usb_free()
78 usb_kill_urb(cardp->rx_urb); in if_usb_free()
79 usb_kill_urb(cardp->cmd_urb); in if_usb_free()
81 usb_free_urb(cardp->tx_urb); in if_usb_free()
82 cardp->tx_urb = NULL; in if_usb_free()
84 usb_free_urb(cardp->rx_urb); in if_usb_free()
85 cardp->rx_urb = NULL; in if_usb_free()
87 usb_free_urb(cardp->cmd_urb); in if_usb_free()
88 cardp->cmd_urb = NULL; in if_usb_free()
90 kfree(cardp->ep_out_buf); in if_usb_free()
91 cardp->ep_out_buf = NULL; in if_usb_free()
98 struct if_usb_card *cardp = priv->card; in if_usb_setup_firmware() local
103 if_usb_submit_rx_urb(cardp); in if_usb_setup_firmware()
106 b2_cmd.version = cardp->boot2_version; in if_usb_setup_firmware()
116 struct if_usb_card *cardp = from_timer(cardp, t, fw_timeout); in if_usb_fw_timeo() local
119 if (!cardp->fwdnldover) { in if_usb_fw_timeo()
121 cardp->priv->surpriseremoved = 1; in if_usb_fw_timeo()
126 wake_up(&cardp->fw_wq); in if_usb_fw_timeo()
151 struct if_usb_card *cardp; in if_usb_probe() local
157 cardp = kzalloc(sizeof(struct if_usb_card), GFP_KERNEL); in if_usb_probe()
158 if (!cardp) in if_usb_probe()
161 timer_setup(&cardp->fw_timeout, if_usb_fw_timeo, 0); in if_usb_probe()
162 init_waitqueue_head(&cardp->fw_wq); in if_usb_probe()
164 cardp->udev = udev; in if_usb_probe()
177 cardp->ep_in_size = in if_usb_probe()
179 cardp->ep_in = usb_endpoint_num(endpoint); in if_usb_probe()
182 cardp->ep_in); in if_usb_probe()
184 cardp->ep_in_size); in if_usb_probe()
186 cardp->ep_out_size = in if_usb_probe()
188 cardp->ep_out = usb_endpoint_num(endpoint); in if_usb_probe()
191 cardp->ep_out); in if_usb_probe()
193 cardp->ep_out_size); in if_usb_probe()
196 if (!cardp->ep_out_size || !cardp->ep_in_size) { in if_usb_probe()
202 cardp->rx_urb = usb_alloc_urb(0, GFP_KERNEL); in if_usb_probe()
203 if (!cardp->rx_urb) in if_usb_probe()
206 cardp->tx_urb = usb_alloc_urb(0, GFP_KERNEL); in if_usb_probe()
207 if (!cardp->tx_urb) in if_usb_probe()
210 cardp->cmd_urb = usb_alloc_urb(0, GFP_KERNEL); in if_usb_probe()
211 if (!cardp->cmd_urb) in if_usb_probe()
214 cardp->ep_out_buf = kmalloc(MRVDRV_ETH_TX_PACKET_BUFFER_SIZE, in if_usb_probe()
216 if (!cardp->ep_out_buf) { in if_usb_probe()
221 cardp->boot2_version = udev->descriptor.bcdDevice; in if_usb_probe()
222 priv = lbtf_add_card(cardp, &udev->dev, &if_usb_ops); in if_usb_probe()
227 usb_set_intfdata(intf, cardp); in if_usb_probe()
232 if_usb_free(cardp); in if_usb_probe()
245 struct if_usb_card *cardp = usb_get_intfdata(intf); in if_usb_disconnect() local
246 struct lbtf_private *priv = cardp->priv; in if_usb_disconnect()
256 if_usb_free(cardp); in if_usb_disconnect()
271 static int if_usb_send_fw_pkt(struct if_usb_card *cardp) in if_usb_send_fw_pkt() argument
273 struct fwdata *fwdata = cardp->ep_out_buf; in if_usb_send_fw_pkt()
274 u8 *firmware = (u8 *) cardp->fw->data; in if_usb_send_fw_pkt()
280 if (!cardp->CRC_OK) { in if_usb_send_fw_pkt()
281 cardp->totalbytes = cardp->fwlastblksent; in if_usb_send_fw_pkt()
282 cardp->fwseqnum--; in if_usb_send_fw_pkt()
285 lbtf_deb_usb2(&cardp->udev->dev, "totalbytes = %d\n", in if_usb_send_fw_pkt()
286 cardp->totalbytes); in if_usb_send_fw_pkt()
292 memcpy(&fwdata->hdr, &firmware[cardp->totalbytes], in if_usb_send_fw_pkt()
295 cardp->fwlastblksent = cardp->totalbytes; in if_usb_send_fw_pkt()
296 cardp->totalbytes += sizeof(struct fwheader); in if_usb_send_fw_pkt()
298 memcpy(fwdata->data, &firmware[cardp->totalbytes], in if_usb_send_fw_pkt()
301 lbtf_deb_usb2(&cardp->udev->dev, "Data length = %d\n", in if_usb_send_fw_pkt()
304 fwdata->seqnum = cpu_to_le32(++cardp->fwseqnum); in if_usb_send_fw_pkt()
305 cardp->totalbytes += le32_to_cpu(fwdata->hdr.datalength); in if_usb_send_fw_pkt()
307 usb_tx_block(cardp, cardp->ep_out_buf, sizeof(struct fwdata) + in if_usb_send_fw_pkt()
311 lbtf_deb_usb2(&cardp->udev->dev, "There are data to follow\n"); in if_usb_send_fw_pkt()
312 lbtf_deb_usb2(&cardp->udev->dev, in if_usb_send_fw_pkt()
314 cardp->fwseqnum, cardp->totalbytes); in if_usb_send_fw_pkt()
316 lbtf_deb_usb2(&cardp->udev->dev, in if_usb_send_fw_pkt()
318 lbtf_deb_usb2(&cardp->udev->dev, "Downloading FW JUMP BLOCK\n"); in if_usb_send_fw_pkt()
323 cardp->fwfinalblk = 1; in if_usb_send_fw_pkt()
326 lbtf_deb_usb2(&cardp->udev->dev, "Firmware download done; size %d\n", in if_usb_send_fw_pkt()
327 cardp->totalbytes); in if_usb_send_fw_pkt()
335 struct if_usb_card *cardp = priv->card; in if_usb_reset_device() local
336 struct cmd_ds_802_11_reset *cmd = cardp->ep_out_buf + 4; in if_usb_reset_device()
341 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_REQUEST); in if_usb_reset_device()
348 usb_tx_block(cardp, cardp->ep_out_buf, in if_usb_reset_device()
352 ret = usb_reset_device(cardp->udev); in if_usb_reset_device()
370 static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload, in usb_tx_block() argument
378 if (cardp->priv->surpriseremoved) { in usb_tx_block()
379 lbtf_deb_usbd(&cardp->udev->dev, "Device removed\n"); in usb_tx_block()
384 urb = cardp->tx_urb; in usb_tx_block()
386 urb = cardp->cmd_urb; in usb_tx_block()
388 usb_fill_bulk_urb(urb, cardp->udev, in usb_tx_block()
389 usb_sndbulkpipe(cardp->udev, in usb_tx_block()
390 cardp->ep_out), in usb_tx_block()
391 payload, nb, if_usb_write_bulk_callback, cardp); in usb_tx_block()
396 lbtf_deb_usbd(&cardp->udev->dev, in usb_tx_block()
401 lbtf_deb_usb2(&cardp->udev->dev, "usb_submit_urb success\n"); in usb_tx_block()
410 static int __if_usb_submit_rx_urb(struct if_usb_card *cardp, in __if_usb_submit_rx_urb() argument
425 cardp->rx_skb = skb; in __if_usb_submit_rx_urb()
428 usb_fill_bulk_urb(cardp->rx_urb, cardp->udev, in __if_usb_submit_rx_urb()
429 usb_rcvbulkpipe(cardp->udev, cardp->ep_in), in __if_usb_submit_rx_urb()
431 MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, callbackfn, cardp); in __if_usb_submit_rx_urb()
433 lbtf_deb_usb2(&cardp->udev->dev, "Pointer for rx_urb %p\n", in __if_usb_submit_rx_urb()
434 cardp->rx_urb); in __if_usb_submit_rx_urb()
435 ret = usb_submit_urb(cardp->rx_urb, GFP_ATOMIC); in __if_usb_submit_rx_urb()
437 lbtf_deb_usbd(&cardp->udev->dev, in __if_usb_submit_rx_urb()
440 cardp->rx_skb = NULL; in __if_usb_submit_rx_urb()
444 lbtf_deb_usb2(&cardp->udev->dev, "Submit Rx URB success\n"); in __if_usb_submit_rx_urb()
450 static int if_usb_submit_rx_urb_fwload(struct if_usb_card *cardp) in if_usb_submit_rx_urb_fwload() argument
452 return __if_usb_submit_rx_urb(cardp, &if_usb_receive_fwload); in if_usb_submit_rx_urb_fwload()
455 static int if_usb_submit_rx_urb(struct if_usb_card *cardp) in if_usb_submit_rx_urb() argument
457 return __if_usb_submit_rx_urb(cardp, &if_usb_receive); in if_usb_submit_rx_urb()
462 struct if_usb_card *cardp = urb->context; in if_usb_receive_fwload() local
463 struct sk_buff *skb = cardp->rx_skb; in if_usb_receive_fwload()
469 lbtf_deb_usbd(&cardp->udev->dev, in if_usb_receive_fwload()
476 if (cardp->fwdnldover) { in if_usb_receive_fwload()
483 wake_up(&cardp->fw_wq); in if_usb_receive_fwload()
487 if_usb_submit_rx_urb_fwload(cardp); in if_usb_receive_fwload()
493 if (cardp->bootcmdresp <= 0) { in if_usb_receive_fwload()
496 if (le16_to_cpu(cardp->udev->descriptor.bcdDevice) < 0x3106) { in if_usb_receive_fwload()
498 if_usb_submit_rx_urb_fwload(cardp); in if_usb_receive_fwload()
499 cardp->bootcmdresp = 1; in if_usb_receive_fwload()
501 lbtf_deb_usbd(&cardp->udev->dev, in if_usb_receive_fwload()
510 if (!cardp->bootcmdresp) in if_usb_receive_fwload()
512 cardp->bootcmdresp = -1; in if_usb_receive_fwload()
524 cardp->bootcmdresp = 1; in if_usb_receive_fwload()
525 lbtf_deb_usbd(&cardp->udev->dev, in if_usb_receive_fwload()
530 if_usb_submit_rx_urb_fwload(cardp); in if_usb_receive_fwload()
538 lbtf_deb_usbd(&cardp->udev->dev, in if_usb_receive_fwload()
546 lbtf_deb_usb2(&cardp->udev->dev, in if_usb_receive_fwload()
548 lbtf_deb_usb2(&cardp->udev->dev, in if_usb_receive_fwload()
551 cardp->CRC_OK = 1; in if_usb_receive_fwload()
553 lbtf_deb_usbd(&cardp->udev->dev, in if_usb_receive_fwload()
555 cardp->CRC_OK = 0; in if_usb_receive_fwload()
561 mod_timer(&cardp->fw_timeout, jiffies + (HZ/5)); in if_usb_receive_fwload()
563 if (cardp->fwfinalblk) { in if_usb_receive_fwload()
564 cardp->fwdnldover = 1; in if_usb_receive_fwload()
568 if_usb_send_fw_pkt(cardp); in if_usb_receive_fwload()
571 if_usb_submit_rx_urb_fwload(cardp); in if_usb_receive_fwload()
581 struct if_usb_card *cardp, in process_cmdtypedata() argument
586 lbtf_deb_usbd(&cardp->udev->dev, "Packet length is Invalid\n"); in process_cmdtypedata()
598 struct if_usb_card *cardp, in process_cmdrequest() argument
605 lbtf_deb_usbd(&cardp->udev->dev, in process_cmdrequest()
626 struct if_usb_card *cardp = urb->context; in if_usb_receive() local
627 struct sk_buff *skb = cardp->rx_skb; in if_usb_receive()
628 struct lbtf_private *priv = cardp->priv; in if_usb_receive()
638 lbtf_deb_usbd(&cardp->udev->dev, "RX URB failed: %d\n", in if_usb_receive()
646 lbtf_deb_usbd(&cardp->udev->dev, in if_usb_receive()
657 process_cmdtypedata(recvlength, skb, cardp, priv); in if_usb_receive()
661 process_cmdrequest(recvlength, recvbuff, skb, cardp, priv); in if_usb_receive()
668 lbtf_deb_usbd(&cardp->udev->dev, "**EVENT** 0x%X\n", in if_usb_receive()
684 lbtf_deb_usbd(&cardp->udev->dev, in if_usb_receive()
691 lbtf_deb_usbd(&cardp->udev->dev, in if_usb_receive()
698 if_usb_submit_rx_urb(cardp); in if_usb_receive()
715 struct if_usb_card *cardp = priv->card; in if_usb_host_to_card() local
718 lbtf_deb_usbd(&cardp->udev->dev, "*** type = %u\n", type); in if_usb_host_to_card()
719 lbtf_deb_usbd(&cardp->udev->dev, "size after = %d\n", nb); in if_usb_host_to_card()
722 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_REQUEST); in if_usb_host_to_card()
724 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_DATA); in if_usb_host_to_card()
728 memcpy((cardp->ep_out_buf + MESSAGE_HEADER_LEN), payload, nb); in if_usb_host_to_card()
730 return usb_tx_block(cardp, cardp->ep_out_buf, nb + MESSAGE_HEADER_LEN, in if_usb_host_to_card()
742 static int if_usb_issue_boot_command(struct if_usb_card *cardp, int ivalue) in if_usb_issue_boot_command() argument
744 struct bootcmd *bootcmd = cardp->ep_out_buf; in if_usb_issue_boot_command()
752 usb_tx_block(cardp, cardp->ep_out_buf, sizeof(*bootcmd), 0); in if_usb_issue_boot_command()
809 struct if_usb_card *cardp = priv->card; in if_usb_prog_firmware() local
816 cardp->priv = priv; in if_usb_prog_firmware()
819 ret = request_firmware(&cardp->fw, lbtf_fw_name, &cardp->udev->dev); in if_usb_prog_firmware()
828 if (check_fwfile_format(cardp->fw->data, cardp->fw->size)) in if_usb_prog_firmware()
832 if (if_usb_submit_rx_urb_fwload(cardp) < 0) { in if_usb_prog_firmware()
833 lbtf_deb_usbd(&cardp->udev->dev, "URB submission is failed\n"); in if_usb_prog_firmware()
838 cardp->bootcmdresp = 0; in if_usb_prog_firmware()
843 if_usb_issue_boot_command(cardp, BOOT_CMD_FW_BY_USB); in if_usb_prog_firmware()
848 } while (cardp->bootcmdresp == 0 && j < 10); in if_usb_prog_firmware()
849 } while (cardp->bootcmdresp == 0 && i < 5); in if_usb_prog_firmware()
851 if (cardp->bootcmdresp <= 0) { in if_usb_prog_firmware()
861 cardp->totalbytes = 0; in if_usb_prog_firmware()
862 cardp->fwlastblksent = 0; in if_usb_prog_firmware()
863 cardp->CRC_OK = 1; in if_usb_prog_firmware()
864 cardp->fwdnldover = 0; in if_usb_prog_firmware()
865 cardp->fwseqnum = -1; in if_usb_prog_firmware()
866 cardp->totalbytes = 0; in if_usb_prog_firmware()
867 cardp->fwfinalblk = 0; in if_usb_prog_firmware()
870 if_usb_send_fw_pkt(cardp); in if_usb_prog_firmware()
873 wait_event_interruptible(cardp->fw_wq, cardp->priv->surpriseremoved || in if_usb_prog_firmware()
874 cardp->fwdnldover); in if_usb_prog_firmware()
876 del_timer_sync(&cardp->fw_timeout); in if_usb_prog_firmware()
877 usb_kill_urb(cardp->rx_urb); in if_usb_prog_firmware()
879 if (!cardp->fwdnldover) { in if_usb_prog_firmware()
892 release_firmware(cardp->fw); in if_usb_prog_firmware()
893 cardp->fw = NULL; in if_usb_prog_firmware()
895 if_usb_setup_firmware(cardp->priv); in if_usb_prog_firmware()