Commit | Line | Data |
---|---|---|
0da34b6d BG |
1 | #ifndef __MYRI10GE_MCP_GEN_HEADER_H__ |
2 | #define __MYRI10GE_MCP_GEN_HEADER_H__ | |
3 | ||
0da34b6d BG |
4 | |
5 | #define MCP_HEADER_PTR_OFFSET 0x3c | |
6 | ||
7 | #define MCP_TYPE_MX 0x4d582020 /* "MX " */ | |
8 | #define MCP_TYPE_PCIE 0x70636965 /* "PCIE" pcie-only MCP */ | |
9 | #define MCP_TYPE_ETH 0x45544820 /* "ETH " */ | |
10 | #define MCP_TYPE_MCP0 0x4d435030 /* "MCP0" */ | |
0f7229dd | 11 | #define MCP_TYPE_DFLT 0x20202020 /* " " */ |
7f649269 | 12 | #define MCP_TYPE_ETHZ 0x4554485a /* "ETHZ" */ |
0da34b6d BG |
13 | |
14 | struct mcp_gen_header { | |
15 | /* the first 4 fields are filled at compile time */ | |
16 | unsigned header_length; | |
40f6cff5 | 17 | __be32 mcp_type; |
0da34b6d | 18 | char version[128]; |
0f7229dd | 19 | unsigned mcp_private; /* pointer to mcp-type specific structure */ |
0da34b6d BG |
20 | |
21 | /* filled by the MCP at run-time */ | |
22 | unsigned sram_size; | |
23 | unsigned string_specs; /* either the original STRING_SPECS or a superset */ | |
24 | unsigned string_specs_len; | |
25 | ||
26 | /* Fields above this comment are guaranteed to be present. | |
6ed14254 | 27 | * |
0da34b6d BG |
28 | * Fields below this comment are extensions added in later versions |
29 | * of this struct, drivers should compare the header_length against | |
30 | * offsetof(field) to check wether a given MCP implements them. | |
6ed14254 | 31 | * |
0da34b6d BG |
32 | * Never remove any field. Keep everything naturally align. |
33 | */ | |
0f7229dd BG |
34 | |
35 | /* Specifies if the running mcp is mcp0, 1, or 2. */ | |
36 | unsigned char mcp_index; | |
37 | unsigned char disable_rabbit; | |
38 | unsigned char unaligned_tlp; | |
6a4c4ad2 | 39 | unsigned char pcie_link_algo; |
0f7229dd BG |
40 | unsigned counters_addr; |
41 | unsigned copy_block_info; /* for small mcps loaded with "lload -d" */ | |
42 | unsigned short handoff_id_major; /* must be equal */ | |
43 | unsigned short handoff_id_caps; /* bitfield: new mcp must have superset */ | |
44 | unsigned msix_table_addr; /* start address of msix table in firmware */ | |
2c62ad7b | 45 | unsigned bss_addr; /* start of bss */ |
e92df282 | 46 | unsigned features; |
7f649269 | 47 | unsigned ee_hdr_addr; |
0f7229dd | 48 | /* 8 */ |
0da34b6d BG |
49 | }; |
50 | ||
7f649269 BG |
51 | struct zmcp_info { |
52 | unsigned info_len; | |
53 | unsigned zmcp_addr; | |
54 | unsigned zmcp_len; | |
55 | unsigned mcp_edata; | |
56 | }; | |
57 | ||
0da34b6d | 58 | #endif /* __MYRI10GE_MCP_GEN_HEADER_H__ */ |