| #ifndef _LIBERTAS_IF_USB_H |
| #define _LIBERTAS_IF_USB_H |
| |
| #include <linux/list.h> |
| |
| /** |
| * This file contains definition for USB interface. |
| */ |
| #define CMD_TYPE_REQUEST 0xF00DFACE |
| #define CMD_TYPE_DATA 0xBEADC0DE |
| #define CMD_TYPE_INDICATION 0xBEEFFACE |
| |
| #define IPFIELD_ALIGN_OFFSET 2 |
| |
| #define BOOT_CMD_FW_BY_USB 0x01 |
| #define BOOT_CMD_FW_IN_EEPROM 0x02 |
| #define BOOT_CMD_UPDATE_BOOT2 0x03 |
| #define BOOT_CMD_UPDATE_FW 0x04 |
| #define BOOT_CMD_MAGIC_NUMBER 0x4C56524D /* M=>0x4D,R=>0x52,V=>0x56,L=>0x4C */ |
| |
| struct bootcmdstr |
| { |
| __le32 u32magicnumber; |
| u8 u8cmd_tag; |
| u8 au8dumy[11]; |
| }; |
| |
| #define BOOT_CMD_RESP_OK 0x0001 |
| #define BOOT_CMD_RESP_FAIL 0x0000 |
| |
| struct bootcmdrespStr |
| { |
| __le32 u32magicnumber; |
| u8 u8cmd_tag; |
| u8 u8result; |
| u8 au8dumy[2]; |
| }; |
| |
| /* read callback private data */ |
| struct read_cb_info { |
| struct usb_card_rec *cardp; |
| struct sk_buff *skb; |
| }; |
| |
| /** USB card description structure*/ |
| struct usb_card_rec { |
| struct list_head list; |
| struct net_device *eth_dev; |
| struct usb_device *udev; |
| struct urb *rx_urb, *tx_urb; |
| void *priv; |
| struct read_cb_info rinfo; |
| |
| int bulk_in_size; |
| u8 bulk_in_endpointAddr; |
| |
| u8 *bulk_out_buffer; |
| int bulk_out_size; |
| u8 bulk_out_endpointAddr; |
| |
| const struct firmware *fw; |
| u8 CRC_OK; |
| u32 fwseqnum; |
| u32 lastseqnum; |
| u32 totalbytes; |
| u32 fwlastblksent; |
| u8 fwdnldover; |
| u8 fwfinalblk; |
| u8 surprise_removed; |
| |
| u32 usb_event_cause; |
| u8 usb_int_cause; |
| |
| u8 rx_urb_recall; |
| |
| u8 bootcmdresp; |
| }; |
| |
| /** fwheader */ |
| struct fwheader { |
| __le32 dnldcmd; |
| __le32 baseaddr; |
| __le32 datalength; |
| __le32 CRC; |
| }; |
| |
| #define FW_MAX_DATA_BLK_SIZE 600 |
| /** FWData */ |
| struct FWData { |
| struct fwheader fwheader; |
| __le32 seqnum; |
| u8 data[FW_MAX_DATA_BLK_SIZE]; |
| }; |
| |
| /** fwsyncheader */ |
| struct fwsyncheader { |
| __le32 cmd; |
| __le32 seqnum; |
| }; |
| |
| #define FW_HAS_DATA_TO_RECV 0x00000001 |
| #define FW_HAS_LAST_BLOCK 0x00000004 |
| |
| #define FW_DATA_XMIT_SIZE \ |
| sizeof(struct fwheader) + le32_to_cpu(fwdata->fwheader.datalength) + sizeof(u32) |
| |
| #endif |