diff options
author | Jens Muecke <jens@nons.de> | 2007-12-15 19:59:21 +0000 |
---|---|---|
committer | Jens Muecke <jens@nons.de> | 2007-12-15 19:59:21 +0000 |
commit | 7eeb4e6f7f10c17c889abe4b905a909bb9f58af0 (patch) | |
tree | d2cd4d28e2b5c18464c71f4a9492a4eccc85b842 /package/libertas/src/if_usb.h | |
parent | b03f211098f218b9e09d93a0056aec27a7a1e452 (diff) | |
download | upstream-7eeb4e6f7f10c17c889abe4b905a909bb9f58af0.tar.gz upstream-7eeb4e6f7f10c17c889abe4b905a909bb9f58af0.tar.bz2 upstream-7eeb4e6f7f10c17c889abe4b905a909bb9f58af0.zip |
* adding network config for olpc * adding libertas * config issue * quiet mode for bootloader
SVN-Revision: 9768
Diffstat (limited to 'package/libertas/src/if_usb.h')
-rw-r--r-- | package/libertas/src/if_usb.h | 108 |
1 files changed, 108 insertions, 0 deletions
diff --git a/package/libertas/src/if_usb.h b/package/libertas/src/if_usb.h new file mode 100644 index 0000000000..668410f820 --- /dev/null +++ b/package/libertas/src/if_usb.h @@ -0,0 +1,108 @@ +#ifndef _LBS_IF_USB_H +#define _LBS_IF_USB_H + +#include <linux/wait.h> +#include <linux/timer.h> + +struct lbs_private; + +/** + * 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 usb_device *udev; + struct urb *rx_urb, *tx_urb; + struct lbs_private *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; + struct timer_list fw_timeout; + wait_queue_head_t fw_wq; + 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; + + s8 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 |