📄 klconfig.h
字号:
* That info will be part of HWGRAPH, which is an extension of the cfg_t * data structure. (ref IP27prom/cfg.h) It has to be extended to include * the IO part of the Network(TBD). * * The data structures below define the above concepts. *//* * Values for CPU types */#define KL_CPU_R4000 0x1 /* Standard R4000 */#define KL_CPU_TFP 0x2 /* TFP processor */#define KL_CPU_R10000 0x3 /* R10000 (T5) */#define KL_CPU_NONE (-1) /* no cpu present in slot *//* * IP27 BOARD classes */#define KLCLASS_MASK 0xf0#define KLCLASS_NONE 0x00#define KLCLASS_NODE 0x10 /* CPU, Memory and HUB board */#define KLCLASS_CPU KLCLASS_NODE#define KLCLASS_IO 0x20 /* BaseIO, 4 ch SCSI, ethernet, FDDI and the non-graphics widget boards */#define KLCLASS_ROUTER 0x30 /* Router board */#define KLCLASS_MIDPLANE 0x40 /* We need to treat this as a board so that we can record error info */#define KLCLASS_GFX 0x50 /* graphics boards */#define KLCLASS_PSEUDO_GFX 0x60 /* HDTV type cards that use a gfx * hw ifc to xtalk and are not gfx * class for sw purposes */#define KLCLASS_MAX 7 /* Bump this if a new CLASS is added */#define KLTYPE_MAX 10 /* Bump this if a new CLASS is added */#define KLCLASS_UNKNOWN 0xf0#define KLCLASS(_x) ((_x) & KLCLASS_MASK)/* * IP27 board types */#define KLTYPE_MASK 0x0f#define KLTYPE_NONE 0x00#define KLTYPE_EMPTY 0x00#define KLTYPE_WEIRDCPU (KLCLASS_CPU | 0x0)#define KLTYPE_IP27 (KLCLASS_CPU | 0x1) /* 2 CPUs(R10K) per board */#define KLTYPE_WEIRDIO (KLCLASS_IO | 0x0)#define KLTYPE_BASEIO (KLCLASS_IO | 0x1) /* IOC3, SuperIO, Bridge, SCSI */#define KLTYPE_IO6 KLTYPE_BASEIO /* Additional name */#define KLTYPE_4CHSCSI (KLCLASS_IO | 0x2)#define KLTYPE_MSCSI KLTYPE_4CHSCSI /* Additional name */#define KLTYPE_ETHERNET (KLCLASS_IO | 0x3)#define KLTYPE_MENET KLTYPE_ETHERNET /* Additional name */#define KLTYPE_FDDI (KLCLASS_IO | 0x4)#define KLTYPE_UNUSED (KLCLASS_IO | 0x5) /* XXX UNUSED */#define KLTYPE_HAROLD (KLCLASS_IO | 0x6) /* PCI SHOE BOX */#define KLTYPE_PCI KLTYPE_HAROLD#define KLTYPE_VME (KLCLASS_IO | 0x7) /* Any 3rd party VME card */#define KLTYPE_MIO (KLCLASS_IO | 0x8)#define KLTYPE_FC (KLCLASS_IO | 0x9)#define KLTYPE_LINC (KLCLASS_IO | 0xA)#define KLTYPE_TPU (KLCLASS_IO | 0xB) /* Tensor Processing Unit */#define KLTYPE_GSN_A (KLCLASS_IO | 0xC) /* Main GSN board */#define KLTYPE_GSN_B (KLCLASS_IO | 0xD) /* Auxiliary GSN board */#define KLTYPE_GFX (KLCLASS_GFX | 0x0) /* unknown graphics type */#define KLTYPE_GFX_KONA (KLCLASS_GFX | 0x1) /* KONA graphics on IP27 */#define KLTYPE_GFX_MGRA (KLCLASS_GFX | 0x3) /* MGRAS graphics on IP27 */#define KLTYPE_WEIRDROUTER (KLCLASS_ROUTER | 0x0)#define KLTYPE_ROUTER (KLCLASS_ROUTER | 0x1)#define KLTYPE_ROUTER2 KLTYPE_ROUTER /* Obsolete! */#define KLTYPE_NULL_ROUTER (KLCLASS_ROUTER | 0x2)#define KLTYPE_META_ROUTER (KLCLASS_ROUTER | 0x3)#define KLTYPE_WEIRDMIDPLANE (KLCLASS_MIDPLANE | 0x0)#define KLTYPE_MIDPLANE8 (KLCLASS_MIDPLANE | 0x1) /* 8 slot backplane */#define KLTYPE_MIDPLANE KLTYPE_MIDPLANE8#define KLTYPE_PBRICK_XBOW (KLCLASS_MIDPLANE | 0x2)#define KLTYPE_IOBRICK (KLCLASS_IOBRICK | 0x0)#define KLTYPE_IBRICK (KLCLASS_IOBRICK | 0x1)#define KLTYPE_PBRICK (KLCLASS_IOBRICK | 0x2)#define KLTYPE_XBRICK (KLCLASS_IOBRICK | 0x3)#define KLTYPE_PBRICK_BRIDGE KLTYPE_PBRICK/* The value of type should be more than 8 so that hinv prints * out the board name from the NIC string. For values less than * 8 the name of the board needs to be hard coded in a few places. * When bringup started nic names had not standardized and so we * had to hard code. (For people interested in history.) */#define KLTYPE_XTHD (KLCLASS_PSEUDO_GFX | 0x9)#define KLTYPE_UNKNOWN (KLCLASS_UNKNOWN | 0xf)#define KLTYPE(_x) ((_x) & KLTYPE_MASK)#define IS_MIO_PRESENT(l) ((l->brd_type == KLTYPE_BASEIO) && \ (l->brd_flags & SECOND_NIC_PRESENT))#define IS_MIO_IOC3(l,n) (IS_MIO_PRESENT(l) && (n > 2))/* * board structures */#define MAX_COMPTS_PER_BRD 24#define LOCAL_BOARD 1#define REMOTE_BOARD 2#define LBOARD_STRUCT_VERSION 2typedef struct lboard_s { klconf_off_t brd_next; /* Next BOARD */ unsigned char struct_type; /* type of structure, local or remote */ unsigned char brd_type; /* type+class */ unsigned char brd_sversion; /* version of this structure */ unsigned char brd_brevision; /* board revision */ unsigned char brd_promver; /* board prom version, if any */ unsigned char brd_flags; /* Enabled, Disabled etc */ unsigned char brd_slot; /* slot number */ unsigned short brd_debugsw; /* Debug switches */ moduleid_t brd_module; /* module to which it belongs */ partid_t brd_partition; /* Partition number */ unsigned short brd_diagval; /* diagnostic value */ unsigned short brd_diagparm; /* diagnostic parameter */ unsigned char brd_inventory; /* inventory history */ unsigned char brd_numcompts; /* Number of components */ nic_t brd_nic; /* Number in CAN */ nasid_t brd_nasid; /* passed parameter */ klconf_off_t brd_compts[MAX_COMPTS_PER_BRD]; /* pointers to COMPONENTS */ klconf_off_t brd_errinfo; /* Board's error information */ struct lboard_s *brd_parent; /* Logical parent for this brd */ vertex_hdl_t brd_graph_link; /* vertex hdl to connect extern compts */ confidence_t brd_confidence; /* confidence that the board is bad */ nasid_t brd_owner; /* who owns this board */ unsigned char brd_nic_flags; /* To handle 8 more NICs */ char brd_name[32];} lboard_t;/* * Make sure we pass back the calias space address for local boards. * klconfig board traversal and error structure extraction defines. */#define BOARD_SLOT(_brd) ((_brd)->brd_slot)#define KLCF_CLASS(_brd) KLCLASS((_brd)->brd_type)#define KLCF_TYPE(_brd) KLTYPE((_brd)->brd_type)#define KLCF_REMOTE(_brd) (((_brd)->struct_type & LOCAL_BOARD) ? 0 : 1)#define KLCF_NUM_COMPS(_brd) ((_brd)->brd_numcompts)#define KLCF_MODULE_ID(_brd) ((_brd)->brd_module)#ifdef FRUTEST#define KLCF_NEXT(_brd) ((_brd)->brd_next ? (lboard_t *)((_brd)->brd_next): NULL)#define KLCF_COMP(_brd, _ndx) (klinfo_t *)((_brd)->brd_compts[(_ndx)])#define KLCF_COMP_ERROR(_brd, _comp) (_brd = _brd , (_comp)->errinfo)#else#define KLCF_NEXT(_brd) \ ((_brd)->brd_next ? \ (lboard_t *)(NODE_OFFSET_TO_K1(NASID_GET(_brd), (_brd)->brd_next)):\ NULL)#define KLCF_COMP(_brd, _ndx) \ (klinfo_t *)(NODE_OFFSET_TO_K1(NASID_GET(_brd), \ (_brd)->brd_compts[(_ndx)]))#define KLCF_COMP_ERROR(_brd, _comp) \ (NODE_OFFSET_TO_K1(NASID_GET(_brd), (_comp)->errinfo))#endif#define KLCF_COMP_TYPE(_comp) ((_comp)->struct_type)#define KLCF_BRIDGE_W_ID(_comp) ((_comp)->physid) /* Widget ID *//* * Generic info structure. This stores common info about a * component. */typedef struct klinfo_s { /* Generic info */ unsigned char struct_type; /* type of this structure */ unsigned char struct_version; /* version of this structure */ unsigned char flags; /* Enabled, disabled etc */ unsigned char revision; /* component revision */ unsigned short diagval; /* result of diagnostics */ unsigned short diagparm; /* diagnostic parameter */ unsigned char inventory; /* previous inventory status */ nic_t nic; /* MUst be aligned properly */ unsigned char physid; /* physical id of component */ unsigned int virtid; /* virtual id as seen by system */ unsigned char widid; /* Widget id - if applicable */ nasid_t nasid; /* node number - from parent */ char pad1; /* pad out structure. */ char pad2; /* pad out structure. */ COMPONENT *arcs_compt; /* ptr to the arcs struct for ease*/ klconf_off_t errinfo; /* component specific errors */ unsigned short pad3; /* pci fields have moved over to */ unsigned short pad4; /* klbri_t */} klinfo_t ;#define KLCONFIG_INFO_ENABLED(_i) ((_i)->flags & KLINFO_ENABLE)/* * Component structures. * Following are the currently identified components: * CPU, HUB, MEM_BANK, * XBOW(consists of 16 WIDGETs, each of which can be HUB or GRAPHICS or BRIDGE) * BRIDGE, IOC3, SuperIO, SCSI, FDDI * ROUTER * GRAPHICS */#define KLSTRUCT_UNKNOWN 0#define KLSTRUCT_CPU 1#define KLSTRUCT_HUB 2#define KLSTRUCT_MEMBNK 3#define KLSTRUCT_XBOW 4#define KLSTRUCT_BRI 5#define KLSTRUCT_IOC3 6#define KLSTRUCT_PCI 7#define KLSTRUCT_VME 8#define KLSTRUCT_ROU 9#define KLSTRUCT_GFX 10#define KLSTRUCT_SCSI 11#define KLSTRUCT_FDDI 12#define KLSTRUCT_MIO 13#define KLSTRUCT_DISK 14#define KLSTRUCT_TAPE 15#define KLSTRUCT_CDROM 16#define KLSTRUCT_HUB_UART 17#define KLSTRUCT_IOC3ENET 18#define KLSTRUCT_IOC3UART 19#define KLSTRUCT_UNUSED 20 /* XXX UNUSED */#define KLSTRUCT_IOC3PCKM 21#define KLSTRUCT_RAD 22#define KLSTRUCT_HUB_TTY 23#define KLSTRUCT_IOC3_TTY 24/* Early Access IO proms are compatible only with KLSTRUCT values upto 24. */#define KLSTRUCT_FIBERCHANNEL 25#define KLSTRUCT_MOD_SERIAL_NUM 26#define KLSTRUCT_IOC3MS 27#define KLSTRUCT_TPU 28#define KLSTRUCT_GSN_A 29#define KLSTRUCT_GSN_B 30#define KLSTRUCT_XTHD 31/* * These are the indices of various components within a lboard structure. */#define IP27_CPU0_INDEX 0#define IP27_CPU1_INDEX 1#define IP27_HUB_INDEX 2#define IP27_MEM_INDEX 3#define BASEIO_BRIDGE_INDEX 0#define BASEIO_IOC3_INDEX 1#define BASEIO_SCSI1_INDEX 2#define BASEIO_SCSI2_INDEX 3#define MIDPLANE_XBOW_INDEX 0#define ROUTER_COMPONENT_INDEX 0#define CH4SCSI_BRIDGE_INDEX 0/* Info holders for various hardware components */typedef u64 *pci_t;typedef u64 *vmeb_t;typedef u64 *vmed_t;typedef u64 *fddi_t;typedef u64 *scsi_t;typedef u64 *mio_t;typedef u64 *graphics_t;typedef u64 *router_t;/* * The port info in ip27_cfg area translates to a lboart_t in the * KLCONFIG area. But since KLCONFIG does not use pointers, lboart_t * is stored in terms of a nasid and a offset from start of KLCONFIG * area on that nasid. */typedef struct klport_s { nasid_t port_nasid; unsigned char port_flag; klconf_off_t port_offset;} klport_t;#if 0/* * This is very similar to the klport_s but instead of having a componant * offset it has a board offset. */typedef struct klxbow_port_s { nasid_t port_nasid; unsigned char port_flag; klconf_off_t board_offset;} klxbow_port_t;#endiftypedef struct klcpu_s { /* CPU */ klinfo_t cpu_info; unsigned short cpu_prid; /* Processor PRID value */ unsigned short cpu_fpirr; /* FPU IRR value */ unsigned short cpu_speed; /* Speed in MHZ */ unsigned short cpu_scachesz; /* secondary cache size in MB */ unsigned short cpu_scachespeed;/* secondary cache speed in MHz */} klcpu_t ;#define CPU_STRUCT_VERSION 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -