Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #ifndef __MYRI10GE_MCP_GEN_HEADER_H__
0003 #define __MYRI10GE_MCP_GEN_HEADER_H__
0004 
0005 
0006 #define MCP_HEADER_PTR_OFFSET  0x3c
0007 
0008 #define MCP_TYPE_MX 0x4d582020  /* "MX  " */
0009 #define MCP_TYPE_PCIE 0x70636965    /* "PCIE" pcie-only MCP */
0010 #define MCP_TYPE_ETH 0x45544820 /* "ETH " */
0011 #define MCP_TYPE_MCP0 0x4d435030    /* "MCP0" */
0012 #define MCP_TYPE_DFLT 0x20202020    /* "    " */
0013 #define MCP_TYPE_ETHZ 0x4554485a    /* "ETHZ" */
0014 
0015 struct mcp_gen_header {
0016     /* the first 4 fields are filled at compile time */
0017     unsigned header_length;
0018     __be32 mcp_type;
0019     char version[128];
0020     unsigned mcp_private;   /* pointer to mcp-type specific structure */
0021 
0022     /* filled by the MCP at run-time */
0023     unsigned sram_size;
0024     unsigned string_specs;  /* either the original STRING_SPECS or a superset */
0025     unsigned string_specs_len;
0026 
0027     /* Fields above this comment are guaranteed to be present.
0028      *
0029      * Fields below this comment are extensions added in later versions
0030      * of this struct, drivers should compare the header_length against
0031      * offsetof(field) to check whether a given MCP implements them.
0032      *
0033      * Never remove any field.  Keep everything naturally align.
0034      */
0035 
0036     /* Specifies if the running mcp is mcp0, 1, or 2. */
0037     unsigned char mcp_index;
0038     unsigned char disable_rabbit;
0039     unsigned char unaligned_tlp;
0040     unsigned char pcie_link_algo;
0041     unsigned counters_addr;
0042     unsigned copy_block_info;   /* for small mcps loaded with "lload -d" */
0043     unsigned short handoff_id_major;    /* must be equal */
0044     unsigned short handoff_id_caps; /* bitfield: new mcp must have superset */
0045     unsigned msix_table_addr;   /* start address of msix table in firmware */
0046     unsigned bss_addr;  /* start of bss */
0047     unsigned features;
0048     unsigned ee_hdr_addr;
0049     unsigned led_pattern;
0050     unsigned led_pattern_dflt;
0051     /* 8 */
0052 };
0053 
0054 struct zmcp_info {
0055     unsigned info_len;
0056     unsigned zmcp_addr;
0057     unsigned zmcp_len;
0058     unsigned mcp_edata;
0059 };
0060 
0061 #endif              /* __MYRI10GE_MCP_GEN_HEADER_H__ */