if_usb.h revision 4f3465f80564e07a5756b11365cd24f9d693a9bb
1/** 2 * This file contains definition for USB interface. 3 */ 4#define CMD_TYPE_REQUEST 0xF00DFACE 5#define CMD_TYPE_DATA 0xBEADC0DE 6#define CMD_TYPE_INDICATION 0xBEEFFACE 7 8#define IPFIELD_ALIGN_OFFSET 2 9 10#define USB8388_VID_1 0x1286 11#define USB8388_PID_1 0x2001 12#define USB8388_VID_2 0x05a3 13#define USB8388_PID_2 0x8388 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 u32 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 u32 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 net_device *eth_dev; 48 struct usb_device *udev; 49 struct urb *rx_urb, *tx_urb; 50 void *priv; 51 struct read_cb_info rinfo; 52 53 int bulk_in_size; 54 u8 bulk_in_endpointAddr; 55 56 u8 *bulk_out_buffer; 57 int bulk_out_size; 58 u8 bulk_out_endpointAddr; 59 60 u8 CRC_OK; 61 u32 fwseqnum; 62 u32 lastseqnum; 63 u32 totalbytes; 64 u32 fwlastblksent; 65 u8 fwdnldover; 66 u8 fwfinalblk; 67 68 u32 usb_event_cause; 69 u8 usb_int_cause; 70 71 u8 rx_urb_recall; 72 73 u8 bootcmdresp; 74}; 75 76/** fwheader */ 77struct fwheader { 78 u32 dnldcmd; 79 u32 baseaddr; 80 u32 datalength; 81 u32 CRC; 82}; 83 84#define FW_MAX_DATA_BLK_SIZE 600 85/** FWData */ 86struct FWData { 87 struct fwheader fwheader; 88 u32 seqnum; 89 u8 data[FW_MAX_DATA_BLK_SIZE]; 90}; 91 92/** fwsyncheader */ 93struct fwsyncheader { 94 u32 cmd; 95 u32 seqnum; 96}; 97 98#define FW_HAS_DATA_TO_RECV 0x00000001 99#define FW_HAS_LAST_BLOCK 0x00000004 100 101#define FW_DATA_XMIT_SIZE \ 102 sizeof(struct fwheader) + fwdata->fwheader.datalength + sizeof(u32) 103 104int usb_tx_block(wlan_private *priv, u8 *payload, u16 nb); 105void if_usb_free(struct usb_card_rec *cardp); 106int if_usb_issue_boot_command(wlan_private *priv, int ivalue); 107 108