62 lines · c
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 0x3c7 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 15struct 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 versions30 * of this struct, drivers should compare the header_length against31 * 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 54struct 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