| /******************************************************************************* |
| Copyright (C) Marvell International Ltd. and its affiliates |
| |
| This software file (the "File") is owned and distributed by Marvell |
| International Ltd. and/or its affiliates ("Marvell") under the following |
| alternative licensing terms. Once you have made an election to distribute the |
| File under one of the following license alternatives, please (i) delete this |
| introductory statement regarding license alternatives, (ii) delete the two |
| license alternatives that you have not elected to use and (iii) preserve the |
| Marvell copyright notice above. |
| |
| ******************************************************************************** |
| Marvell Commercial License Option |
| |
| If you received this File from Marvell and you have entered into a commercial |
| license agreement (a "Commercial License") with Marvell, the File is licensed |
| to you under the terms of the applicable Commercial License. |
| |
| ******************************************************************************** |
| Marvell GPL License Option |
| |
| If you received this File from Marvell, you may opt to use, redistribute and/or |
| modify this File in accordance with the terms and conditions of the General |
| Public License Version 2, June 1991 (the "GPL License"), a copy of which is |
| available along with the File in the license.txt file or by writing to the Free |
| Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| |
| THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| DISCLAIMED. The GPL License provides additional details about this warranty |
| disclaimer. |
| ******************************************************************************** |
| Marvell BSD License Option |
| |
| If you received this File from Marvell, you may opt to use, redistribute and/or |
| modify this File under the following licensing terms. |
| 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. |
| |
| * Neither the name of Marvell nor the names of its contributors may be |
| used to endorse or promote products derived from this software without |
| specific prior written permission. |
| |
| THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND |
| ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR |
| ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON |
| ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
| SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| |
| *******************************************************************************/ |
| |
| #ifndef __INCPEXREGSH |
| #define __INCPEXREGSH |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif /* __cplusplus */ |
| |
| #include "mvSysPexConfig.h" |
| |
| /* defines */ |
| #define MAX_PEX_DEVICES 32 |
| #define MAX_PEX_FUNCS 8 |
| #define MAX_PEX_BUSSES 256 |
| |
| /*********************************************************/ |
| /* PCI Express Configuration Cycles Generation Registers */ |
| /*********************************************************/ |
| |
| #define PEX_CFG_ADDR_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x18F8) |
| #define PEX_CFG_DATA_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x18FC) |
| |
| #define PEX_PHY_ACCESS_REG(unit) (0x40000 + ((unit)%2 * 0x40000) + ((unit)/2 * 0x2000) + 0x1B00) |
| |
| /* PCI Express Configuration Address Register */ |
| /* PEX_CFG_ADDR_REG (PXCAR) */ |
| #define PXCAR_REG_NUM_OFFS 2 |
| #define PXCAR_REG_NUM_MAX 0x3F |
| #define PXCAR_REG_NUM_MASK (PXCAR_REG_NUM_MAX << PXCAR_REG_NUM_OFFS) |
| #define PXCAR_FUNC_NUM_OFFS 8 |
| #define PXCAR_FUNC_NUM_MAX 0x7 |
| #define PXCAR_FUNC_NUM_MASK (PXCAR_FUNC_NUM_MAX << PXCAR_FUNC_NUM_OFFS) |
| #define PXCAR_DEVICE_NUM_OFFS 11 |
| #define PXCAR_DEVICE_NUM_MAX 0x1F |
| #define PXCAR_DEVICE_NUM_MASK (PXCAR_DEVICE_NUM_MAX << PXCAR_DEVICE_NUM_OFFS) |
| #define PXCAR_BUS_NUM_OFFS 16 |
| #define PXCAR_BUS_NUM_MAX 0xFF |
| #define PXCAR_BUS_NUM_MASK (PXCAR_BUS_NUM_MAX << PXCAR_BUS_NUM_OFFS) |
| #define PXCAR_EXT_REG_NUM_OFFS 24 |
| #define PXCAR_EXT_REG_NUM_MAX 0xF |
| |
| /* in pci express register address is now the legacy register address (8 bits) |
| with the new extended register address (more 4 bits) , below is the mask of |
| the upper 4 bits of the full register address */ |
| #define PXCAR_REAL_EXT_REG_NUM_OFFS 8 |
| #define PXCAR_EXT_REG_NUM_MASK (PXCAR_EXT_REG_NUM_MAX << PXCAR_EXT_REG_NUM_OFFS) |
| #define PXCAR_CONFIG_EN BIT31 |
| |
| #define PXCAR_REAL_EXT_REG_NUM_OFFS 8 |
| #define PXCAR_REAL_EXT_REG_NUM_MASK (0xF << PXCAR_REAL_EXT_REG_NUM_OFFS) |
| |
| /* The traditional PCI spec defined 6-bit field to describe register offset. */ |
| /* The new PCI Express extend the register offset by an extra 4-bits. */ |
| /* The below macro assign 10-bit register offset into the apprpreate */ |
| /* fields in the CFG_ADDR_REG */ |
| #define PXCAR_REG_OFFS_SET(regOffs) \ |
| ((regOff & PXCAR_REG_NUM_MASK) | \ |
| (((regOff & PXCAR_REAL_EXT_REG_NUM_MASK) >> PXCAR_REAL_EXT_REG_NUM_OFFS) << PXCAR_EXT_REG_NUM_OFFS)) |
| |
| /***********************************/ |
| /* PCI Express Interrupt registers */ |
| /***********************************/ |
| #define PEX_CAUSE_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1900) |
| #define PEX_MASK_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1910) |
| |
| #define PXICR_TX_REQ_IN_DLDOWN_ERR BIT0 /* Transmit request while field */ |
| /* <DLDown> of the PCI Express */ |
| /* PCI Express Interrupt Cause */ |
| /* PEX_INT_CAUSE_REG (PXICR) */ |
| /* PEX_INT_MASK_REG */ |
| /* |
| NOTE:All bits except bits[27:24] are Read/Write Clear only. A cause bit sets |
| upon an error event occurrence. A write of 0 clears the bit. A write of 1 has |
| no affect. Bits[24:27} are set and cleared upon reception of interrupt |
| emulation messages. |
| Mask bit per cause bit. If a bit is set to 1, the corresponding event is |
| enabled. Mask does not affect setting of the Interrupt Cause register bits; |
| it only affects the assertion of the interrupt . */ |
| |
| #define PXICR_MDIS_CAUSE BIT1 /* Attempt to generate PCI transaction |
| while master is disabled */ |
| #define PXICR_ERR_WRTO_REG_CAUSE BIT3 /* Erroneous write attempt to |
| PCI Express internal register */ |
| #define PXICR_HIT_DFLT_WIN_ERR BIT4 /* Hit Default Window Error */ |
| #define PXICR_RX_RAM_PAR_ERR BIT6 /* Rx RAM Parity Error */ |
| #define PXICR_TX_RAM_PAR_ERR BIT7 /* Tx RAM Parity Error */ |
| #define PXICR_COR_ERR_DET BIT8 /* Correctable Error Detected */ |
| #define PXICR_NF_ERR_DET BIT9 /* Non-Fatal Error Detected */ |
| #define PXICR_FERR_DET BIT10 /* Fatal Error Detected */ |
| #define PXICR_DSTATE_CHANGE BIT11 /* Dstate Change Indication */ |
| #define PXICR_BIST BIT12 /* PCI-Express BIST activated */ |
| #define PXICR_FLW_CTRL_PROT BIT14 /* Flow Control Protocol Error */ |
| |
| #define PXICR_RCV_UR_CA_ERR BIT15 /* Received UR or CA status. */ |
| #define PXICR_RCV_ERR_FATAL BIT16 /* Received ERR_FATAL message. */ |
| #define PXICR_RCV_ERR_NON_FATAL BIT17 /* Received ERR_NONFATAL message */ |
| #define PXICR_RCV_ERR_COR BIT18 /* Received ERR_COR message. */ |
| #define PXICR_RCV_CRS BIT19 /* Received CRS completion status */ |
| #define PXICR_SLV_HOT_RESET BIT20 /* Received Hot Reset Indication */ |
| #define PXICR_SLV_DIS_LINK BIT21 /* Slave Disable Link Indication */ |
| #define PXICR_SLV_LB BIT22 /* Slave Loopback Indication */ |
| #define PXICR_LINK_FAIL BIT23 /* Link Failure indication. */ |
| #define PXICR_RCV_INTA BIT24 /* IntA status. */ |
| #define PXICR_RCV_INTB BIT25 /* IntB status. */ |
| #define PXICR_RCV_INTC BIT26 /* IntC status. */ |
| #define PXICR_RCV_INTD BIT27 /* IntD status. */ |
| #define PXICR_RCV_PM_PME BIT28 /* Received PM_PME message. */ |
| |
| /********************************************/ |
| /* PCI Express Control and Status Registers */ |
| /********************************************/ |
| #define PEX_CTRL_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A00) |
| #define PEX_LINK_CAPABILITIES_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x6C) |
| #define PEX_CAPABILITIES_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x60) |
| #define PEX_STATUS_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A04) |
| #define PEX_COMPLT_TMEOUT_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A10) |
| #define PEX_PWR_MNG_EXT_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A18) |
| #define PEX_FLOW_CTRL_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A20) |
| #define PEX_SECONDARY_BUS_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A2C) |
| #define PEX_DYNMC_WIDTH_MNG_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A30) |
| #define PEX_ROOT_CMPLX_SSPL_REG(pexif) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A0C) |
| #define PEX_ACK_TMR_1X_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A40) |
| #define PEX_TL_CTRL_REG(pexIf) (MV_PEX_IF_REGS_BASE(pexIf) - (pexIf)*0x10000) |
| #define PEX_RAM_PARITY_CTRL_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A50) |
| #define PEX_DBG_CTRL_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A60) |
| #define PEX_DBG_STATUS_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A64) |
| |
| #define PEX_LINK_CTRL_STATUS_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x70) |
| |
| /* PCI Express Control Register */ |
| |
| /* PEX_CTRL_REG (PXCR) */ |
| |
| #define PXCR_CONF_LINK_OFFS 0 |
| #define PXCR_CONF_LINK_MASK (1 << PXCR_CONF_LINK_OFFS) |
| #define PXCR_CONF_LINK_X4 (0 << PXCR_CONF_LINK_OFFS) |
| #define PXCR_CONF_LINK_X1 (1 << PXCR_CONF_LINK_OFFS) |
| #define PXCR_DEV_TYPE_CTRL_OFFS 1 /*PCI ExpressDevice Type Control */ |
| #define PXCR_DEV_TYPE_CTRL_MASK BIT1 |
| #define PXCR_DEV_TYPE_CTRL_CMPLX (1 << PXCR_DEV_TYPE_CTRL_OFFS) |
| #define PXCR_DEV_TYPE_CTRL_POINT (0 << PXCR_DEV_TYPE_CTRL_OFFS) |
| #define PXCR_AUTO_SPEED_CTRL_MASK BIT10 |
| #define PXCR_CFG_MAP_TO_MEM_EN BIT2 /* Configuration Header Mapping |
| to Memory Space Enable */ |
| |
| #define PXCR_CFG_MAP_TO_MEM_EN BIT2 /* Configuration Header Mapping |
| to Memory Space Enable */ |
| |
| #define PXCR_RSRV1_OFFS 5 |
| #define PXCR_RSRV1_MASK (0x7 << PXCR_RSRV1_OFFS) |
| #define PXCR_RSRV1_VAL (0x0 << PXCR_RSRV1_OFFS) |
| |
| #define PXCR_CONF_MAX_OUTSTND_OFFS 8 /*Maximum outstanding NP requests as a master */ |
| #define PXCR_CONF_MAX_OUTSTND_MASK (0x3 << PXCR_CONF_MAX_OUTSTND_OFFS) |
| |
| #define PXCR_CONF_NFTS_OFFS 16 /*number of FTS Ordered-Sets */ |
| #define PXCR_CONF_NFTS_MASK (0xff << PXCR_CONF_NFTS_OFFS) |
| |
| #define PXCR_CONF_MSTR_HOT_RESET BIT24 /*Master Hot-Reset. */ |
| #define PXCR_CONF_MSTR_LB BIT26 /* Master Loopback */ |
| #define PXCR_CONF_MSTR_DIS_SCRMB BIT27 /* Master Disable Scrambling */ |
| #define PXCR_CONF_DIRECT_DIS_SCRMB BIT28 /* Direct Disable Scrambling */ |
| |
| /* PCI Express Status Register */ |
| /* PEX_STATUS_REG (PXSR) */ |
| |
| #define PXSR_DL_DOWN BIT0 /* DL_Down indication. */ |
| |
| #define PXSR_PEX_BUS_NUM_OFFS 8 /* Bus Number Indication */ |
| #define PXSR_PEX_BUS_NUM_MASK (0xff << PXSR_PEX_BUS_NUM_OFFS) |
| |
| #define PXSR_PEX_DEV_NUM_OFFS 16 /* Device Number Indication */ |
| #define PXSR_PEX_DEV_NUM_MASK (0x1f << PXSR_PEX_DEV_NUM_OFFS) |
| |
| #define PXSR_PEX_SLV_HOT_RESET BIT24 /* Slave Hot Reset Indication */ |
| #define PXSR_PEX_SLV_DIS_LINK BIT25 /* Slave Disable Link Indication */ |
| #define PXSR_PEX_SLV_LB BIT26 /* Slave Loopback Indication */ |
| #define PXSR_PEX_SLV_DIS_SCRMB BIT27 /* Slave Disable Scrambling Indication */ |
| |
| /* PCI Express Completion Timeout Register */ |
| /* PEX_COMPLT_TMEOUT_REG (PXCTR) */ |
| |
| #define PXCTR_CMP_TO_THRSHLD_OFFS 0 /* Completion Timeout Threshold */ |
| #define PXCTR_CMP_TO_THRSHLD_MASK (0xffff << PXCTR_CMP_TO_THRSHLD_OFFS) |
| |
| /* PCI Express Power Management Extended Register */ |
| /* PEX_PWR_MNG_EXT_REG (PXPMER) */ |
| |
| #define PXPMER_L1_ASPM_EN_OFFS 1 |
| #define PXPMER_L1_ASPM_EN_MASK (0x1 << PXPMER_L1_ASPM_EN_OFFS) |
| |
| /* PCI Express Flow Control Register */ |
| /* PEX_FLOW_CTRL_REG (PXFCR) */ |
| |
| #define PXFCR_PH_INIT_FC_OFFS 0 /*Posted Headers Flow Control Credit |
| Initial Value. */ |
| #define PXFCR_PH_INIT_FC_MASK (0xff << PXFCR_PH_INIT_FC_OFFS) |
| |
| #define PXFCR_NPH_INIT_FC_OFFS 8 /* Classified Non-Posted Headers |
| Flow Control Credit Initial Value */ |
| #define PXFCR_NPH_INIT_FC_MASK (0xff << PXFCR_NPH_INIT_FC_OFFS) |
| |
| #define PXFCR_CH_INIT_FC_OFFS 16 /* Completion Headers Flow Control |
| Credit Initial Value Infinite */ |
| |
| #define PXFCR_CH_INIT_FC_MASK (0xff << PXFCR_CH_INIT_FC_OFFS) |
| |
| #define PXFCR_FC_UPDATE_TO_OFFS 24 /* Flow Control Update Timeout */ |
| #define PXFCR_FC_UPDATE_TO_MASK (0xff << PXFCR_FC_UPDATE_TO_OFFS) |
| |
| /* PCI Express Acknowledge Timers (4X) Register */ |
| /* PEX_ACK_TMR_4X_REG (PXAT4R) */ |
| #define PXAT1R_ACK_LAT_TOX4_OFFS 0 /* Ack Latency Timer Timeout Value */ |
| #define PXAT1R_ACK_LAT_TOX4_MASK (0xffff << PXAT4R_ACK_LAT_TOX1_OFFS) |
| #define PXAT1R_ACK_RPLY_TOX4_OFFS 16 /* Ack Replay Timer Timeout Value */ |
| #define PXAT1R_ACK_RPLY_TOX4_MASK (0xffff << PXAT1R_ACK_RPLY_TOX1_OFFS) |
| |
| /* PCI Express Acknowledge Timers (1X) Register */ |
| /* PEX_ACK_TMR_1X_REG (PXAT1R) */ |
| |
| #define PXAT1R_ACK_LAT_TOX1_OFFS 0 /* Acknowledge Latency Timer Timeout |
| Value for 1X Link */ |
| #define PXAT1R_ACK_LAT_TOX1_MASK (0xffff << PXAT1R_ACK_LAT_TOX1_OFFS) |
| |
| #define PXAT1R_ACK_RPLY_TOX1_OFFS 16 /* Acknowledge Replay Timer Timeout |
| Value for 1X */ |
| #define PXAT1R_ACK_RPLY_TOX1_MASK (0xffff << PXAT1R_ACK_RPLY_TOX1_OFFS) |
| |
| /* PCI Express TL Control Register */ |
| /* PEX_TL_CTRL_REG (PXTCR) */ |
| |
| #define PXTCR_TX_CMP_BUFF_NO_OFFS 8 /*Number of completion buffers in Tx */ |
| #define PXTCR_TX_CMP_BUFF_NO_MASK (0xf << PXTCR_TX_CMP_BUFF_NO_OFFS) |
| |
| /* PCI Express Debug MAC Control Register */ |
| /* PEX_DEBUG_MAC_CTRL_REG (PXDMCR) */ |
| |
| #define PXDMCR_LINKUP BIT4 |
| |
| /**********************************************/ |
| /* PCI Express Configuration Header Registers */ |
| /**********************************************/ |
| |
| #define PEX_CFG_DIRECT_ACCESS(pexIf, cfgReg) (MV_PEX_IF_REGS_BASE(pexIf) + (cfgReg)) |
| |
| #define PEX_DEVICE_AND_VENDOR_ID 0x000 |
| #define PEX_STATUS_AND_COMMAND 0x004 |
| #define PEX_CLASS_CODE_AND_REVISION_ID 0x008 |
| #define PEX_BIST_HDR_TYPE_LAT_TMR_CACHE_LINE 0x00C |
| #define PEX_MEMORY_BAR_BASE_ADDR(barNum) (0x010 + ((barNum) << 2)) |
| #define PEX_MV_BAR_BASE(barNum) (0x010 + (barNum) * 8) |
| #define PEX_MV_BAR_BASE_HIGH(barNum) (0x014 + (barNum) * 8) |
| #define PEX_BAR0_INTER_REG 0x010 |
| #define PEX_BAR0_INTER_REG_HIGH 0x014 |
| #define PEX_BAR1_REG 0x018 |
| #define PEX_BAR1_REG_HIGH 0x01C |
| #define PEX_BAR2_REG 0x020 |
| #define PEX_BAR2_REG_HIGH 0x024 |
| |
| #define PEX_SUBSYS_ID_AND_SUBSYS_VENDOR_ID 0x02C |
| #define PEX_EXPANSION_ROM_BASE_ADDR_REG 0x030 |
| #define PEX_CAPABILTY_LIST_POINTER 0x034 |
| #define PEX_INTERRUPT_PIN_AND_LINE 0x03C |
| |
| /* capability list */ |
| #define PEX_POWER_MNG_CAPABILITY 0x040 |
| #define PEX_POWER_MNG_STATUS_CONTROL 0x044 |
| |
| #define PEX_MSI_MESSAGE_CONTROL 0x050 |
| #define PEX_MSI_MESSAGE_ADDR 0x054 |
| #define PEX_MSI_MESSAGE_HIGH_ADDR 0x058 |
| #define PEX_MSI_MESSAGE_DATA 0x05C |
| |
| #define PEX_CAPABILITY_REG 0x60 |
| #define PEX_DEV_CAPABILITY_REG 0x64 |
| #define PEX_DEV_CTRL_STAT_REG 0x68 |
| #define PEX_LINK_CAPABILITY_REG 0x6C |
| #define PEX_LINK_CTRL_STAT_REG 0x70 |
| #define PEX_LINK_CTRL_STAT_2_REG 0x90 |
| |
| #define PEX_ADV_ERR_RPRT_HDR_TRGT_REG 0x100 |
| #define PEX_UNCORRECT_ERR_STAT_REG 0x104 |
| #define PEX_UNCORRECT_ERR_MASK_REG 0x108 |
| #define PEX_UNCORRECT_ERR_SERVITY_REG 0x10C |
| #define PEX_CORRECT_ERR_STAT_REG 0x110 |
| #define PEX_CORRECT_ERR_MASK_REG 0x114 |
| #define PEX_ADV_ERR_CAPABILITY_CTRL_REG 0x118 |
| #define PEX_HDR_LOG_FIRST_DWORD_REG 0x11C |
| #define PEX_HDR_LOG_SECOND_DWORD_REG 0x120 |
| #define PEX_HDR_LOG_THIRD_DWORD_REG 0x124 |
| #define PEX_HDR_LOG_FOURTH_DWORD_REG 0x128 |
| |
| /* PCI Express Device and Vendor ID Register */ |
| /* PEX_DEVICE_AND_VENDOR_ID (PXDAVI) */ |
| |
| #define PXDAVI_VEN_ID_OFFS 0 /* Vendor ID */ |
| #define PXDAVI_VEN_ID_MASK (0xffff << PXDAVI_VEN_ID_OFFS) |
| |
| #define PXDAVI_DEV_ID_OFFS 16 /* Device ID */ |
| #define PXDAVI_DEV_ID_MASK (0xffff << PXDAVI_DEV_ID_OFFS) |
| |
| /* PCI Express Command and Status Register */ |
| /* PEX_STATUS_AND_COMMAND (PXSAC) */ |
| |
| #define PXSAC_IO_EN BIT0 /* IO Enable */ |
| #define PXSAC_MEM_EN BIT1 /* Memory Enable */ |
| #define PXSAC_MASTER_EN BIT2 /* Master Enable */ |
| #define PXSAC_PERR_EN BIT6 /* Parity Errors Respond Enable */ |
| #define PXSAC_SERR_EN BIT8 /* Ability to assert SERR# line */ |
| #define PXSAC_INT_DIS BIT10 /* Interrupt Disable */ |
| #define PXSAC_INT_STAT BIT19 /* Interrupt Status */ |
| #define PXSAC_CAP_LIST BIT20 /* Capability List Support */ |
| #define PXSAC_MAS_DATA_PERR BIT24 /* Master Data Parity Error */ |
| #define PXSAC_SLAVE_TABORT BIT27 /* Signalled Target Abort */ |
| #define PXSAC_RT_ABORT BIT28 /* Recieved Target Abort */ |
| #define PXSAC_MABORT BIT29 /* Recieved Master Abort */ |
| #define PXSAC_SYSERR BIT30 /* Signalled system error */ |
| #define PXSAC_DET_PARERR BIT31 /* Detect Parity Error */ |
| |
| /* PCI Express Class Code and Revision ID Register */ |
| /* PEX_CLASS_CODE_AND_REVISION_ID (PXCCARI) */ |
| |
| #define PXCCARI_REVID_OFFS 0 /* Revision ID */ |
| #define PXCCARI_REVID_MASK (0xff << PXCCARI_REVID_OFFS) |
| |
| #define PXCCARI_FULL_CLASS_OFFS 8 /* Full Class Code */ |
| #define PXCCARI_FULL_CLASS_MASK (0xffffff << PXCCARI_FULL_CLASS_OFFS) |
| |
| #define PXCCARI_PROGIF_OFFS 8 /* Prog .I/F */ |
| #define PXCCARI_PROGIF_MASK (0xff << PXCCARI_PROGIF_OFFS) |
| |
| #define PXCCARI_SUB_CLASS_OFFS 16 /* Sub Class */ |
| #define PXCCARI_SUB_CLASS_MASK (0xff << PXCCARI_SUB_CLASS_OFFS) |
| |
| #define PXCCARI_BASE_CLASS_OFFS 24 /* Base Class */ |
| #define PXCCARI_BASE_CLASS_MASK (0xff << PXCCARI_BASE_CLASS_OFFS) |
| |
| /* PCI Express BIST, Header Type and Cache Line Size Register */ |
| /* PEX_BIST_HDR_TYPE_LAT_TMR_CACHE_LINE (PXBHTLTCL) */ |
| |
| #define PXBHTLTCL_CACHELINE_OFFS 0 /* Specifies the cache line size */ |
| #define PXBHTLTCL_CACHELINE_MASK (0xff << PXBHTLTCL_CACHELINE_OFFS) |
| |
| #define PXBHTLTCL_HEADTYPE_FULL_OFFS 16 /* Full Header Type */ |
| #define PXBHTLTCL_HEADTYPE_FULL_MASK (0xff << PXBHTLTCL_HEADTYPE_FULL_OFFS) |
| |
| #define PXBHTLTCL_MULTI_FUNC BIT23 /* Multi/Single function */ |
| |
| #define PXBHTLTCL_HEADER_OFFS 16 /* Header type */ |
| #define PXBHTLTCL_HEADER_MASK (0x7f << PXBHTLTCL_HEADER_OFFS) |
| #define PXBHTLTCL_HEADER_STANDARD (0x0 << PXBHTLTCL_HEADER_OFFS) |
| #define PXBHTLTCL_HEADER_PCI2PCI_BRIDGE (0x1 << PXBHTLTCL_HEADER_OFFS) |
| |
| #define PXBHTLTCL_BISTCOMP_OFFS 24 /* BIST Completion Code */ |
| #define PXBHTLTCL_BISTCOMP_MASK (0xf << PXBHTLTCL_BISTCOMP_OFFS) |
| |
| #define PXBHTLTCL_BISTACT BIT30 /* BIST Activate bit */ |
| #define PXBHTLTCL_BISTCAP BIT31 /* BIST Capable Bit */ |
| #define PXBHTLTCL_BISTCAP_OFFS 31 |
| #define PXBHTLTCL_BISTCAP_MASK BIT31 |
| #define PXBHTLTCL_BISTCAP_VAL 0 |
| |
| /* PCI Express Subsystem Device and Vendor ID */ |
| /* PEX_SUBSYS_ID_AND_SUBSYS_VENDOR_ID (PXSIASVI) */ |
| |
| #define PXSIASVI_VENID_OFFS 0 /* Subsystem Manufacturer Vendor ID Number */ |
| #define PXSIASVI_VENID_MASK (0xffff << PXSIASVI_VENID_OFFS) |
| |
| #define PXSIASVI_DEVID_OFFS 16 /* Subsystem Device ID Number */ |
| #define PXSIASVI_DEVID_MASK (0xffff << PXSIASVI_DEVID_OFFS) |
| |
| /* PCI Express Capability List Pointer Register */ |
| /* PEX_CAPABILTY_LIST_POINTER (PXCLP) */ |
| |
| #define PXCLP_CAPPTR_OFFS 0 /* Capability List Pointer */ |
| #define PXCLP_CAPPTR_MASK (0xff << PXCLP_CAPPTR_OFFS) |
| |
| /* PCI Express Interrupt Pin and Line Register */ |
| /*PEX_INTERRUPT_PIN_AND_LINE (PXIPAL) */ |
| |
| #define PXIPAL_INTLINE_OFFS 0 /* Interrupt line (IRQ) */ |
| #define PXIPAL_INTLINE_MASK (0xff << PXIPAL_INTLINE_OFFS) |
| |
| #define PXIPAL_INTPIN_OFFS 8 /* interrupt pin (A, B, C, D) */ |
| #define PXIPAL_INTPIN_MASK (0xff << PXIPAL_INTPIN_OFFS) |
| |
| /* PCI Express Power Management Capability Header Register */ |
| /* PEX_POWER_MNG_CAPABILITY (PXPMC) */ |
| |
| #define PXPMC_CAP_ID_OFFS 0 /* Capability ID */ |
| #define PXPMC_CAP_ID_MASK (0xff << PXPMC_CAP_ID_OFFS) |
| |
| #define PXPMC_NEXT_PTR_OFFS 8 /* Next Item Pointer */ |
| #define PXPMC_NEXT_PTR_MASK (0xff << PXPMC_NEXT_PTR_OFFS) |
| |
| #define PXPMC_PMC_VER_OFFS 16 /* PCI Power Management Capability Version */ |
| #define PXPMC_PMC_VER_MASK (0x7 << PXPMC_PMC_VER_OFFS) |
| |
| #define PXPMC_DSI BIT21 /* Device Specific Initialization */ |
| |
| #define PXPMC_AUX_CUR_OFFS 22 /* Auxiliary Current Requirements */ |
| #define PXPMC_AUX_CUR_MASK (0x7 << PXPMC_AUX_CUR_OFFS) |
| |
| #define PXPMC_D1_SUP BIT25 /* D1 Power Management support */ |
| |
| #define PXPMC_D2_SUP BIT26 /* D2 Power Management support */ |
| |
| #define PXPMC_PME_SUP_OFFS 27 /* PM Event generation support */ |
| #define PXPMC_PME_SUP_MASK (0x1f << PXPMC_PME_SUP_OFFS) |
| |
| /* PCI Express Power Management Control and Status Register */ |
| /* PEX_POWER_MNG_STATUS_CONTROL (PXPMSC) */ |
| |
| #define PXPMSC_PM_STATE_OFFS 0 /* Power State */ |
| #define PXPMSC_PM_STATE_MASK (0x3 << PXPMSC_PM_STATE_OFFS) |
| #define PXPMSC_PM_STATE_D0 (0x0 << PXPMSC_PM_STATE_OFFS) |
| #define PXPMSC_PM_STATE_D1 (0x1 << PXPMSC_PM_STATE_OFFS) |
| #define PXPMSC_PM_STATE_D2 (0x2 << PXPMSC_PM_STATE_OFFS) |
| #define PXPMSC_PM_STATE_D3 (0x3 << PXPMSC_PM_STATE_OFFS) |
| |
| #define PXPMSC_PME_EN BIT8 /* PM_PME Message Generation Enable */ |
| |
| #define PXPMSC_PM_DATA_SEL_OFFS 9 /* Data Select */ |
| #define PXPMSC_PM_DATA_SEL_MASK (0xf << PXPMSC_PM_DATA_SEL_OFFS) |
| |
| #define PXPMSC_PM_DATA_SCALE_OFFS 13 /* Data Scale */ |
| #define PXPMSC_PM_DATA_SCALE_MASK (0x3 << PXPMSC_PM_DATA_SCALE_OFFS) |
| |
| #define PXPMSC_PME_STAT BIT15 /* PME Status */ |
| |
| #define PXPMSC_PM_DATA_OFFS 24 /* State Data */ |
| #define PXPMSC_PM_DATA_MASK (0xff << PXPMSC_PM_DATA_OFFS) |
| |
| /* PCI Express MSI Message Control Register */ |
| /* PEX_MSI_MESSAGE_CONTROL (PXMMC) */ |
| |
| #define PXMMC_CAP_ID_OFFS 0 /* Capability ID */ |
| #define PXMMC_CAP_ID_MASK (0xff << PXMMC_CAP_ID_OFFS) |
| |
| #define PXMMC_NEXT_PTR_OFFS 8 /* Next Item Pointer */ |
| #define PXMMC_NEXT_PTR_MASK (0xff << PXMMC_NEXT_PTR_OFFS) |
| |
| #define PXMMC_MSI_EN BIT18 /* MSI Enable */ |
| |
| #define PXMMC_MULTI_CAP_OFFS 17 /* Multiple Message Capable */ |
| #define PXMMC_MULTI_CAP_MASK (0x7 << PXMMC_MULTI_CAP_OFFS) |
| |
| #define PXMMC_MULTI_EN_OFFS 20 /* Multiple Messages Enable */ |
| #define PXMMC_MULTI_EN_MASK (0x7 << PXMMC_MULTI_EN_OFFS) |
| |
| #define PXMMC_ADDR64 BIT23 /* 64-bit Addressing Capable */ |
| |
| /* PCI Express MSI Message Address Register */ |
| /* PEX_MSI_MESSAGE_ADDR (PXMMA) */ |
| |
| #define PXMMA_MSI_ADDR_OFFS 2 /* Message Address corresponds to |
| Address[31:2] of the MSI MWr TLP */ |
| #define PXMMA_MSI_ADDR_MASK (0x3fffffff << PXMMA_MSI_ADDR_OFFS) |
| |
| /* PCI Express MSI Message Address (High) Register */ |
| /* PEX_MSI_MESSAGE_HIGH_ADDR (PXMMHA) */ |
| |
| #define PXMMA_MSI_ADDR_H_OFFS 0 /* Message Upper Address corresponds to |
| Address[63:32] of the MSI MWr TLP */ |
| #define PXMMA_MSI_ADDR_H_MASK (0xffffffff << PXMMA_MSI_ADDR_H_OFFS) |
| |
| /* PCI Express MSI Message Data Register */ |
| /* PEX_MSI_MESSAGE_DATA (PXMMD) */ |
| |
| #define PXMMD_MSI_DATA_OFFS 0 /* Message Data */ |
| #define PXMMD_MSI_DATA_MASK (0xffff << PXMMD_MSI_DATA_OFFS) |
| |
| /* PCI Express Capability Register */ |
| /* PEX_CAPABILITY_REG (PXCR) */ |
| |
| #define PXCR_CAP_ID_OFFS 0 /* Capability ID */ |
| #define PXCR_CAP_ID_MASK (0xff << PXCR_CAP_ID_OFFS) |
| |
| #define PXCR_NEXT_PTR_OFFS 8 /* Next Item Pointer */ |
| #define PXCR_NEXT_PTR_MASK (0xff << PXCR_NEXT_PTR_OFFS) |
| |
| #define PXCR_CAP_VER_OFFS 16 /* Capability Version */ |
| #define PXCR_CAP_VER_MASK (0xf << PXCR_CAP_VER_OFFS) |
| |
| #define PXCR_DEV_TYPE_OFFS 20 /* Device/Port Type */ |
| #define PXCR_DEV_TYPE_MASK (0xf << PXCR_DEV_TYPE_OFFS) |
| |
| #define PXCR_SLOT_IMP BIT24 /* Slot Implemented */ |
| |
| #define PXCR_INT_MSG_NUM_OFFS 25 /* Interrupt Message Number */ |
| #define PXCR_INT_MSG_NUM_MASK (0x1f << PXCR_INT_MSG_NUM_OFFS) |
| |
| /* PCI Express Device Capabilities Register */ |
| /* PEX_DEV_CAPABILITY_REG (PXDCR) */ |
| |
| #define PXDCR_MAX_PLD_SIZE_SUP_OFFS 0 /* Maximum Payload Size Supported */ |
| #define PXDCR_MAX_PLD_SIZE_SUP_MASK (0x7 << PXDCR_MAX_PLD_SIZE_SUP_OFFS) |
| |
| #define PXDCR_EP_L0S_ACC_LAT_OFFS 6 /* Endpoint L0s Acceptable Latency */ |
| #define PXDCR_EP_L0S_ACC_LAT_MASK (0x7 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| #define PXDCR_EP_L0S_ACC_LAT_64NS_LESS (0x0 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| #define PXDCR_EP_L0S_ACC_LAT_64NS_128NS (0x1 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| #define PXDCR_EP_L0S_ACC_LAT_128NS_256NS (0x2 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| #define PXDCR_EP_L0S_ACC_LAT_256NS_512NS (0x3 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| #define PXDCR_EP_L0S_ACC_LAT_512NS_1US (0x4 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| #define PXDCR_EP_L0S_ACC_LAT_1US_2US (0x5 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| #define PXDCR_EP_L0S_ACC_LAT_2US_4US (0x6 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| #define PXDCR_EP_L0S_ACC_LAT_4US_MORE (0x7 << PXDCR_EP_L0S_ACC_LAT_OFFS) |
| |
| #define PXDCR_EP_L1_ACC_LAT_OFFS 9 /* Endpoint L1 Acceptable Latency */ |
| #define PXDCR_EP_L1_ACC_LAT_MASK (0x7 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXDCR_EP_L1_ACC_LAT_64NS_LESS (0x0 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXDCR_EP_L1_ACC_LAT_64NS_128NS (0x1 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXDCR_EP_L1_ACC_LAT_128NS_256NS (0x2 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXDCR_EP_L1_ACC_LAT_256NS_512NS (0x3 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXDCR_EP_L1_ACC_LAT_512NS_1US (0x4 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXDCR_EP_L1_ACC_LAT_1US_2US (0x5 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXDCR_EP_L1_ACC_LAT_2US_4US (0x6 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXDCR_EP_L1_ACC_LAT_4US_MORE (0x7 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| |
| #define PXDCR_ATT_BUT_PRS_OFFS 12 /* Attention Button Present */ |
| #define PXDCR_ATT_BUT_PRS_MASK BIT12 |
| #define PXDCR_ATT_BUT_PRS_IMPLEMENTED BIT12 |
| |
| #define PXDCR_ATT_IND_PRS_OFFS 13 /* Attention Indicator Present */ |
| #define PXDCR_ATT_IND_PRS_MASK BIT13 |
| #define PXDCR_ATT_IND_PRS_IMPLEMENTED BIT13 |
| |
| #define PXDCR_PWR_IND_PRS_OFFS 14 /* Power Indicator Present */ |
| #define PXDCR_PWR_IND_PRS_MASK BIT14 |
| #define PXDCR_PWR_IND_PRS_IMPLEMENTED BIT14 |
| |
| #define PXDCR_CAP_SPL_VAL_OFFS 18 /* Captured Slot Power Limit |
| Value */ |
| #define PXDCR_CAP_SPL_VAL_MASK (0xff << PXDCR_CAP_SPL_VAL_OFFS) |
| |
| #define PXDCR_CAP_SP_LSCL_OFFS 26 /* Captured Slot Power Limit |
| Scale */ |
| #define PXDCR_CAP_SP_LSCL_MASK (0x3 << PXDCR_CAP_SP_LSCL_OFFS) |
| |
| /* PCI Express Device Control Status Register */ |
| /* PEX_DEV_CTRL_STAT_REG (PXDCSR) */ |
| |
| #define PXDCSR_COR_ERR_REP_EN BIT0 /* Correctable Error Reporting Enable */ |
| #define PXDCSR_NF_ERR_REP_EN BIT1 /* Non-Fatal Error Reporting Enable */ |
| #define PXDCSR_F_ERR_REP_EN BIT2 /* Fatal Error Reporting Enable */ |
| #define PXDCSR_UR_REP_EN BIT3 /* Unsupported Request (UR) |
| Reporting Enable */ |
| #define PXDCSR_EN_RO BIT4 /* Enable Relaxed Ordering */ |
| |
| #define PXDCSR_MAX_PLD_SZ_OFFS 5 /* Maximum Payload Size */ |
| #define PXDCSR_MAX_PLD_SZ_MASK (0x7 << PXDCSR_MAX_PLD_SZ_OFFS) |
| #define PXDCSR_MAX_PLD_SZ_128B (0x0 << PXDCSR_MAX_PLD_SZ_OFFS) |
| #define PXDCSR_EN_NS BIT11 /* Enable No Snoop */ |
| |
| #define PXDCSR_MAX_RD_RQ_SZ_OFFS 12 /* Maximum Read Request Size */ |
| #define PXDCSR_MAX_RD_RQ_SZ_MASK (0x7 << PXDCSR_MAX_RD_RQ_SZ_OFFS) |
| #define PXDCSR_MAX_RD_RQ_SZ_128B (0x0 << PXDCSR_MAX_RD_RQ_SZ_OFFS) |
| #define PXDCSR_MAX_RD_RQ_SZ_256B (0x1 << PXDCSR_MAX_RD_RQ_SZ_OFFS) |
| #define PXDCSR_MAX_RD_RQ_SZ_512B (0x2 << PXDCSR_MAX_RD_RQ_SZ_OFFS) |
| #define PXDCSR_MAX_RD_RQ_SZ_1KB (0x3 << PXDCSR_MAX_RD_RQ_SZ_OFFS) |
| #define PXDCSR_MAX_RD_RQ_SZ_2KB (0x4 << PXDCSR_MAX_RD_RQ_SZ_OFFS) |
| #define PXDCSR_MAX_RD_RQ_SZ_4KB (0x5 << PXDCSR_MAX_RD_RQ_SZ_OFFS) |
| |
| #define PXDCSR_COR_ERR_DET BIT16 /* Correctable Error Detected */ |
| #define PXDCSR_NF_ERR_DET BIT17 /* Non-Fatal Error Detected. */ |
| #define PXDCSR_F_ERR_DET BIT18 /* Fatal Error Detected. */ |
| #define PXDCSR_UR_DET BIT19 /* Unsupported Request Detected */ |
| #define PXDCSR_AUX_PWR_DET BIT20 /* Reserved */ |
| |
| #define PXDCSR_TRANS_PEND_OFFS 21 /* Transactions Pending */ |
| #define PXDCSR_TRANS_PEND_MASK BIT21 |
| #define PXDCSR_TRANS_PEND_NOT_COMPLETED (0x1 << PXDCSR_TRANS_PEND_OFFS) |
| |
| /* PCI Express Link Capabilities Register */ |
| /* PEX_LINK_CAPABILITY_REG (PXLCR) */ |
| |
| #define PXLCR_MAX_LINK_SPD_OFFS 0 /* Maximum Link Speed */ |
| #define PXLCR_MAX_LINK_SPD_MASK (0xf << PXLCR_MAX_LINK_SPD_OFFS) |
| |
| #define PXLCR_MAX_LNK_WDTH_OFFS 4 /* Maximum Link Width */ |
| #define PXLCR_MAX_LNK_WDTH_MASK (0x3f << PXLCR_MAX_LNK_WDTH_OFFS) |
| |
| #define PXLCR_ASPM_SUP_OFFS 10 /* Active State Link PM Support */ |
| #define PXLCR_ASPM_SUP_MASK (0x3 << PXLCR_ASPM_SUP_OFFS) |
| |
| #define PXLCR_L0S_EXT_LAT_OFFS 12 /* L0s Exit Latency */ |
| #define PXLCR_L0S_EXT_LAT_MASK (0x7 << PXLCR_L0S_EXT_LAT_OFFS) |
| #define PXLCR_L0S_EXT_LAT_64NS_LESS (0x0 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXLCR_L0S_EXT_LAT_64NS_128NS (0x1 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXLCR_L0S_EXT_LAT_128NS_256NS (0x2 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXLCR_L0S_EXT_LAT_256NS_512NS (0x3 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXLCR_L0S_EXT_LAT_512NS_1US (0x4 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXLCR_L0S_EXT_LAT_1US_2US (0x5 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| #define PXLCR_L0S_EXT_LAT_2US_4US (0x6 << PXDCR_EP_L1_ACC_LAT_OFFS) |
| |
| #define PXLCR_POR_TNUM_OFFS 24 /* Port Number */ |
| #define PXLCR_POR_TNUM_MASK (0xff << PXLCR_POR_TNUM_OFFS) |
| |
| /* PCI Express Link Control Status Register */ |
| /* PEX_LINK_CTRL_STAT_REG (PXLCSR) */ |
| |
| #define PXLCSR_ASPM_CNT_OFFS 0 /* Active State Link PM Control */ |
| #define PXLCSR_ASPM_CNT_MASK (0x3 << PXLCSR_ASPM_CNT_OFFS) |
| #define PXLCSR_ASPM_CNT_DISABLED (0x0 << PXLCSR_ASPM_CNT_OFFS) |
| #define PXLCSR_ASPM_CNT_L0S_ENT_SUPP (0x1 << PXLCSR_ASPM_CNT_OFFS) |
| #define PXLCSR_ASPM_CNT_L1S_ENT_SUPP (0x2 << PXLCSR_ASPM_CNT_OFFS) |
| #define PXLCSR_ASPM_CNT_L0S_L1S_ENT_SUPP (0x3 << PXLCSR_ASPM_CNT_OFFS) |
| |
| #define PXLCSR_RCB_OFFS 3 /* Read Completion Boundary */ |
| #define PXLCSR_RCB_MASK BIT3 |
| #define PXLCSR_RCB_64B (0 << PXLCSR_RCB_OFFS) |
| #define PXLCSR_RCB_128B (1 << PXLCSR_RCB_OFFS) |
| |
| #define PXLCSR_LNK_DIS BIT4 /* Link Disable */ |
| #define PXLCSR_RETRN_LNK BIT5 /* Retrain Link */ |
| #define PXLCSR_CMN_CLK_CFG BIT6 /* Common Clock Configuration */ |
| #define PXLCSR_EXTD_SNC BIT7 /* Extended Sync */ |
| |
| #define PXLCSR_LNK_SPD_OFFS 16 /* Link Speed */ |
| #define PXLCSR_LNK_SPD_MASK (0xf << PXLCSR_LNK_SPD_OFFS) |
| |
| #define PXLCSR_NEG_LNK_WDTH_OFFS 20 /* Negotiated Link Width */ |
| #define PXLCSR_NEG_LNK_WDTH_MASK (0x3f << PXLCSR_NEG_LNK_WDTH_OFFS) |
| #define PXLCSR_NEG_LNK_WDTH_X1 (0x1 << PXLCSR_NEG_LNK_WDTH_OFFS) |
| |
| #define PXLCSR_NEG_LNK_GEN_OFFS 16 /* Negotiated Link GEN */ |
| #define PXLCSR_NEG_LNK_GEN_MASK (0xf << PXLCSR_NEG_LNK_GEN_OFFS) |
| #define PXLCSR_NEG_LNK_GEN_1_1 (0x1 << PXLCSR_NEG_LNK_GEN_OFFS) |
| #define PXLCSR_NEG_LNK_GEN_2_0 (0x2 << PXLCSR_NEG_LNK_GEN_OFFS) |
| |
| #define PXLCSR_LNK_TRN BIT27 /* Link Training */ |
| |
| #define PXLCSR_SLT_CLK_CFG_OFFS 28 /* Slot Clock Configuration */ |
| #define PXLCSR_SLT_CLK_CFG_MASK BIT28 |
| #define PXLCSR_SLT_CLK_CFG_INDPNT (0x0 << PXLCSR_SLT_CLK_CFG_OFFS) |
| #define PXLCSR_SLT_CLK_CFG_REF (0x1 << PXLCSR_SLT_CLK_CFG_OFFS) |
| |
| /* PCI Express Advanced Error Report Header Register */ |
| /* PEX_ADV_ERR_RPRT_HDR_TRGT_REG (PXAERHTR) */ |
| |
| /* PCI Express Uncorrectable Error Status Register */ |
| /* PEX_UNCORRECT_ERR_STAT_REG (PXUESR) */ |
| |
| /* PCI Express Uncorrectable Error Mask Register */ |
| /* PEX_UNCORRECT_ERR_MASK_REG (PXUEMR) */ |
| |
| /* PCI Express Uncorrectable Error Severity Register */ |
| /* PEX_UNCORRECT_ERR_SERVITY_REG (PXUESR) */ |
| |
| /* PCI Express Correctable Error Status Register */ |
| /* PEX_CORRECT_ERR_STAT_REG (PXCESR) */ |
| |
| /* PCI Express Correctable Error Mask Register */ |
| /* PEX_CORRECT_ERR_MASK_REG (PXCEMR) */ |
| |
| /* PCI Express Advanced Error Capability and Control Register */ |
| /* PEX_ADV_ERR_CAPABILITY_CTRL_REG (PXAECCR) */ |
| |
| /* PCI Express Header Log First DWORD Register */ |
| /* PEX_HDR_LOG_FIRST_DWORD_REG (PXHLFDR) */ |
| |
| /* PCI Express Header Log Second DWORD Register */ |
| /* PEX_HDR_LOG_SECOND_DWORD_REG (PXHLSDR) */ |
| |
| /* PCI Express Header Log Third DWORD Register */ |
| /* PEX_HDR_LOG_THIRD_DWORD_REG (PXHLTDR) */ |
| |
| /* PCI Express Header Log Fourth DWORD Register */ |
| /* PEX_HDR_LOG_FOURTH_DWORD_REG (PXHLFDR) */ |
| |
| /* 4KB granularity */ |
| #define MINIMUM_WINDOW_SIZE 0x1000 |
| #define MINIMUM_BAR_SIZE 0x1000 |
| #define MINIMUM_BAR_SIZE_MASK 0xFFFFF000 |
| #define BAR_SIZE_OFFS 12 |
| #define BAR_SIZE_MASK (0xFFFFF << BAR_SIZE_OFFS) |
| |
| #define MV_PEX_WIN_DEFAULT 6 |
| #define MV_PEX_WIN_EXP_ROM 7 |
| #define PEX_MAX_TARGET_WIN 8 |
| |
| #define PEX_MAX_BARS 3 |
| #define PEX_INTER_REGS_BAR 0 |
| #define PEX_DRAM_BAR 1 |
| #define PEX_DEVICE_BAR 2 |
| |
| /*************************************/ |
| /* PCI Express BAR Control Registers */ |
| /*************************************/ |
| #define PEX_BAR_CTRL_REG(pexIf, bar) (MV_PEX_IF_REGS_BASE(pexIf) + 0x1804 + (bar-1)*4) |
| #define PEX_EXP_ROM_BAR_CTRL_REG(pexIf) (MV_PEX_IF_REGS_BASE(pexIf) + 0x180C) |
| |
| /* PCI Express BAR Control Register */ |
| /* PEX_BAR_CTRL_REG (PXBCR) */ |
| |
| #define PXBCR_BAR_EN BIT0 |
| #define PXBCR_BAR_SIZE_OFFS 16 |
| #define PXBCR_BAR_SIZE_MASK (0xffff << PXBCR_BAR_SIZE_OFFS) |
| #define PXBCR_BAR_SIZE_ALIGNMENT 0x10000 |
| |
| /* PCI Express Expansion ROM BAR Control Register */ |
| /* PEX_EXP_ROM_BAR_CTRL_REG (PXERBCR) */ |
| |
| #define PXERBCR_EXPROM_EN BIT0 |
| #define PXERBCR_EXPROMSZ_OFFS 19 |
| #define PXERBCR_EXPROMSZ_MASK (0xf << PXERBCR_EXPROMSZ_OFFS) |
| #define PXERBCR_EXPROMSZ_512KB (0x0 << PXERBCR_EXPROMSZ_OFFS) |
| #define PXERBCR_EXPROMSZ_1024KB (0x1 << PXERBCR_EXPROMSZ_OFFS) |
| #define PXERBCR_EXPROMSZ_2048KB (0x3 << PXERBCR_EXPROMSZ_OFFS) |
| #define PXERBCR_EXPROMSZ_4096KB (0x7 << PXERBCR_EXPROMSZ_OFFS) |
| |
| /************************************************/ |
| /* PCI Express Address Window Control Registers */ |
| /************************************************/ |
| #define PEX_WIN0_3_CTRL_REG(pexIf, winNum) \ |
| (MV_PEX_IF_REGS_BASE(pexIf) + 0x1820 + (winNum) * 0x10) |
| #define PEX_WIN0_3_BASE_REG(pexIf, winNum) \ |
| (MV_PEX_IF_REGS_BASE(pexIf) + 0x1824 + (winNum) * 0x10) |
| #define PEX_WIN0_3_REMAP_REG(pexIf, winNum) \ |
| (MV_PEX_IF_REGS_BASE(pexIf) + 0x182C + (winNum) * 0x10) |
| #define PEX_WIN4_5_CTRL_REG(pexIf, winNum) \ |
| (MV_PEX_IF_REGS_BASE(pexIf) + 0x1860 + (winNum - 4) * 0x20) |
| #define PEX_WIN4_5_BASE_REG(pexIf, winNum) \ |
| (MV_PEX_IF_REGS_BASE(pexIf) + 0x1864 + (winNum - 4) * 0x20) |
| #define PEX_WIN4_5_REMAP_REG(pexIf, winNum) \ |
| (MV_PEX_IF_REGS_BASE(pexIf) + 0x186C + (winNum - 4) * 0x20) |
| #define PEX_WIN4_5_REMAP_HIGH_REG(pexIf, winNum) \ |
| (MV_PEX_IF_REGS_BASE(pexIf) + 0x1870 + (winNum - 4) * 0x20) |
| |
| #define PEX_WIN_DEFAULT_CTRL_REG(pexIf) (MV_PEX_IF_REGS_BASE(pexIf) + 0x18B0) |
| #define PEX_WIN_EXP_ROM_CTRL_REG(pexIf) (MV_PEX_IF_REGS_BASE(pexIf) + 0x18C0) |
| #define PEX_WIN_EXP_ROM_REMAP_REG(pexIf) (MV_PEX_IF_REGS_BASE(pexIf) + 0x18C4) |
| |
| /* PCI Express Window Control Register */ |
| /* PEX_WIN_CTRL_REG (PXWCR) */ |
| |
| #define PXWCR_WIN_EN BIT0 /* Window Enable. */ |
| |
| #define PXWCR_WIN_BAR_MAP_OFFS 1 /* Mapping to BAR. */ |
| #define PXWCR_WIN_BAR_MAP_MASK BIT1 |
| #define PXWCR_WIN_BAR_MAP_BAR1 (0 << PXWCR_WIN_BAR_MAP_OFFS) |
| #define PXWCR_WIN_BAR_MAP_BAR2 (1 << PXWCR_WIN_BAR_MAP_OFFS) |
| |
| #define PXWCR_TARGET_OFFS 4 /*Unit ID */ |
| #define PXWCR_TARGET_MASK (0xf << PXWCR_TARGET_OFFS) |
| |
| #define PXWCR_ATTRIB_OFFS 8 /* target attributes */ |
| #define PXWCR_ATTRIB_MASK (0xff << PXWCR_ATTRIB_OFFS) |
| |
| #define PXWCR_SIZE_OFFS 16 /* size */ |
| #define PXWCR_SIZE_MASK (0xffff << PXWCR_SIZE_OFFS) |
| #define PXWCR_SIZE_ALIGNMENT 0x10000 |
| |
| /* PCI Express Window Base Register */ |
| /* PEX_WIN_BASE_REG (PXWBR) */ |
| |
| #define PXWBR_BASE_OFFS 16 /* address[31:16] */ |
| #define PXWBR_BASE_MASK (0xffff << PXWBR_BASE_OFFS) |
| #define PXWBR_BASE_ALIGNMENT 0x10000 |
| |
| /* PCI Express Window Remap Register */ |
| /* PEX_WIN_REMAP_REG (PXWRR) */ |
| |
| #define PXWRR_REMAP_EN BIT0 |
| #define PXWRR_REMAP_OFFS 16 |
| #define PXWRR_REMAP_MASK (0xffff << PXWRR_REMAP_OFFS) |
| #define PXWRR_REMAP_ALIGNMENT 0x10000 |
| |
| /* PCI Express Window Remap (High) Register */ |
| /* PEX_WIN_REMAP_HIGH_REG (PXWRHR) */ |
| |
| #define PXWRHR_REMAP_HIGH_OFFS 0 |
| #define PXWRHR_REMAP_HIGH_MASK (0xffffffff << PXWRHR_REMAP_HIGH_OFFS) |
| |
| /* PCI Express Default Window Control Register */ |
| /* PEX_WIN_DEFAULT_CTRL_REG (PXWDCR) */ |
| |
| #define PXWDCR_TARGET_OFFS 4 /*Unit ID */ |
| #define PXWDCR_TARGET_MASK (0xf << PXWDCR_TARGET_OFFS) |
| #define PXWDCR_ATTRIB_OFFS 8 /* target attributes */ |
| #define PXWDCR_ATTRIB_MASK (0xff << PXWDCR_ATTRIB_OFFS) |
| |
| /* PCI Express Expansion ROM Window Control Register */ |
| /* PEX_WIN_EXP_ROM_CTRL_REG (PXWERCR) */ |
| |
| #define PXWERCR_TARGET_OFFS 4 /*Unit ID */ |
| #define PXWERCR_TARGET_MASK (0xf << PXWERCR_TARGET_OFFS) |
| #define PXWERCR_ATTRIB_OFFS 8 /* target attributes */ |
| #define PXWERCR_ATTRIB_MASK (0xff << PXWERCR_ATTRIB_OFFS) |
| |
| /* PCI Express Expansion ROM Window Remap Register */ |
| /* PEX_WIN_EXP_ROM_REMAP_REG (PXWERRR) */ |
| |
| #define PXWERRR_REMAP_EN BIT0 |
| #define PXWERRR_REMAP_OFFS 16 |
| #define PXWERRR_REMAP_MASK (0xffff << PXWERRR_REMAP_OFFS) |
| #define PXWERRR_REMAP_ALIGNMENT 0x10000 |
| |
| /* PEX_MEMORY_BAR_BASE_ADDR(barNum) (PXMBBA) */ |
| /* PCI Express BAR0 Internal Register */ |
| /* PEX BAR0_INTER_REG (PXBIR) */ |
| |
| #define PXBIR_IOSPACE BIT0 /* Memory Space Indicator */ |
| |
| #define PXBIR_TYPE_OFFS 1 /* BAR Type/Init Val. */ |
| #define PXBIR_TYPE_MASK (0x3 << PXBIR_TYPE_OFFS) |
| #define PXBIR_TYPE_32BIT_ADDR (0x0 << PXBIR_TYPE_OFFS) |
| #define PXBIR_TYPE_64BIT_ADDR (0x2 << PXBIR_TYPE_OFFS) |
| |
| #define PXBIR_PREFETCH_EN BIT3 /* Prefetch Enable */ |
| |
| #define PXBIR_BASE_OFFS 20 /* Base address. Address bits [31:20] */ |
| #define PXBIR_BASE_MASK (0xfff << PXBIR_BASE_OFFS) |
| #define PXBIR_BASE_ALIGNMET (1 << PXBIR_BASE_OFFS) |
| |
| /* PCI Express BAR0 Internal (High) Register */ |
| /* PEX BAR0_INTER_REG_HIGH (PXBIRH) */ |
| |
| #define PXBIRH_BASE_OFFS 0 /* Base address. Bits [63:32] */ |
| #define PXBIRH_BASE_MASK (0xffffffff << PBBHR_BASE_OFFS) |
| |
| #define PEX_BAR_DEFAULT_ATTRIB 0xc /* Memory - Prefetch - 64 bit address */ |
| #define PEX_BAR0_DEFAULT_ATTRIB PEX_BAR_DEFAULT_ATTRIB |
| #define PEX_BAR1_DEFAULT_ATTRIB PEX_BAR_DEFAULT_ATTRIB |
| #define PEX_BAR2_DEFAULT_ATTRIB PEX_BAR_DEFAULT_ATTRIB |
| |
| /* PCI Express BAR1 Register */ |
| /* PCI Express BAR2 Register */ |
| /* PEX BAR1_REG (PXBR) */ |
| /* PEX BAR2_REG (PXBR) */ |
| |
| #define PXBR_IOSPACE BIT0 /* Memory Space Indicator */ |
| |
| #define PXBR_TYPE_OFFS 1 /* BAR Type/Init Val. */ |
| #define PXBR_TYPE_MASK (0x3 << PXBR_TYPE_OFFS) |
| #define PXBR_TYPE_32BIT_ADDR (0x0 << PXBR_TYPE_OFFS) |
| #define PXBR_TYPE_64BIT_ADDR (0x2 << PXBR_TYPE_OFFS) |
| |
| #define PXBR_PREFETCH_EN BIT3 /* Prefetch Enable */ |
| |
| #define PXBR_BASE_OFFS 16 /* Base address. Address bits [31:16] */ |
| #define PXBR_BASE_MASK (0xffff << PXBR_BASE_OFFS) |
| #define PXBR_BASE_ALIGNMET (1 << PXBR_BASE_OFFS) |
| |
| /* PCI Express BAR1 (High) Register */ |
| /* PCI Express BAR2 (High) Register */ |
| /* PEX BAR1_REG_HIGH (PXBRH) */ |
| /* PEX BAR2_REG_HIGH (PXBRH) */ |
| |
| #define PXBRH_BASE_OFFS 0 /* Base address. Address bits [63:32] */ |
| #define PXBRH_BASE_MASK (0xffffffff << PXBRH_BASE_OFFS) |
| |
| /* PCI Express Expansion ROM BAR Register */ |
| /* PEX_EXPANSION_ROM_BASE_ADDR_REG (PXERBAR) */ |
| |
| #define PXERBAR_EXPROMEN BIT0 /* Expansion ROM Enable */ |
| |
| #define PXERBAR_BASE_512K_OFFS 19 /* Expansion ROM Base Address */ |
| #define PXERBAR_BASE_512K_MASK (0x1fff << PXERBAR_BASE_512K_OFFS) |
| |
| #define PXERBAR_BASE_1MB_OFFS 20 /* Expansion ROM Base Address */ |
| #define PXERBAR_BASE_1MB_MASK (0xfff << PXERBAR_BASE_1MB_OFFS) |
| |
| #define PXERBAR_BASE_2MB_OFFS 21 /* Expansion ROM Base Address */ |
| #define PXERBAR_BASE_2MB_MASK (0x7ff << PXERBAR_BASE_2MB_OFFS) |
| |
| #define PXERBAR_BASE_4MB_OFFS 22 /* Expansion ROM Base Address */ |
| #define PXERBAR_BASE_4MB_MASK (0x3ff << PXERBAR_BASE_4MB_OFFS) |
| |
| #ifdef __cplusplus |
| } |
| #endif /* __cplusplus */ |
| #endif /* #ifndef __INCPEXREGSH */ |