• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * This header was generated from the Linux kernel headers by update_headers.py,
3  * to provide necessary information from kernel to userspace, such as constants,
4  * structures, and macros, and thus, contains no copyrightable information.
5  */
6 #ifndef __LINUX__WIMAX__I2400M_H__
7 #define __LINUX__WIMAX__I2400M_H__
8 #include <linux/types.h>
9 #include <linux/if_ether.h>
10 struct i2400m_bcf_hdr {
11 	__le32 module_type;
12 	__le32 header_len;
13 	__le32 header_version;
14 	__le32 module_id;
15 	__le32 module_vendor;
16 	__le32 date;
17 	__le32 size;
18 	__le32 key_size;
19 	__le32 modulus_size;
20 	__le32 exponent_size;
21 	__u8 reserved[88];
22 } __attribute__ ((packed));
23 enum i2400m_brh_opcode {
24 	I2400M_BRH_READ = 1,
25 	I2400M_BRH_WRITE = 2,
26 	I2400M_BRH_JUMP = 3,
27 	I2400M_BRH_SIGNED_JUMP = 8,
28 	I2400M_BRH_HASH_PAYLOAD_ONLY = 9,
29 };
30 enum i2400m_brh {
31 	I2400M_BRH_SIGNATURE = 0xcbbc0000,
32 	I2400M_BRH_SIGNATURE_MASK = 0xffff0000,
33 	I2400M_BRH_SIGNATURE_SHIFT = 16,
34 	I2400M_BRH_OPCODE_MASK = 0x0000000f,
35 	I2400M_BRH_RESPONSE_MASK = 0x000000f0,
36 	I2400M_BRH_RESPONSE_SHIFT = 4,
37 	I2400M_BRH_DIRECT_ACCESS = 0x00000400,
38 	I2400M_BRH_RESPONSE_REQUIRED = 0x00000200,
39 	I2400M_BRH_USE_CHECKSUM = 0x00000100,
40 };
41 struct i2400m_bootrom_header {
42 	__le32 command;
43 	__le32 target_addr;
44 	__le32 data_size;
45 	__le32 block_checksum;
46 	char payload[0];
47 } __attribute__ ((packed));
48 enum i2400m_pt {
49 	I2400M_PT_DATA = 0,
50 	I2400M_PT_CTRL,
51 	I2400M_PT_TRACE,
52 	I2400M_PT_RESET_WARM,
53 	I2400M_PT_RESET_COLD,
54 	I2400M_PT_EDATA,
55 	I2400M_PT_ILLEGAL
56 };
57 struct i2400m_pl_data_hdr {
58 	__le32 reserved;
59 } __attribute__((packed));
60 struct i2400m_pl_edata_hdr {
61 	__le32 reorder;
62 	__u8 cs;
63 	__u8 reserved[11];
64 } __attribute__((packed));
65 enum i2400m_cs {
66 	I2400M_CS_IPV4_0 = 0,
67 	I2400M_CS_IPV4 = 2,
68 };
69 enum i2400m_ro {
70 	I2400M_RO_NEEDED     = 0x01,
71 	I2400M_RO_TYPE       = 0x03,
72 	I2400M_RO_TYPE_SHIFT = 1,
73 	I2400M_RO_CIN        = 0x0f,
74 	I2400M_RO_CIN_SHIFT  = 4,
75 	I2400M_RO_FBN        = 0x07ff,
76 	I2400M_RO_FBN_SHIFT  = 8,
77 	I2400M_RO_SN         = 0x07ff,
78 	I2400M_RO_SN_SHIFT   = 21,
79 };
80 enum i2400m_ro_type {
81 	I2400M_RO_TYPE_RESET = 0,
82 	I2400M_RO_TYPE_PACKET,
83 	I2400M_RO_TYPE_WS,
84 	I2400M_RO_TYPE_PACKET_WS,
85 };
86 enum {
87 	I2400M_PL_ALIGN = 16,
88 	I2400M_PL_SIZE_MAX = 0x3EFF,
89 	I2400M_MAX_PLS_IN_MSG = 60,
90 
91 	I2400M_H2D_PREVIEW_BARKER = 0xcafe900d,
92 	I2400M_COLD_RESET_BARKER = 0xc01dc01d,
93 	I2400M_WARM_RESET_BARKER = 0x50f750f7,
94 	I2400M_NBOOT_BARKER = 0xdeadbeef,
95 	I2400M_SBOOT_BARKER = 0x0ff1c1a1,
96 	I2400M_SBOOT_BARKER_6050 = 0x80000001,
97 	I2400M_ACK_BARKER = 0xfeedbabe,
98 	I2400M_D2H_MSG_BARKER = 0xbeefbabe,
99 };
100 struct i2400m_pld {
101 	__le32 val;
102 } __attribute__ ((packed));
103 #define I2400M_PLD_SIZE_MASK 0x00003fff
104 #define I2400M_PLD_TYPE_SHIFT 16
105 #define I2400M_PLD_TYPE_MASK 0x000f0000
106 struct i2400m_msg_hdr {
107 	union {
108 		__le32 barker;
109 		__u32 size;
110 	};
111 	union {
112 		__le32 sequence;
113 		__u32 offset;
114 	};
115 	__le16 num_pls;
116 	__le16 rsv1;
117 	__le16 padding;
118 	__le16 rsv2;
119 	struct i2400m_pld pld[0];
120 } __attribute__ ((packed));
121 enum {
122 
123 	I2400M_L3L4_VERSION             = 0x0100,
124 };
125 enum i2400m_mt {
126 	I2400M_MT_RESERVED              = 0x0000,
127 	I2400M_MT_INVALID               = 0xffff,
128 	I2400M_MT_REPORT_MASK		= 0x8000,
129 	I2400M_MT_GET_SCAN_RESULT  	= 0x4202,
130 	I2400M_MT_SET_SCAN_PARAM   	= 0x4402,
131 	I2400M_MT_CMD_RF_CONTROL   	= 0x4602,
132 	I2400M_MT_CMD_SCAN         	= 0x4603,
133 	I2400M_MT_CMD_CONNECT      	= 0x4604,
134 	I2400M_MT_CMD_DISCONNECT   	= 0x4605,
135 	I2400M_MT_CMD_EXIT_IDLE   	= 0x4606,
136 	I2400M_MT_GET_LM_VERSION   	= 0x5201,
137 	I2400M_MT_GET_DEVICE_INFO  	= 0x5202,
138 	I2400M_MT_GET_LINK_STATUS  	= 0x5203,
139 	I2400M_MT_GET_STATISTICS   	= 0x5204,
140 	I2400M_MT_GET_STATE        	= 0x5205,
141 	I2400M_MT_GET_MEDIA_STATUS	= 0x5206,
142 	I2400M_MT_SET_INIT_CONFIG	= 0x5404,
143 	I2400M_MT_CMD_INIT	        = 0x5601,
144 	I2400M_MT_CMD_TERMINATE		= 0x5602,
145 	I2400M_MT_CMD_MODE_OF_OP	= 0x5603,
146 	I2400M_MT_CMD_RESET_DEVICE	= 0x5604,
147 	I2400M_MT_CMD_MONITOR_CONTROL   = 0x5605,
148 	I2400M_MT_CMD_ENTER_POWERSAVE   = 0x5606,
149 	I2400M_MT_GET_TLS_OPERATION_RESULT = 0x6201,
150 	I2400M_MT_SET_EAP_SUCCESS       = 0x6402,
151 	I2400M_MT_SET_EAP_FAIL          = 0x6403,
152 	I2400M_MT_SET_EAP_KEY          	= 0x6404,
153 	I2400M_MT_CMD_SEND_EAP_RESPONSE = 0x6602,
154 	I2400M_MT_REPORT_SCAN_RESULT    = 0xc002,
155 	I2400M_MT_REPORT_STATE		= 0xd002,
156 	I2400M_MT_REPORT_POWERSAVE_READY = 0xd005,
157 	I2400M_MT_REPORT_EAP_REQUEST    = 0xe002,
158 	I2400M_MT_REPORT_EAP_RESTART    = 0xe003,
159 	I2400M_MT_REPORT_ALT_ACCEPT    	= 0xe004,
160 	I2400M_MT_REPORT_KEY_REQUEST 	= 0xe005,
161 };
162 enum i2400m_ms {
163 	I2400M_MS_DONE_OK                  = 0,
164 	I2400M_MS_DONE_IN_PROGRESS         = 1,
165 	I2400M_MS_INVALID_OP               = 2,
166 	I2400M_MS_BAD_STATE                = 3,
167 	I2400M_MS_ILLEGAL_VALUE            = 4,
168 	I2400M_MS_MISSING_PARAMS           = 5,
169 	I2400M_MS_VERSION_ERROR            = 6,
170 	I2400M_MS_ACCESSIBILITY_ERROR      = 7,
171 	I2400M_MS_BUSY                     = 8,
172 	I2400M_MS_CORRUPTED_TLV            = 9,
173 	I2400M_MS_UNINITIALIZED            = 10,
174 	I2400M_MS_UNKNOWN_ERROR            = 11,
175 	I2400M_MS_PRODUCTION_ERROR         = 12,
176 	I2400M_MS_NO_RF                    = 13,
177 	I2400M_MS_NOT_READY_FOR_POWERSAVE  = 14,
178 	I2400M_MS_THERMAL_CRITICAL         = 15,
179 	I2400M_MS_MAX
180 };
181 enum i2400m_tlv {
182 	I2400M_TLV_L4_MESSAGE_VERSIONS = 129,
183 	I2400M_TLV_SYSTEM_STATE = 141,
184 	I2400M_TLV_MEDIA_STATUS = 161,
185 	I2400M_TLV_RF_OPERATION = 162,
186 	I2400M_TLV_RF_STATUS = 163,
187 	I2400M_TLV_DEVICE_RESET_TYPE = 132,
188 	I2400M_TLV_CONFIG_IDLE_PARAMETERS = 601,
189 	I2400M_TLV_CONFIG_IDLE_TIMEOUT = 611,
190 	I2400M_TLV_CONFIG_D2H_DATA_FORMAT = 614,
191 	I2400M_TLV_CONFIG_DL_HOST_REORDER = 615,
192 };
193 struct i2400m_tlv_hdr {
194 	__le16 type;
195 	__le16 length;
196 	__u8   pl[0];
197 } __attribute__((packed));
198 struct i2400m_l3l4_hdr {
199 	__le16 type;
200 	__le16 length;
201 	__le16 version;
202 	__le16 resv1;
203 	__le16 status;
204 	__le16 resv2;
205 	struct i2400m_tlv_hdr pl[0];
206 } __attribute__((packed));
207 enum i2400m_system_state {
208 	I2400M_SS_UNINITIALIZED = 1,
209 	I2400M_SS_INIT,
210 	I2400M_SS_READY,
211 	I2400M_SS_SCAN,
212 	I2400M_SS_STANDBY,
213 	I2400M_SS_CONNECTING,
214 	I2400M_SS_WIMAX_CONNECTED,
215 	I2400M_SS_DATA_PATH_CONNECTED,
216 	I2400M_SS_IDLE,
217 	I2400M_SS_DISCONNECTING,
218 	I2400M_SS_OUT_OF_ZONE,
219 	I2400M_SS_SLEEPACTIVE,
220 	I2400M_SS_PRODUCTION,
221 	I2400M_SS_CONFIG,
222 	I2400M_SS_RF_OFF,
223 	I2400M_SS_RF_SHUTDOWN,
224 	I2400M_SS_DEVICE_DISCONNECT,
225 	I2400M_SS_MAX,
226 };
227 struct i2400m_tlv_system_state {
228 	struct i2400m_tlv_hdr hdr;
229 	__le32 state;
230 } __attribute__((packed));
231 struct i2400m_tlv_l4_message_versions {
232 	struct i2400m_tlv_hdr hdr;
233 	__le16 major;
234 	__le16 minor;
235 	__le16 branch;
236 	__le16 reserved;
237 } __attribute__((packed));
238 struct i2400m_tlv_detailed_device_info {
239 	struct i2400m_tlv_hdr hdr;
240 	__u8 reserved1[400];
241 	__u8 mac_address[ETH_ALEN];
242 	__u8 reserved2[2];
243 } __attribute__((packed));
244 enum i2400m_rf_switch_status {
245 	I2400M_RF_SWITCH_ON = 1,
246 	I2400M_RF_SWITCH_OFF = 2,
247 };
248 struct i2400m_tlv_rf_switches_status {
249 	struct i2400m_tlv_hdr hdr;
250 	__u8 sw_rf_switch;
251 	__u8 hw_rf_switch;
252 	__u8 reserved[2];
253 } __attribute__((packed));
254 enum {
255 	i2400m_rf_operation_on = 1,
256 	i2400m_rf_operation_off = 2
257 };
258 struct i2400m_tlv_rf_operation {
259 	struct i2400m_tlv_hdr hdr;
260 	__le32 status;
261 } __attribute__((packed));
262 enum i2400m_tlv_reset_type {
263 	I2400M_RESET_TYPE_COLD = 1,
264 	I2400M_RESET_TYPE_WARM
265 };
266 struct i2400m_tlv_device_reset_type {
267 	struct i2400m_tlv_hdr hdr;
268 	__le32 reset_type;
269 } __attribute__((packed));
270 struct i2400m_tlv_config_idle_parameters {
271 	struct i2400m_tlv_hdr hdr;
272 	__le32 idle_timeout;
273 	__le32 idle_paging_interval;
274 } __attribute__((packed));
275 enum i2400m_media_status {
276 	I2400M_MEDIA_STATUS_LINK_UP = 1,
277 	I2400M_MEDIA_STATUS_LINK_DOWN,
278 	I2400M_MEDIA_STATUS_LINK_RENEW,
279 };
280 struct i2400m_tlv_media_status {
281 	struct i2400m_tlv_hdr hdr;
282 	__le32 media_status;
283 } __attribute__((packed));
284 struct i2400m_tlv_config_idle_timeout {
285 	struct i2400m_tlv_hdr hdr;
286 	__le32 timeout;
287 } __attribute__((packed));
288 struct i2400m_tlv_config_d2h_data_format {
289 	struct i2400m_tlv_hdr hdr;
290 	__u8 format;
291 	__u8 reserved[3];
292 } __attribute__((packed));
293 struct i2400m_tlv_config_dl_host_reorder {
294 	struct i2400m_tlv_hdr hdr;
295 	__u8 reorder;
296 	__u8 reserved[3];
297 } __attribute__((packed));
298 #endif
299