linux/drivers/net/ethernet/myricom/myri10ge/myri10ge_mcp_gen_header.h
<<
>>
Prefs
   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
  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 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
  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