xref: /linux/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp_gen_header.h (revision ca55b2fef3a9373fcfc30f82fd26bc7fccbda732)
1 #ifndef __MYRI10GE_MCP_GEN_HEADER_H__
2 #define __MYRI10GE_MCP_GEN_HEADER_H__
3 
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" */
11 #define MCP_TYPE_DFLT 0x20202020	/* "    " */
12 #define MCP_TYPE_ETHZ 0x4554485a	/* "ETHZ" */
13 
14 struct mcp_gen_header {
15 	/* the first 4 fields are filled at compile time */
16 	unsigned header_length;
17 	__be32 mcp_type;
18 	char version[128];
19 	unsigned mcp_private;	/* pointer to mcp-type specific structure */
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.
27 	 *
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 whether a given MCP implements them.
31 	 *
32 	 * Never remove any field.  Keep everything naturally align.
33 	 */
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;
39 	unsigned char pcie_link_algo;
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 */
45 	unsigned bss_addr;	/* start of bss */
46 	unsigned features;
47 	unsigned ee_hdr_addr;
48 	unsigned led_pattern;
49 	unsigned led_pattern_dflt;
50 	/* 8 */
51 };
52 
53 struct zmcp_info {
54 	unsigned info_len;
55 	unsigned zmcp_addr;
56 	unsigned zmcp_len;
57 	unsigned mcp_edata;
58 };
59 
60 #endif				/* __MYRI10GE_MCP_GEN_HEADER_H__ */
61