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