12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #ifndef __MYRI10GE_MCP_GEN_HEADER_H__
- #define __MYRI10GE_MCP_GEN_HEADER_H__
- /* this file define a standard header used as a first entry point to
- * exchange information between firmware/driver and driver. The
- * header structure can be anywhere in the mcp. It will usually be in
- * the .data section, because some fields needs to be initialized at
- * compile time.
- * The 32bit word at offset MX_HEADER_PTR_OFFSET in the mcp must
- * contains the location of the header.
- *
- * Typically a MCP will start with the following:
- * .text
- * .space 52 ! to help catch MEMORY_INT errors
- * bt start ! jump to real code
- * nop
- * .long _gen_mcp_header
- *
- * The source will have a definition like:
- *
- * mcp_gen_header_t gen_mcp_header = {
- * .header_length = sizeof(mcp_gen_header_t),
- * .mcp_type = MCP_TYPE_XXX,
- * .version = "something $Id: mcp_gen_header.h,v 1.2 2006/05/13 10:04:35 bgoglin Exp $",
- * .mcp_globals = (unsigned)&Globals
- * };
- */
- #define MCP_HEADER_PTR_OFFSET 0x3c
- #define MCP_TYPE_MX 0x4d582020 /* "MX " */
- #define MCP_TYPE_PCIE 0x70636965 /* "PCIE" pcie-only MCP */
- #define MCP_TYPE_ETH 0x45544820 /* "ETH " */
- #define MCP_TYPE_MCP0 0x4d435030 /* "MCP0" */
- struct mcp_gen_header {
- /* the first 4 fields are filled at compile time */
- unsigned header_length;
- unsigned mcp_type;
- char version[128];
- unsigned mcp_globals; /* pointer to mcp-type specific structure */
- /* filled by the MCP at run-time */
- unsigned sram_size;
- unsigned string_specs; /* either the original STRING_SPECS or a superset */
- unsigned string_specs_len;
- /* Fields above this comment are guaranteed to be present.
- *
- * Fields below this comment are extensions added in later versions
- * of this struct, drivers should compare the header_length against
- * offsetof(field) to check wether a given MCP implements them.
- *
- * Never remove any field. Keep everything naturally align.
- */
- };
- #endif /* __MYRI10GE_MCP_GEN_HEADER_H__ */
|