blob: 1d7d90b7ea45e770166ca8f55191cccda99a783b [file] [log] [blame]
/*******************************************************************************
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(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 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_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_ACK_TMR_4X_REG(pexIf) ((MV_PEX_IF_REGS_BASE(pexIf)) + 0x1A30)
#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)
/* 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_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 PXLC_MAX_LNK_SPEED_OFFS 0
#define PXLC_MAX_LNK_SPEED_MASK (0xf << PXLC_MAX_LNK_SPEED_OFFS)
#define PEX_LINK_CTRL_STAT_REG 0x70
#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 3 /* 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_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 */