1
2
3
4
5
6
7#ifndef __ECORE_HSI_INIT_TOOL__
8#define __ECORE_HSI_INIT_TOOL__
9
10
11
12
13
14#define GRC_ADDR_BITS 23
15#define MAX_GRC_ADDR ((1 << GRC_ADDR_BITS) - 1)
16
17
18#define ANY_PHASE_ID 0xffff
19
20
21#define MAX_ZIPPED_SIZE 8192
22
23enum chip_ids {
24 CHIP_BB,
25 CHIP_K2,
26 MAX_CHIP_IDS
27};
28
29
30
31
32
33struct bin_buffer_hdr {
34
35 u32 offset;
36 u32 length ;
37};
38
39
40
41
42
43enum bin_init_buffer_type {
44 BIN_BUF_INIT_FW_VER_INFO ,
45 BIN_BUF_INIT_CMD ,
46 BIN_BUF_INIT_VAL ,
47 BIN_BUF_INIT_MODE_TREE ,
48 BIN_BUF_INIT_IRO ,
49 BIN_BUF_INIT_OVERLAYS ,
50 MAX_BIN_INIT_BUFFER_TYPE
51};
52
53
54
55
56
57struct fw_overlay_buf_hdr {
58 u32 data;
59#define FW_OVERLAY_BUF_HDR_STORM_ID_MASK 0xFF
60#define FW_OVERLAY_BUF_HDR_STORM_ID_SHIFT 0
61
62#define FW_OVERLAY_BUF_HDR_BUF_SIZE_MASK 0xFFFFFF
63#define FW_OVERLAY_BUF_HDR_BUF_SIZE_SHIFT 8
64};
65
66
67
68
69
70struct init_array_raw_hdr {
71 u32 data;
72
73#define INIT_ARRAY_RAW_HDR_TYPE_MASK 0xF
74#define INIT_ARRAY_RAW_HDR_TYPE_SHIFT 0
75
76#define INIT_ARRAY_RAW_HDR_PARAMS_MASK 0xFFFFFFF
77#define INIT_ARRAY_RAW_HDR_PARAMS_SHIFT 4
78};
79
80
81
82
83struct init_array_standard_hdr {
84 u32 data;
85
86#define INIT_ARRAY_STANDARD_HDR_TYPE_MASK 0xF
87#define INIT_ARRAY_STANDARD_HDR_TYPE_SHIFT 0
88
89#define INIT_ARRAY_STANDARD_HDR_SIZE_MASK 0xFFFFFFF
90#define INIT_ARRAY_STANDARD_HDR_SIZE_SHIFT 4
91};
92
93
94
95
96struct init_array_zipped_hdr {
97 u32 data;
98
99#define INIT_ARRAY_ZIPPED_HDR_TYPE_MASK 0xF
100#define INIT_ARRAY_ZIPPED_HDR_TYPE_SHIFT 0
101
102#define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_MASK 0xFFFFFFF
103#define INIT_ARRAY_ZIPPED_HDR_ZIPPED_SIZE_SHIFT 4
104};
105
106
107
108
109struct init_array_pattern_hdr {
110 u32 data;
111
112#define INIT_ARRAY_PATTERN_HDR_TYPE_MASK 0xF
113#define INIT_ARRAY_PATTERN_HDR_TYPE_SHIFT 0
114
115#define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_MASK 0xF
116#define INIT_ARRAY_PATTERN_HDR_PATTERN_SIZE_SHIFT 4
117
118#define INIT_ARRAY_PATTERN_HDR_REPETITIONS_MASK 0xFFFFFF
119#define INIT_ARRAY_PATTERN_HDR_REPETITIONS_SHIFT 8
120};
121
122
123
124
125union init_array_hdr {
126 struct init_array_raw_hdr raw ;
127
128 struct init_array_standard_hdr standard;
129 struct init_array_zipped_hdr zipped ;
130 struct init_array_pattern_hdr pattern ;
131};
132
133
134enum dbg_bus_clients {
135 DBG_BUS_CLIENT_RBCN,
136 DBG_BUS_CLIENT_RBCP,
137 DBG_BUS_CLIENT_RBCR,
138 DBG_BUS_CLIENT_RBCT,
139 DBG_BUS_CLIENT_RBCU,
140 DBG_BUS_CLIENT_RBCF,
141 DBG_BUS_CLIENT_RBCX,
142 DBG_BUS_CLIENT_RBCS,
143 DBG_BUS_CLIENT_RBCH,
144 DBG_BUS_CLIENT_RBCZ,
145 DBG_BUS_CLIENT_OTHER_ENGINE,
146 DBG_BUS_CLIENT_TIMESTAMP,
147 DBG_BUS_CLIENT_CPU,
148 DBG_BUS_CLIENT_RBCY,
149 DBG_BUS_CLIENT_RBCQ,
150 DBG_BUS_CLIENT_RBCM,
151 DBG_BUS_CLIENT_RBCB,
152 DBG_BUS_CLIENT_RBCW,
153 DBG_BUS_CLIENT_RBCV,
154 MAX_DBG_BUS_CLIENTS
155};
156
157
158enum init_modes {
159 MODE_BB_A0_DEPRECATED,
160 MODE_BB,
161 MODE_K2,
162 MODE_ASIC,
163 MODE_EMUL_REDUCED,
164 MODE_EMUL_FULL,
165 MODE_FPGA,
166 MODE_CHIPSIM,
167 MODE_SF,
168 MODE_MF_SD,
169 MODE_MF_SI,
170 MODE_PORTS_PER_ENG_1,
171 MODE_PORTS_PER_ENG_2,
172 MODE_PORTS_PER_ENG_4,
173 MODE_100G,
174 MODE_SKIP_PRAM_INIT,
175 MODE_EMUL_MAC,
176 MAX_INIT_MODES
177};
178
179
180enum init_phases {
181 PHASE_ENGINE,
182 PHASE_PORT,
183 PHASE_PF,
184 PHASE_VF,
185 PHASE_QM_PF,
186 MAX_INIT_PHASES
187};
188
189
190enum init_split_types {
191 SPLIT_TYPE_NONE,
192 SPLIT_TYPE_PORT,
193 SPLIT_TYPE_PF,
194 SPLIT_TYPE_PORT_PF,
195 SPLIT_TYPE_VF,
196 MAX_INIT_SPLIT_TYPES
197};
198
199
200
201
202
203enum init_array_types {
204 INIT_ARR_STANDARD ,
205 INIT_ARR_ZIPPED ,
206 INIT_ARR_PATTERN ,
207 MAX_INIT_ARRAY_TYPES
208};
209
210
211
212
213
214
215struct init_callback_op {
216 u32 op_data;
217
218#define INIT_CALLBACK_OP_OP_MASK 0xF
219#define INIT_CALLBACK_OP_OP_SHIFT 0
220#define INIT_CALLBACK_OP_RESERVED_MASK 0xFFFFFFF
221#define INIT_CALLBACK_OP_RESERVED_SHIFT 4
222 u16 callback_id ;
223 u16 block_id ;
224};
225
226
227
228
229
230struct init_delay_op {
231 u32 op_data;
232
233#define INIT_DELAY_OP_OP_MASK 0xF
234#define INIT_DELAY_OP_OP_SHIFT 0
235#define INIT_DELAY_OP_RESERVED_MASK 0xFFFFFFF
236#define INIT_DELAY_OP_RESERVED_SHIFT 4
237 __le32 delay ;
238};
239
240
241
242
243
244struct init_if_mode_op {
245 u32 op_data;
246
247#define INIT_IF_MODE_OP_OP_MASK 0xF
248#define INIT_IF_MODE_OP_OP_SHIFT 0
249#define INIT_IF_MODE_OP_RESERVED1_MASK 0xFFF
250#define INIT_IF_MODE_OP_RESERVED1_SHIFT 4
251
252#define INIT_IF_MODE_OP_CMD_OFFSET_MASK 0xFFFF
253#define INIT_IF_MODE_OP_CMD_OFFSET_SHIFT 16
254 u16 reserved2;
255 u16 modes_buf_offset ;
256};
257
258
259
260
261
262struct init_if_phase_op {
263 u32 op_data;
264
265#define INIT_IF_PHASE_OP_OP_MASK 0xF
266#define INIT_IF_PHASE_OP_OP_SHIFT 0
267
268#define INIT_IF_PHASE_OP_DMAE_ENABLE_MASK 0x1
269#define INIT_IF_PHASE_OP_DMAE_ENABLE_SHIFT 4
270#define INIT_IF_PHASE_OP_RESERVED1_MASK 0x7FF
271#define INIT_IF_PHASE_OP_RESERVED1_SHIFT 5
272
273#define INIT_IF_PHASE_OP_CMD_OFFSET_MASK 0xFFFF
274#define INIT_IF_PHASE_OP_CMD_OFFSET_SHIFT 16
275 u32 phase_data;
276#define INIT_IF_PHASE_OP_PHASE_MASK 0xFF
277#define INIT_IF_PHASE_OP_PHASE_SHIFT 0
278#define INIT_IF_PHASE_OP_RESERVED2_MASK 0xFF
279#define INIT_IF_PHASE_OP_RESERVED2_SHIFT 8
280#define INIT_IF_PHASE_OP_PHASE_ID_MASK 0xFFFF
281#define INIT_IF_PHASE_OP_PHASE_ID_SHIFT 16
282};
283
284
285
286
287
288enum init_mode_ops {
289 INIT_MODE_OP_NOT ,
290 INIT_MODE_OP_OR ,
291 INIT_MODE_OP_AND ,
292 MAX_INIT_MODE_OPS
293};
294
295
296
297
298
299struct init_raw_op {
300 u32 op_data;
301
302#define INIT_RAW_OP_OP_MASK 0xF
303#define INIT_RAW_OP_OP_SHIFT 0
304#define INIT_RAW_OP_PARAM1_MASK 0xFFFFFFF
305#define INIT_RAW_OP_PARAM1_SHIFT 4
306 u32 param2 ;
307};
308
309
310
311
312struct init_op_array_params {
313 u16 size ;
314 u16 offset ;
315};
316
317
318
319
320union init_write_args {
321
322 u32 inline_val;
323
324 u32 zeros_count;
325
326 u32 array_offset;
327
328 struct init_op_array_params runtime;
329};
330
331
332
333
334struct init_write_op {
335 u32 data;
336
337#define INIT_WRITE_OP_OP_MASK 0xF
338#define INIT_WRITE_OP_OP_SHIFT 0
339
340#define INIT_WRITE_OP_SOURCE_MASK 0x7
341#define INIT_WRITE_OP_SOURCE_SHIFT 4
342#define INIT_WRITE_OP_RESERVED_MASK 0x1
343#define INIT_WRITE_OP_RESERVED_SHIFT 7
344
345#define INIT_WRITE_OP_WIDE_BUS_MASK 0x1
346#define INIT_WRITE_OP_WIDE_BUS_SHIFT 8
347
348#define INIT_WRITE_OP_ADDRESS_MASK 0x7FFFFF
349#define INIT_WRITE_OP_ADDRESS_SHIFT 9
350 union init_write_args args ;
351};
352
353
354
355
356struct init_read_op {
357 u32 op_data;
358
359#define INIT_READ_OP_OP_MASK 0xF
360#define INIT_READ_OP_OP_SHIFT 0
361
362#define INIT_READ_OP_POLL_TYPE_MASK 0xF
363#define INIT_READ_OP_POLL_TYPE_SHIFT 4
364#define INIT_READ_OP_RESERVED_MASK 0x1
365#define INIT_READ_OP_RESERVED_SHIFT 8
366
367#define INIT_READ_OP_ADDRESS_MASK 0x7FFFFF
368#define INIT_READ_OP_ADDRESS_SHIFT 9
369
370 u32 expected_val;
371};
372
373
374
375
376union init_op {
377 struct init_raw_op raw ;
378 struct init_write_op write ;
379 struct init_read_op read ;
380 struct init_if_mode_op if_mode ;
381 struct init_if_phase_op if_phase ;
382 struct init_callback_op callback ;
383 struct init_delay_op delay ;
384};
385
386
387
388
389
390
391enum init_op_types {
392 INIT_OP_READ ,
393 INIT_OP_WRITE ,
394
395 INIT_OP_IF_MODE,
396
397 INIT_OP_IF_PHASE,
398 INIT_OP_DELAY ,
399 INIT_OP_CALLBACK ,
400 MAX_INIT_OP_TYPES
401};
402
403
404
405
406
407enum init_poll_types {
408 INIT_POLL_NONE ,
409 INIT_POLL_EQ ,
410 INIT_POLL_OR ,
411 INIT_POLL_AND ,
412 MAX_INIT_POLL_TYPES
413};
414
415
416
417
418
419
420
421enum init_source_types {
422 INIT_SRC_INLINE ,
423 INIT_SRC_ZEROS ,
424 INIT_SRC_ARRAY ,
425 INIT_SRC_RUNTIME ,
426 MAX_INIT_SOURCE_TYPES
427};
428
429
430
431
432
433
434
435struct iro {
436 u32 base ;
437 u16 m1 ;
438 u16 m2 ;
439 u16 m3 ;
440 u16 size ;
441};
442
443#endif
444