📄 myri10ge_mcp_gen_header.h
字号:
#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; __be32 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__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -