Lines Matching defs:cardp

45 static int if_usb_prog_firmware(struct if_usb_card *cardp);
48 static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
50 static void if_usb_free(struct if_usb_card *cardp);
51 static int if_usb_submit_rx_urb(struct if_usb_card *cardp);
52 static int if_usb_reset_device(struct if_usb_card *cardp);
74 * @param cardp pointer if_usb_card
76 static void if_usb_free(struct if_usb_card *cardp)
81 usb_kill_urb(cardp->tx_urb);
82 usb_kill_urb(cardp->rx_urb);
83 usb_kill_urb(cardp->cmd_urb);
85 usb_free_urb(cardp->tx_urb);
86 cardp->tx_urb = NULL;
88 usb_free_urb(cardp->rx_urb);
89 cardp->rx_urb = NULL;
91 usb_free_urb(cardp->cmd_urb);
92 cardp->cmd_urb = NULL;
94 kfree(cardp->ep_out_buf);
95 cardp->ep_out_buf = NULL;
102 struct if_usb_card *cardp = priv->card;
107 if_usb_submit_rx_urb(cardp);
110 b2_cmd.version = cardp->boot2_version;
120 struct if_usb_card *cardp = (void *)priv;
123 if (!cardp->fwdnldover) {
125 cardp->priv->surpriseremoved = 1;
130 wake_up(&cardp->fw_wq);
149 struct if_usb_card *cardp;
155 cardp = kzalloc(sizeof(struct if_usb_card), GFP_KERNEL);
156 if (!cardp)
159 setup_timer(&cardp->fw_timeout, if_usb_fw_timeo, (unsigned long)cardp);
160 init_waitqueue_head(&cardp->fw_wq);
162 cardp->udev = udev;
175 cardp->ep_in_size =
177 cardp->ep_in = usb_endpoint_num(endpoint);
180 cardp->ep_in);
182 cardp->ep_in_size);
184 cardp->ep_out_size =
186 cardp->ep_out = usb_endpoint_num(endpoint);
189 cardp->ep_out);
191 cardp->ep_out_size);
194 if (!cardp->ep_out_size || !cardp->ep_in_size) {
200 cardp->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
201 if (!cardp->rx_urb) {
206 cardp->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
207 if (!cardp->tx_urb) {
212 cardp->cmd_urb = usb_alloc_urb(0, GFP_KERNEL);
213 if (!cardp->cmd_urb) {
218 cardp->ep_out_buf = kmalloc(MRVDRV_ETH_TX_PACKET_BUFFER_SIZE,
220 if (!cardp->ep_out_buf) {
225 priv = lbtf_add_card(cardp, &udev->dev);
229 cardp->priv = priv;
234 cardp->boot2_version = udev->descriptor.bcdDevice;
237 usb_set_intfdata(intf, cardp);
242 if_usb_free(cardp);
255 struct if_usb_card *cardp = usb_get_intfdata(intf);
256 struct lbtf_private *priv = cardp->priv;
260 if_usb_reset_device(cardp);
266 if_usb_free(cardp);
281 static int if_usb_send_fw_pkt(struct if_usb_card *cardp)
283 struct fwdata *fwdata = cardp->ep_out_buf;
284 u8 *firmware = (u8 *) cardp->fw->data;
290 if (!cardp->CRC_OK) {
291 cardp->totalbytes = cardp->fwlastblksent;
292 cardp->fwseqnum--;
295 lbtf_deb_usb2(&cardp->udev->dev, "totalbytes = %d\n",
296 cardp->totalbytes);
302 memcpy(&fwdata->hdr, &firmware[cardp->totalbytes],
305 cardp->fwlastblksent = cardp->totalbytes;
306 cardp->totalbytes += sizeof(struct fwheader);
308 memcpy(fwdata->data, &firmware[cardp->totalbytes],
311 lbtf_deb_usb2(&cardp->udev->dev, "Data length = %d\n",
314 fwdata->seqnum = cpu_to_le32(++cardp->fwseqnum);
315 cardp->totalbytes += le32_to_cpu(fwdata->hdr.datalength);
317 usb_tx_block(cardp, cardp->ep_out_buf, sizeof(struct fwdata) +
321 lbtf_deb_usb2(&cardp->udev->dev, "There are data to follow\n");
322 lbtf_deb_usb2(&cardp->udev->dev,
324 cardp->fwseqnum, cardp->totalbytes);
326 lbtf_deb_usb2(&cardp->udev->dev,
328 lbtf_deb_usb2(&cardp->udev->dev, "Donwloading FW JUMP BLOCK\n");
333 cardp->fwfinalblk = 1;
336 lbtf_deb_usb2(&cardp->udev->dev, "Firmware download done; size %d\n",
337 cardp->totalbytes);
343 static int if_usb_reset_device(struct if_usb_card *cardp)
345 struct cmd_ds_802_11_reset *cmd = cardp->ep_out_buf + 4;
350 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_REQUEST);
357 usb_tx_block(cardp, cardp->ep_out_buf,
361 ret = usb_reset_device(cardp->udev);
380 static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
388 if (cardp->priv->surpriseremoved) {
389 lbtf_deb_usbd(&cardp->udev->dev, "Device removed\n");
394 urb = cardp->tx_urb;
396 urb = cardp->cmd_urb;
398 usb_fill_bulk_urb(urb, cardp->udev,
399 usb_sndbulkpipe(cardp->udev,
400 cardp->ep_out),
401 payload, nb, if_usb_write_bulk_callback, cardp);
406 lbtf_deb_usbd(&cardp->udev->dev,
411 lbtf_deb_usb2(&cardp->udev->dev, "usb_submit_urb success\n");
420 static int __if_usb_submit_rx_urb(struct if_usb_card *cardp,
435 cardp->rx_skb = skb;
438 usb_fill_bulk_urb(cardp->rx_urb, cardp->udev,
439 usb_rcvbulkpipe(cardp->udev, cardp->ep_in),
441 MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, callbackfn, cardp);
443 cardp->rx_urb->transfer_flags |= URB_ZERO_PACKET;
445 lbtf_deb_usb2(&cardp->udev->dev, "Pointer for rx_urb %p\n",
446 cardp->rx_urb);
447 ret = usb_submit_urb(cardp->rx_urb, GFP_ATOMIC);
449 lbtf_deb_usbd(&cardp->udev->dev,
452 cardp->rx_skb = NULL;
456 lbtf_deb_usb2(&cardp->udev->dev, "Submit Rx URB success\n");
462 static int if_usb_submit_rx_urb_fwload(struct if_usb_card *cardp)
464 return __if_usb_submit_rx_urb(cardp, &if_usb_receive_fwload);
467 static int if_usb_submit_rx_urb(struct if_usb_card *cardp)
469 return __if_usb_submit_rx_urb(cardp, &if_usb_receive);
474 struct if_usb_card *cardp = urb->context;
475 struct sk_buff *skb = cardp->rx_skb;
481 lbtf_deb_usbd(&cardp->udev->dev,
488 if (cardp->fwdnldover) {
495 wake_up(&cardp->fw_wq);
499 if_usb_submit_rx_urb_fwload(cardp);
505 if (cardp->bootcmdresp <= 0) {
508 if (le16_to_cpu(cardp->udev->descriptor.bcdDevice) < 0x3106) {
510 if_usb_submit_rx_urb_fwload(cardp);
511 cardp->bootcmdresp = 1;
513 lbtf_deb_usbd(&cardp->udev->dev,
522 if (!cardp->bootcmdresp)
524 cardp->bootcmdresp = -1;
536 cardp->bootcmdresp = 1;
537 lbtf_deb_usbd(&cardp->udev->dev,
542 if_usb_submit_rx_urb_fwload(cardp);
550 lbtf_deb_usbd(&cardp->udev->dev,
558 lbtf_deb_usb2(&cardp->udev->dev,
560 lbtf_deb_usb2(&cardp->udev->dev,
563 cardp->CRC_OK = 1;
565 lbtf_deb_usbd(&cardp->udev->dev,
567 cardp->CRC_OK = 0;
573 mod_timer(&cardp->fw_timeout, jiffies + (HZ/5));
575 if (cardp->fwfinalblk) {
576 cardp->fwdnldover = 1;
580 if_usb_send_fw_pkt(cardp);
583 if_usb_submit_rx_urb_fwload(cardp);
593 struct if_usb_card *cardp,
598 lbtf_deb_usbd(&cardp->udev->dev, "Packet length is Invalid\n");
610 struct if_usb_card *cardp,
614 lbtf_deb_usbd(&cardp->udev->dev,
637 struct if_usb_card *cardp = urb->context;
638 struct sk_buff *skb = cardp->rx_skb;
639 struct lbtf_private *priv = cardp->priv;
649 lbtf_deb_usbd(&cardp->udev->dev, "RX URB failed: %d\n",
657 lbtf_deb_usbd(&cardp->udev->dev,
668 process_cmdtypedata(recvlength, skb, cardp, priv);
672 process_cmdrequest(recvlength, recvbuff, skb, cardp, priv);
679 lbtf_deb_usbd(&cardp->udev->dev, "**EVENT** 0x%X\n",
695 lbtf_deb_usbd(&cardp->udev->dev,
702 lbtf_deb_usbd(&cardp->udev->dev,
709 if_usb_submit_rx_urb(cardp);
726 struct if_usb_card *cardp = priv->card;
729 lbtf_deb_usbd(&cardp->udev->dev, "*** type = %u\n", type);
730 lbtf_deb_usbd(&cardp->udev->dev, "size after = %d\n", nb);
733 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_REQUEST);
735 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_DATA);
739 memcpy((cardp->ep_out_buf + MESSAGE_HEADER_LEN), payload, nb);
741 return usb_tx_block(cardp, cardp->ep_out_buf, nb + MESSAGE_HEADER_LEN,
752 static int if_usb_issue_boot_command(struct if_usb_card *cardp, int ivalue)
754 struct bootcmd *bootcmd = cardp->ep_out_buf;
762 usb_tx_block(cardp, cardp->ep_out_buf, sizeof(*bootcmd), 0);
817 static int if_usb_prog_firmware(struct if_usb_card *cardp)
826 ret = request_firmware(&cardp->fw, lbtf_fw_name, &cardp->udev->dev);
835 if (check_fwfile_format(cardp->fw->data, cardp->fw->size))
839 if (if_usb_submit_rx_urb_fwload(cardp) < 0) {
840 lbtf_deb_usbd(&cardp->udev->dev, "URB submission is failed\n");
845 cardp->bootcmdresp = 0;
850 if_usb_issue_boot_command(cardp, BOOT_CMD_FW_BY_USB);
855 } while (cardp->bootcmdresp == 0 && j < 10);
856 } while (cardp->bootcmdresp == 0 && i < 5);
858 if (cardp->bootcmdresp <= 0) {
860 if_usb_reset_device(cardp);
868 cardp->totalbytes = 0;
869 cardp->fwlastblksent = 0;
870 cardp->CRC_OK = 1;
871 cardp->fwdnldover = 0;
872 cardp->fwseqnum = -1;
873 cardp->totalbytes = 0;
874 cardp->fwfinalblk = 0;
877 if_usb_send_fw_pkt(cardp);
880 wait_event_interruptible(cardp->fw_wq, cardp->priv->surpriseremoved ||
881 cardp->fwdnldover);
883 del_timer_sync(&cardp->fw_timeout);
884 usb_kill_urb(cardp->rx_urb);
886 if (!cardp->fwdnldover) {
889 if_usb_reset_device(cardp);
898 cardp->priv->fw_ready = 1;
901 release_firmware(cardp->fw);
902 cardp->fw = NULL;
904 if_usb_setup_firmware(cardp->priv);