ipath_registers.h
来自「LINUX 2.6.17.4的源码」· C头文件 代码 · 共 454 行 · 第 1/2 页
H
454 行
/* * Copyright (c) 2003, 2004, 2005, 2006 PathScale, Inc. All rights reserved. * * This software is available to you under a choice of one of two * licenses. You may choose to be licensed under the terms of the GNU * General Public License (GPL) Version 2, available from the file * COPYING in the main directory of this source tree, or the * OpenIB.org BSD license below: * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * * - Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */#ifndef _IPATH_REGISTERS_H#define _IPATH_REGISTERS_H/* * This file should only be included by kernel source, and by the diags. It * defines the registers, and their contents, for the InfiniPath HT-400 * chip. *//* * These are the InfiniPath register and buffer bit definitions, * that are visible to software, and needed only by the kernel * and diag code. A few, that are visible to protocol and user * code are in ipath_common.h. Some bits are specific * to a given chip implementation, and have been moved to the * chip-specific source file *//* kr_revision bits */#define INFINIPATH_R_CHIPREVMINOR_MASK 0xFF#define INFINIPATH_R_CHIPREVMINOR_SHIFT 0#define INFINIPATH_R_CHIPREVMAJOR_MASK 0xFF#define INFINIPATH_R_CHIPREVMAJOR_SHIFT 8#define INFINIPATH_R_ARCH_MASK 0xFF#define INFINIPATH_R_ARCH_SHIFT 16#define INFINIPATH_R_SOFTWARE_MASK 0xFF#define INFINIPATH_R_SOFTWARE_SHIFT 24#define INFINIPATH_R_BOARDID_MASK 0xFF#define INFINIPATH_R_BOARDID_SHIFT 32/* kr_control bits */#define INFINIPATH_C_FREEZEMODE 0x00000002#define INFINIPATH_C_LINKENABLE 0x00000004#define INFINIPATH_C_RESET 0x00000001/* kr_sendctrl bits */#define INFINIPATH_S_DISARMPIOBUF_SHIFT 16#define IPATH_S_ABORT 0#define IPATH_S_PIOINTBUFAVAIL 1#define IPATH_S_PIOBUFAVAILUPD 2#define IPATH_S_PIOENABLE 3#define IPATH_S_DISARM 31#define INFINIPATH_S_ABORT (1U << IPATH_S_ABORT)#define INFINIPATH_S_PIOINTBUFAVAIL (1U << IPATH_S_PIOINTBUFAVAIL)#define INFINIPATH_S_PIOBUFAVAILUPD (1U << IPATH_S_PIOBUFAVAILUPD)#define INFINIPATH_S_PIOENABLE (1U << IPATH_S_PIOENABLE)#define INFINIPATH_S_DISARM (1U << IPATH_S_DISARM)/* kr_rcvctrl bits */#define INFINIPATH_R_PORTENABLE_SHIFT 0#define INFINIPATH_R_INTRAVAIL_SHIFT 16#define INFINIPATH_R_TAILUPD 0x80000000/* kr_intstatus, kr_intclear, kr_intmask bits */#define INFINIPATH_I_RCVURG_SHIFT 0#define INFINIPATH_I_RCVAVAIL_SHIFT 12#define INFINIPATH_I_ERROR 0x80000000#define INFINIPATH_I_SPIOSENT 0x40000000#define INFINIPATH_I_SPIOBUFAVAIL 0x20000000#define INFINIPATH_I_GPIO 0x10000000/* kr_errorstatus, kr_errorclear, kr_errormask bits */#define INFINIPATH_E_RFORMATERR 0x0000000000000001ULL#define INFINIPATH_E_RVCRC 0x0000000000000002ULL#define INFINIPATH_E_RICRC 0x0000000000000004ULL#define INFINIPATH_E_RMINPKTLEN 0x0000000000000008ULL#define INFINIPATH_E_RMAXPKTLEN 0x0000000000000010ULL#define INFINIPATH_E_RLONGPKTLEN 0x0000000000000020ULL#define INFINIPATH_E_RSHORTPKTLEN 0x0000000000000040ULL#define INFINIPATH_E_RUNEXPCHAR 0x0000000000000080ULL#define INFINIPATH_E_RUNSUPVL 0x0000000000000100ULL#define INFINIPATH_E_REBP 0x0000000000000200ULL#define INFINIPATH_E_RIBFLOW 0x0000000000000400ULL#define INFINIPATH_E_RBADVERSION 0x0000000000000800ULL#define INFINIPATH_E_RRCVEGRFULL 0x0000000000001000ULL#define INFINIPATH_E_RRCVHDRFULL 0x0000000000002000ULL#define INFINIPATH_E_RBADTID 0x0000000000004000ULL#define INFINIPATH_E_RHDRLEN 0x0000000000008000ULL#define INFINIPATH_E_RHDR 0x0000000000010000ULL#define INFINIPATH_E_RIBLOSTLINK 0x0000000000020000ULL#define INFINIPATH_E_SMINPKTLEN 0x0000000020000000ULL#define INFINIPATH_E_SMAXPKTLEN 0x0000000040000000ULL#define INFINIPATH_E_SUNDERRUN 0x0000000080000000ULL#define INFINIPATH_E_SPKTLEN 0x0000000100000000ULL#define INFINIPATH_E_SDROPPEDSMPPKT 0x0000000200000000ULL#define INFINIPATH_E_SDROPPEDDATAPKT 0x0000000400000000ULL#define INFINIPATH_E_SPIOARMLAUNCH 0x0000000800000000ULL#define INFINIPATH_E_SUNEXPERRPKTNUM 0x0000001000000000ULL#define INFINIPATH_E_SUNSUPVL 0x0000002000000000ULL#define INFINIPATH_E_IBSTATUSCHANGED 0x0001000000000000ULL#define INFINIPATH_E_INVALIDADDR 0x0002000000000000ULL#define INFINIPATH_E_RESET 0x0004000000000000ULL#define INFINIPATH_E_HARDWARE 0x0008000000000000ULL/* kr_hwerrclear, kr_hwerrmask, kr_hwerrstatus, bits *//* TXEMEMPARITYERR bit 0: PIObuf, 1: PIOpbc, 2: launchfifo * RXEMEMPARITYERR bit 0: rcvbuf, 1: lookupq, 2: eagerTID, 3: expTID * bit 4: flag buffer, 5: datainfo, 6: header info */#define INFINIPATH_HWE_TXEMEMPARITYERR_MASK 0xFULL#define INFINIPATH_HWE_TXEMEMPARITYERR_SHIFT 40#define INFINIPATH_HWE_RXEMEMPARITYERR_MASK 0x7FULL#define INFINIPATH_HWE_RXEMEMPARITYERR_SHIFT 44#define INFINIPATH_HWE_RXDSYNCMEMPARITYERR 0x0000000400000000ULL#define INFINIPATH_HWE_MEMBISTFAILED 0x0040000000000000ULL#define INFINIPATH_HWE_IBCBUSTOSPCPARITYERR 0x4000000000000000ULL#define INFINIPATH_HWE_IBCBUSFRSPCPARITYERR 0x8000000000000000ULL/* kr_hwdiagctrl bits */#define INFINIPATH_DC_FORCETXEMEMPARITYERR_MASK 0xFULL#define INFINIPATH_DC_FORCETXEMEMPARITYERR_SHIFT 40#define INFINIPATH_DC_FORCERXEMEMPARITYERR_MASK 0x7FULL#define INFINIPATH_DC_FORCERXEMEMPARITYERR_SHIFT 44#define INFINIPATH_DC_FORCERXDSYNCMEMPARITYERR 0x0000000400000000ULL#define INFINIPATH_DC_COUNTERDISABLE 0x1000000000000000ULL#define INFINIPATH_DC_COUNTERWREN 0x2000000000000000ULL#define INFINIPATH_DC_FORCEIBCBUSTOSPCPARITYERR 0x4000000000000000ULL#define INFINIPATH_DC_FORCEIBCBUSFRSPCPARITYERR 0x8000000000000000ULL/* kr_ibcctrl bits */#define INFINIPATH_IBCC_FLOWCTRLPERIOD_MASK 0xFFULL#define INFINIPATH_IBCC_FLOWCTRLPERIOD_SHIFT 0#define INFINIPATH_IBCC_FLOWCTRLWATERMARK_MASK 0xFFULL#define INFINIPATH_IBCC_FLOWCTRLWATERMARK_SHIFT 8#define INFINIPATH_IBCC_LINKINITCMD_MASK 0x3ULL#define INFINIPATH_IBCC_LINKINITCMD_DISABLE 1/* cycle through TS1/TS2 till OK */#define INFINIPATH_IBCC_LINKINITCMD_POLL 2/* wait for TS1, then go on */#define INFINIPATH_IBCC_LINKINITCMD_SLEEP 3#define INFINIPATH_IBCC_LINKINITCMD_SHIFT 16#define INFINIPATH_IBCC_LINKCMD_MASK 0x3ULL#define INFINIPATH_IBCC_LINKCMD_INIT 1 /* move to 0x11 */#define INFINIPATH_IBCC_LINKCMD_ARMED 2 /* move to 0x21 */#define INFINIPATH_IBCC_LINKCMD_ACTIVE 3 /* move to 0x31 */#define INFINIPATH_IBCC_LINKCMD_SHIFT 18#define INFINIPATH_IBCC_MAXPKTLEN_MASK 0x7FFULL#define INFINIPATH_IBCC_MAXPKTLEN_SHIFT 20#define INFINIPATH_IBCC_PHYERRTHRESHOLD_MASK 0xFULL#define INFINIPATH_IBCC_PHYERRTHRESHOLD_SHIFT 32#define INFINIPATH_IBCC_OVERRUNTHRESHOLD_MASK 0xFULL#define INFINIPATH_IBCC_OVERRUNTHRESHOLD_SHIFT 36#define INFINIPATH_IBCC_CREDITSCALE_MASK 0x7ULL#define INFINIPATH_IBCC_CREDITSCALE_SHIFT 40#define INFINIPATH_IBCC_LOOPBACK 0x8000000000000000ULL#define INFINIPATH_IBCC_LINKDOWNDEFAULTSTATE 0x4000000000000000ULL/* kr_ibcstatus bits */#define INFINIPATH_IBCS_LINKTRAININGSTATE_MASK 0xF#define INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT 0#define INFINIPATH_IBCS_LINKSTATE_MASK 0x7#define INFINIPATH_IBCS_LINKSTATE_SHIFT 4#define INFINIPATH_IBCS_TXREADY 0x40000000#define INFINIPATH_IBCS_TXCREDITOK 0x80000000/* link training states (shift by INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT) */#define INFINIPATH_IBCS_LT_STATE_DISABLED 0x00#define INFINIPATH_IBCS_LT_STATE_LINKUP 0x01#define INFINIPATH_IBCS_LT_STATE_POLLACTIVE 0x02#define INFINIPATH_IBCS_LT_STATE_POLLQUIET 0x03#define INFINIPATH_IBCS_LT_STATE_SLEEPDELAY 0x04#define INFINIPATH_IBCS_LT_STATE_SLEEPQUIET 0x05#define INFINIPATH_IBCS_LT_STATE_CFGDEBOUNCE 0x08#define INFINIPATH_IBCS_LT_STATE_CFGRCVFCFG 0x09#define INFINIPATH_IBCS_LT_STATE_CFGWAITRMT 0x0a#define INFINIPATH_IBCS_LT_STATE_CFGIDLE 0x0b#define INFINIPATH_IBCS_LT_STATE_RECOVERRETRAIN 0x0c#define INFINIPATH_IBCS_LT_STATE_RECOVERWAITRMT 0x0e#define INFINIPATH_IBCS_LT_STATE_RECOVERIDLE 0x0f/* link state machine states (shift by INFINIPATH_IBCS_LINKSTATE_SHIFT) */#define INFINIPATH_IBCS_L_STATE_DOWN 0x0#define INFINIPATH_IBCS_L_STATE_INIT 0x1#define INFINIPATH_IBCS_L_STATE_ARM 0x2#define INFINIPATH_IBCS_L_STATE_ACTIVE 0x3#define INFINIPATH_IBCS_L_STATE_ACT_DEFER 0x4/* combination link status states that we use with some frequency */#define IPATH_IBSTATE_MASK ((INFINIPATH_IBCS_LINKTRAININGSTATE_MASK \ << INFINIPATH_IBCS_LINKSTATE_SHIFT) | \ (INFINIPATH_IBCS_LINKSTATE_MASK \ <<INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT))#define IPATH_IBSTATE_INIT ((INFINIPATH_IBCS_L_STATE_INIT \ << INFINIPATH_IBCS_LINKSTATE_SHIFT) | \ (INFINIPATH_IBCS_LT_STATE_LINKUP \ <<INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT))#define IPATH_IBSTATE_ARM ((INFINIPATH_IBCS_L_STATE_ARM \ << INFINIPATH_IBCS_LINKSTATE_SHIFT) | \ (INFINIPATH_IBCS_LT_STATE_LINKUP \ <<INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT))#define IPATH_IBSTATE_ACTIVE ((INFINIPATH_IBCS_L_STATE_ACTIVE \ << INFINIPATH_IBCS_LINKSTATE_SHIFT) | \ (INFINIPATH_IBCS_LT_STATE_LINKUP \ <<INFINIPATH_IBCS_LINKTRAININGSTATE_SHIFT))
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?