Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-for-linus
[linux-2.6] / drivers / net / myri10ge / myri10ge_mcp_gen_header.h
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
13 struct mcp_gen_header {
14         /* the first 4 fields are filled at compile time */
15         unsigned header_length;
16         __be32 mcp_type;
17         char version[128];
18         unsigned mcp_private;   /* pointer to mcp-type specific structure */
19
20         /* filled by the MCP at run-time */
21         unsigned sram_size;
22         unsigned string_specs;  /* either the original STRING_SPECS or a superset */
23         unsigned string_specs_len;
24
25         /* Fields above this comment are guaranteed to be present.
26          *
27          * Fields below this comment are extensions added in later versions
28          * of this struct, drivers should compare the header_length against
29          * offsetof(field) to check wether a given MCP implements them.
30          *
31          * Never remove any field.  Keep everything naturally align.
32          */
33
34         /* Specifies if the running mcp is mcp0, 1, or 2. */
35         unsigned char mcp_index;
36         unsigned char disable_rabbit;
37         unsigned char unaligned_tlp;
38         unsigned char pcie_link_algo;
39         unsigned counters_addr;
40         unsigned copy_block_info;       /* for small mcps loaded with "lload -d" */
41         unsigned short handoff_id_major;        /* must be equal */
42         unsigned short handoff_id_caps; /* bitfield: new mcp must have superset */
43         unsigned msix_table_addr;       /* start address of msix table in firmware */
44         unsigned bss_addr;      /* start of bss */
45         unsigned features;
46         /* 8 */
47 };
48
49 #endif                          /* __MYRI10GE_MCP_GEN_HEADER_H__ */