• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6.36/drivers/net/wireless/libertas_tf/

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) {
161 setup_timer(&cardp->fw_timeout, if_usb_fw_timeo, (unsigned long)cardp);
162 init_waitqueue_head(&cardp->fw_wq);
164 cardp->udev = udev;
177 cardp->ep_in_size =
179 cardp->ep_in = usb_endpoint_num(endpoint);
181 lbtf_deb_usbd(&udev->dev, "in_endpoint = %d\n", cardp->ep_in);
182 lbtf_deb_usbd(&udev->dev, "Bulk in size is %d\n", cardp->ep_in_size);
184 cardp->ep_out_size =
186 cardp->ep_out = usb_endpoint_num(endpoint);
188 lbtf_deb_usbd(&udev->dev, "out_endpoint = %d\n", cardp->ep_out);
190 cardp->ep_out_size);
193 if (!cardp->ep_out_size || !cardp->ep_in_size) {
199 cardp->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
200 if (!cardp->rx_urb) {
205 cardp->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
206 if (!cardp->tx_urb) {
211 cardp->cmd_urb = usb_alloc_urb(0, GFP_KERNEL);
212 if (!cardp->cmd_urb) {
217 cardp->ep_out_buf = kmalloc(MRVDRV_ETH_TX_PACKET_BUFFER_SIZE,
219 if (!cardp->ep_out_buf) {
224 priv = lbtf_add_card(cardp, &udev->dev);
228 cardp->priv = priv;
233 cardp->boot2_version = udev->descriptor.bcdDevice;
236 usb_set_intfdata(intf, cardp);
241 if_usb_free(cardp);
254 struct if_usb_card *cardp = usb_get_intfdata(intf);
255 struct lbtf_private *priv = (struct lbtf_private *) cardp->priv;
259 if_usb_reset_device(cardp);
265 if_usb_free(cardp);
280 static int if_usb_send_fw_pkt(struct if_usb_card *cardp)
282 struct fwdata *fwdata = cardp->ep_out_buf;
283 u8 *firmware = (u8 *) cardp->fw->data;
289 if (!cardp->CRC_OK) {
290 cardp->totalbytes = cardp->fwlastblksent;
291 cardp->fwseqnum--;
294 lbtf_deb_usb2(&cardp->udev->dev, "totalbytes = %d\n",
295 cardp->totalbytes);
301 memcpy(&fwdata->hdr, &firmware[cardp->totalbytes],
304 cardp->fwlastblksent = cardp->totalbytes;
305 cardp->totalbytes += sizeof(struct fwheader);
307 memcpy(fwdata->data, &firmware[cardp->totalbytes],
310 lbtf_deb_usb2(&cardp->udev->dev, "Data length = %d\n",
313 fwdata->seqnum = cpu_to_le32(++cardp->fwseqnum);
314 cardp->totalbytes += le32_to_cpu(fwdata->hdr.datalength);
316 usb_tx_block(cardp, cardp->ep_out_buf, sizeof(struct fwdata) +
320 lbtf_deb_usb2(&cardp->udev->dev, "There are data to follow\n");
321 lbtf_deb_usb2(&cardp->udev->dev, "seqnum = %d totalbytes = %d\n",
322 cardp->fwseqnum, cardp->totalbytes);
324 lbtf_deb_usb2(&cardp->udev->dev, "Host has finished FW downloading\n");
325 lbtf_deb_usb2(&cardp->udev->dev, "Donwloading FW JUMP BLOCK\n");
330 cardp->fwfinalblk = 1;
333 lbtf_deb_usb2(&cardp->udev->dev, "Firmware download done; size %d\n",
334 cardp->totalbytes);
340 static int if_usb_reset_device(struct if_usb_card *cardp)
342 struct cmd_ds_802_11_reset *cmd = cardp->ep_out_buf + 4;
347 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_REQUEST);
354 usb_tx_block(cardp, cardp->ep_out_buf,
358 ret = usb_reset_device(cardp->udev);
377 static int usb_tx_block(struct if_usb_card *cardp, uint8_t *payload,
385 if (cardp->priv->surpriseremoved) {
386 lbtf_deb_usbd(&cardp->udev->dev, "Device removed\n");
391 urb = cardp->tx_urb;
393 urb = cardp->cmd_urb;
395 usb_fill_bulk_urb(urb, cardp->udev,
396 usb_sndbulkpipe(cardp->udev,
397 cardp->ep_out),
398 payload, nb, if_usb_write_bulk_callback, cardp);
403 lbtf_deb_usbd(&cardp->udev->dev, "usb_submit_urb failed: %d\n", ret);
407 lbtf_deb_usb2(&cardp->udev->dev, "usb_submit_urb success\n");
416 static int __if_usb_submit_rx_urb(struct if_usb_card *cardp,
431 cardp->rx_skb = skb;
434 usb_fill_bulk_urb(cardp->rx_urb, cardp->udev,
435 usb_rcvbulkpipe(cardp->udev, cardp->ep_in),
437 MRVDRV_ETH_RX_PACKET_BUFFER_SIZE, callbackfn, cardp);
439 cardp->rx_urb->transfer_flags |= URB_ZERO_PACKET;
441 lbtf_deb_usb2(&cardp->udev->dev, "Pointer for rx_urb %p\n", cardp->rx_urb);
442 ret = usb_submit_urb(cardp->rx_urb, GFP_ATOMIC);
444 lbtf_deb_usbd(&cardp->udev->dev, "Submit Rx URB failed: %d\n", ret);
446 cardp->rx_skb = NULL;
450 lbtf_deb_usb2(&cardp->udev->dev, "Submit Rx URB success\n");
456 static int if_usb_submit_rx_urb_fwload(struct if_usb_card *cardp)
458 return __if_usb_submit_rx_urb(cardp, &if_usb_receive_fwload);
461 static int if_usb_submit_rx_urb(struct if_usb_card *cardp)
463 return __if_usb_submit_rx_urb(cardp, &if_usb_receive);
468 struct if_usb_card *cardp = urb->context;
469 struct sk_buff *skb = cardp->rx_skb;
475 lbtf_deb_usbd(&cardp->udev->dev,
482 if (cardp->fwdnldover) {
489 wake_up(&cardp->fw_wq);
493 if_usb_submit_rx_urb_fwload(cardp);
499 if (cardp->bootcmdresp <= 0) {
502 if (le16_to_cpu(cardp->udev->descriptor.bcdDevice) < 0x3106) {
504 if_usb_submit_rx_urb_fwload(cardp);
505 cardp->bootcmdresp = 1;
507 lbtf_deb_usbd(&cardp->udev->dev,
516 if (!cardp->bootcmdresp)
518 cardp->bootcmdresp = -1;
530 cardp->bootcmdresp = 1;
531 lbtf_deb_usbd(&cardp->udev->dev,
536 if_usb_submit_rx_urb_fwload(cardp);
544 lbtf_deb_usbd(&cardp->udev->dev, "Failure to allocate syncfwheader\n");
551 lbtf_deb_usb2(&cardp->udev->dev, "FW received Blk with correct CRC\n");
552 lbtf_deb_usb2(&cardp->udev->dev, "FW received Blk seqnum = %d\n",
554 cardp->CRC_OK = 1;
556 lbtf_deb_usbd(&cardp->udev->dev, "FW received Blk with CRC error\n");
557 cardp->CRC_OK = 0;
563 mod_timer(&cardp->fw_timeout, jiffies + (HZ/5));
565 if (cardp->fwfinalblk) {
566 cardp->fwdnldover = 1;
570 if_usb_send_fw_pkt(cardp);
573 if_usb_submit_rx_urb_fwload(cardp);
583 struct if_usb_card *cardp,
588 lbtf_deb_usbd(&cardp->udev->dev, "Packet length is Invalid\n");
600 struct if_usb_card *cardp,
604 lbtf_deb_usbd(&cardp->udev->dev,
627 struct if_usb_card *cardp = urb->context;
628 struct sk_buff *skb = cardp->rx_skb;
629 struct lbtf_private *priv = cardp->priv;
639 lbtf_deb_usbd(&cardp->udev->dev, "RX URB failed: %d\n",
647 lbtf_deb_usbd(&cardp->udev->dev,
658 process_cmdtypedata(recvlength, skb, cardp, priv);
662 process_cmdrequest(recvlength, recvbuff, skb, cardp, priv);
669 lbtf_deb_usbd(&cardp->udev->dev, "**EVENT** 0x%X\n", event_cause);
684 lbtf_deb_usbd(&cardp->udev->dev,
691 lbtf_deb_usbd(&cardp->udev->dev,
698 if_usb_submit_rx_urb(cardp);
715 struct if_usb_card *cardp = priv->card;
718 lbtf_deb_usbd(&cardp->udev->dev, "*** type = %u\n", type);
719 lbtf_deb_usbd(&cardp->udev->dev, "size after = %d\n", nb);
722 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_REQUEST);
724 *(__le32 *)cardp->ep_out_buf = cpu_to_le32(CMD_TYPE_DATA);
728 memcpy((cardp->ep_out_buf + MESSAGE_HEADER_LEN), payload, nb);
730 return usb_tx_block(cardp, cardp->ep_out_buf, nb + MESSAGE_HEADER_LEN,
741 static int if_usb_issue_boot_command(struct if_usb_card *cardp, int ivalue)
743 struct bootcmd *bootcmd = cardp->ep_out_buf;
751 usb_tx_block(cardp, cardp->ep_out_buf, sizeof(*bootcmd), 0);
806 static int if_usb_prog_firmware(struct if_usb_card *cardp)
815 ret = request_firmware(&cardp->fw, lbtf_fw_name, &cardp->udev->dev);
824 if (check_fwfile_format(cardp->fw->data, cardp->fw->size))
828 if (if_usb_submit_rx_urb_fwload(cardp) < 0) {
829 lbtf_deb_usbd(&cardp->udev->dev, "URB submission is failed\n");
834 cardp->bootcmdresp = 0;
839 if_usb_issue_boot_command(cardp, BOOT_CMD_FW_BY_USB);
844 } while (cardp->bootcmdresp == 0 && j < 10);
845 } while (cardp->bootcmdresp == 0 && i < 5);
847 if (cardp->bootcmdresp <= 0) {
849 if_usb_reset_device(cardp);
857 cardp->totalbytes = 0;
858 cardp->fwlastblksent = 0;
859 cardp->CRC_OK = 1;
860 cardp->fwdnldover = 0;
861 cardp->fwseqnum = -1;
862 cardp->totalbytes = 0;
863 cardp->fwfinalblk = 0;
866 if_usb_send_fw_pkt(cardp);
869 wait_event_interruptible(cardp->fw_wq, cardp->priv->surpriseremoved ||
870 cardp->fwdnldover);
872 del_timer_sync(&cardp->fw_timeout);
873 usb_kill_urb(cardp->rx_urb);
875 if (!cardp->fwdnldover) {
878 if_usb_reset_device(cardp);
887 cardp->priv->fw_ready = 1;
890 release_firmware(cardp->fw);
891 cardp->fw = NULL;
893 if_usb_setup_firmware(cardp->priv);