1#ifndef _LIBERTAS_IF_USB_H 2#define _LIBERTAS_IF_USB_H 3 4#include <linux/list.h> 5 6/** 7 * This file contains definition for USB interface. 8 */ 9#define CMD_TYPE_REQUEST 0xF00DFACE 10#define CMD_TYPE_DATA 0xBEADC0DE 11#define CMD_TYPE_INDICATION 0xBEEFFACE 12 13#define IPFIELD_ALIGN_OFFSET 2 14 15#define BOOT_CMD_FW_BY_USB 0x01 16#define BOOT_CMD_FW_IN_EEPROM 0x02 17#define BOOT_CMD_UPDATE_BOOT2 0x03 18#define BOOT_CMD_UPDATE_FW 0x04 19#define BOOT_CMD_MAGIC_NUMBER 0x4C56524D /* M=>0x4D,R=>0x52,V=>0x56,L=>0x4C */ 20 21struct bootcmdstr 22{ 23 __le32 u32magicnumber; 24 u8 u8cmd_tag; 25 u8 au8dumy[11]; 26}; 27 28#define BOOT_CMD_RESP_OK 0x0001 29#define BOOT_CMD_RESP_FAIL 0x0000 30 31struct bootcmdrespStr 32{ 33 __le32 u32magicnumber; 34 u8 u8cmd_tag; 35 u8 u8result; 36 u8 au8dumy[2]; 37}; 38 39/* read callback private data */ 40struct read_cb_info { 41 wlan_private *priv; 42 struct sk_buff *skb; 43}; 44 45/** USB card description structure*/ 46struct usb_card_rec { 47 struct list_head list; 48 struct net_device *eth_dev; 49 struct usb_device *udev; 50 struct urb *rx_urb, *tx_urb; 51 void *priv; 52 struct read_cb_info rinfo; 53 54 int bulk_in_size; 55 u8 bulk_in_endpointAddr; 56 57 u8 *bulk_out_buffer; 58 int bulk_out_size; 59 u8 bulk_out_endpointAddr; 60 61 u8 CRC_OK; 62 u32 fwseqnum; 63 u32 lastseqnum; 64 u32 totalbytes; 65 u32 fwlastblksent; 66 u8 fwdnldover; 67 u8 fwfinalblk; 68 69 u32 usb_event_cause; 70 u8 usb_int_cause; 71 72 u8 rx_urb_recall; 73 74 u8 bootcmdresp; 75}; 76 77/** fwheader */ 78struct fwheader { 79 __le32 dnldcmd; 80 __le32 baseaddr; 81 __le32 datalength; 82 __le32 CRC; 83}; 84 85#define FW_MAX_DATA_BLK_SIZE 600 86/** FWData */ 87struct FWData { 88 struct fwheader fwheader; 89 __le32 seqnum; 90 u8 data[FW_MAX_DATA_BLK_SIZE]; 91}; 92 93/** fwsyncheader */ 94struct fwsyncheader { 95 __le32 cmd; 96 __le32 seqnum; 97}; 98 99#define FW_HAS_DATA_TO_RECV 0x00000001 100#define FW_HAS_LAST_BLOCK 0x00000004 101 102#define FW_DATA_XMIT_SIZE \ 103 sizeof(struct fwheader) + le32_to_cpu(fwdata->fwheader.datalength) + sizeof(u32) 104 105int usb_tx_block(wlan_private *priv, u8 *payload, u16 nb); 106void if_usb_free(struct usb_card_rec *cardp); 107int if_usb_issue_boot_command(wlan_private *priv, int ivalue); 108 109#endif 110