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