Commit | Line | Data |
---|---|---|
10078321 HS |
1 | #ifndef _LBS_IF_USB_H |
2 | #define _LBS_IF_USB_H | |
435a1acb | 3 | |
4f82f5c8 DW |
4 | #include <linux/wait.h> |
5 | #include <linux/timer.h> | |
6 | ||
876c9d3a MT |
7 | /** |
8 | * This file contains definition for USB interface. | |
9 | */ | |
10 | #define CMD_TYPE_REQUEST 0xF00DFACE | |
11 | #define CMD_TYPE_DATA 0xBEADC0DE | |
12 | #define CMD_TYPE_INDICATION 0xBEEFFACE | |
13 | ||
14 | #define IPFIELD_ALIGN_OFFSET 2 | |
15 | ||
876c9d3a MT |
16 | #define BOOT_CMD_FW_BY_USB 0x01 |
17 | #define BOOT_CMD_FW_IN_EEPROM 0x02 | |
18 | #define BOOT_CMD_UPDATE_BOOT2 0x03 | |
19 | #define BOOT_CMD_UPDATE_FW 0x04 | |
20 | #define BOOT_CMD_MAGIC_NUMBER 0x4C56524D /* M=>0x4D,R=>0x52,V=>0x56,L=>0x4C */ | |
21 | ||
22 | struct bootcmdstr | |
23 | { | |
981f187b | 24 | __le32 u32magicnumber; |
876c9d3a MT |
25 | u8 u8cmd_tag; |
26 | u8 au8dumy[11]; | |
27 | }; | |
28 | ||
29 | #define BOOT_CMD_RESP_OK 0x0001 | |
30 | #define BOOT_CMD_RESP_FAIL 0x0000 | |
31 | ||
32 | struct bootcmdrespStr | |
33 | { | |
981f187b | 34 | __le32 u32magicnumber; |
876c9d3a MT |
35 | u8 u8cmd_tag; |
36 | u8 u8result; | |
37 | u8 au8dumy[2]; | |
38 | }; | |
876c9d3a MT |
39 | |
40 | /* read callback private data */ | |
41 | struct read_cb_info { | |
954ee164 | 42 | struct usb_card_rec *cardp; |
876c9d3a MT |
43 | struct sk_buff *skb; |
44 | }; | |
45 | ||
46 | /** USB card description structure*/ | |
47 | struct usb_card_rec { | |
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 | ||
954ee164 | 61 | const struct firmware *fw; |
4f82f5c8 DW |
62 | struct timer_list fw_timeout; |
63 | wait_queue_head_t fw_wq; | |
876c9d3a MT |
64 | u8 CRC_OK; |
65 | u32 fwseqnum; | |
66 | u32 lastseqnum; | |
67 | u32 totalbytes; | |
68 | u32 fwlastblksent; | |
69 | u8 fwdnldover; | |
70 | u8 fwfinalblk; | |
954ee164 | 71 | u8 surprise_removed; |
876c9d3a MT |
72 | |
73 | u32 usb_event_cause; | |
74 | u8 usb_int_cause; | |
75 | ||
76 | u8 rx_urb_recall; | |
77 | ||
6d35fdfc | 78 | s8 bootcmdresp; |
876c9d3a MT |
79 | }; |
80 | ||
81 | /** fwheader */ | |
82 | struct fwheader { | |
981f187b DW |
83 | __le32 dnldcmd; |
84 | __le32 baseaddr; | |
85 | __le32 datalength; | |
86 | __le32 CRC; | |
876c9d3a MT |
87 | }; |
88 | ||
89 | #define FW_MAX_DATA_BLK_SIZE 600 | |
90 | /** FWData */ | |
91 | struct FWData { | |
92 | struct fwheader fwheader; | |
981f187b | 93 | __le32 seqnum; |
876c9d3a MT |
94 | u8 data[FW_MAX_DATA_BLK_SIZE]; |
95 | }; | |
96 | ||
97 | /** fwsyncheader */ | |
98 | struct fwsyncheader { | |
981f187b DW |
99 | __le32 cmd; |
100 | __le32 seqnum; | |
876c9d3a MT |
101 | }; |
102 | ||
103 | #define FW_HAS_DATA_TO_RECV 0x00000001 | |
104 | #define FW_HAS_LAST_BLOCK 0x00000004 | |
105 | ||
106 | #define FW_DATA_XMIT_SIZE \ | |
bb793e2b | 107 | sizeof(struct fwheader) + le32_to_cpu(fwdata->fwheader.datalength) + sizeof(u32) |
876c9d3a | 108 | |
435a1acb | 109 | #endif |