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