blob: 4692bee77e4c1db9453dd1bb25bb1c25cb460530 [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 __INCPCIREGSH
#define __INCPCIREGSH
#include "mvSysPciConfig.h"
/* defines */
#define MAX_PCI_DEVICES 32
#define MAX_PCI_FUNCS 8
#define MAX_PCI_BUSSES 128
/*************************/
/* PCI control registers */
/*************************/
/* maen : should add new registers */
#define PCI_CMD_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x0c00 + ((pciIf) * 0x80))
#define PCI_MODE_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x0d00 + ((pciIf) * 0x80))
#define PCI_RETRY_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x0c04 + ((pciIf) * 0x80))
#define PCI_DISCARD_TIMER_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x0d04 + ((pciIf) * 0x80))
#define PCI_ARBITER_CTRL_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d00 + ((pciIf) * 0x80))
#define PCI_P2P_CONFIG_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d14 + ((pciIf) * 0x80))
#define PCI_ACCESS_CTRL_BASEL_REG(pciIf, targetWin) \
(MV_PCI_IF_REGS_BASE(pciIf) + 0x1e00 + ((pciIf) * 0x80) + ((targetWin) * 0x10))
#define PCI_ACCESS_CTRL_BASEH_REG(pciIf, targetWin) \
(MV_PCI_IF_REGS_BASE(pciIf) + 0x1e04 + ((pciIf) * 0x80) + ((targetWin) * 0x10))
#define PCI_ACCESS_CTRL_SIZE_REG(pciIf, targetWin) \
(MV_PCI_IF_REGS_BASE(pciIf) + 0x1e08 + ((pciIf) * 0x80) + ((targetWin) * 0x10))
#define PCI_DLL_CTRL_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d20 + ((pciIf) * 0x80))
/* PCI Dll Control (PDC)*/
#define PDC_DLL_EN BIT0
/* PCI Command Register (PCR) */
#define PCR_MASTER_BYTE_SWAP_EN BIT0
#define PCR_MASTER_WR_COMBINE_EN BIT4
#define PCR_MASTER_RD_COMBINE_EN BIT5
#define PCR_MASTER_WR_TRIG_WHOLE BIT6
#define PCR_MASTER_RD_TRIG_WHOLE BIT7
#define PCR_MASTER_MEM_RD_LINE_EN BIT8
#define PCR_MASTER_MEM_RD_MULT_EN BIT9
#define PCR_MASTER_WORD_SWAP_EN BIT10
#define PCR_SLAVE_WORD_SWAP_EN BIT11
#define PCR_NS_ACCORDING_RCV_TRANS BIT14
#define PCR_MASTER_PCIX_REQ64N_EN BIT15
#define PCR_SLAVE_BYTE_SWAP_EN BIT16
#define PCR_MASTER_DAC_EN BIT17
#define PCR_MASTER_M64_ALLIGN BIT18
#define PCR_ERRORS_PROPAGATION_EN BIT19
#define PCR_SLAVE_SWAP_ENABLE BIT20
#define PCR_MASTER_SWAP_ENABLE BIT21
#define PCR_MASTER_INT_SWAP_EN BIT22
#define PCR_LOOP_BACK_ENABLE BIT23
#define PCR_SLAVE_INTREG_SWAP_OFFS 24
#define PCR_SLAVE_INTREG_SWAP_MASK 0x3
#define PCR_SLAVE_INTREG_BYTE_SWAP (MV_BYTE_SWAP << PCR_SLAVE_INT_REG_SWAP_MASK)
#define PCR_SLAVE_INTREG_NO_SWAP (MV_NO_SWAP << PCR_SLAVE_INT_REG_SWAP_MASK)
#define PCR_SLAVE_INTREG_BYTE_WORD (MV_BYTE_WORD_SWAP << PCR_SLAVE_INT_REG_SWAP_MASK)
#define PCR_SLAVE_INTREG_WORD_SWAP (MV_WORD_SWAP << PCR_SLAVE_INT_REG_SWAP_MASK)
#define PCR_RESET_REASSERTION_EN BIT26
#define PCR_PCI_TO_CPU_REG_ORDER_EN BIT28
#define PCR_CPU_TO_PCI_ORDER_EN BIT29
#define PCR_PCI_TO_CPU_ORDER_EN BIT30
/* PCI Mode Register (PMR) */
#define PMR_PCI_ID_OFFS 0 /* PCI Interface ID */
#define PMR_PCI_ID_MASK (0x1 << PMR_PCI_ID_OFFS)
#define PMR_PCI_ID_PCI(pciNum) ((pciNum) << PCI_MODE_PCIID_OFFS)
#define PMR_PCI_64_OFFS 2 /* 64-bit PCI Interface */
#define PMR_PCI_64_MASK (0x1 << PMR_PCI_64_OFFS)
#define PMR_PCI_64_64BIT (0x1 << PMR_PCI_64_OFFS)
#define PMR_PCI_64_32BIT (0x0 << PMR_PCI_64_OFFS)
#define PMR_PCI_MODE_OFFS 4 /* PCI interface mode of operation */
#define PMR_PCI_MODE_MASK (0x3 << PMR_PCI_MODE_OFFS)
#define PMR_PCI_MODE_CONV (0x0 << PMR_PCI_MODE_OFFS)
#define PMR_PCI_MODE_PCIX_66MHZ (0x1 << PMR_PCI_MODE_OFFS)
#define PMR_PCI_MODE_PCIX_100MHZ (0x2 << PMR_PCI_MODE_OFFS)
#define PMR_PCI_MODE_PCIX_133MHZ (0x3 << PMR_PCI_MODE_OFFS)
#define PMR_EXP_ROM_SUPPORT BIT8 /* Expansion ROM Active */
#define PMR_PCI_RESET_OFFS 31 /* PCI Interface Reset Indication */
#define PMR_PCI_RESET_MASK (0x1 << PMR_PCI_RESET_OFFS)
#define PMR_PCI_RESET_PCIXRST (0x0 << PMR_PCI_RESET_OFFS)
/* PCI Retry Register (PRR) */
#define PRR_RETRY_CNTR_OFFS 16 /* Retry Counter */
#define PRR_RETRY_CNTR_MAX 0xff
#define PRR_RETRY_CNTR_MASK (PRR_RETRY_CNTR_MAX << PRR_RETRY_CNTR_OFFS)
/* PCI Discard Timer Register (PDTR) */
#define PDTR_TIMER_OFFS 0 /* Timer */
#define PDTR_TIMER_MAX 0xffff
#define PDTR_TIMER_MIN 0x7F
#define PDTR_TIMER_MASK (PDTR_TIMER_MAX << PDTR_TIMER_OFFS)
/* PCI Arbiter Control Register (PACR) */
#define PACR_BROKEN_DETECT_EN BIT1 /* Broken Detection Enable */
#define PACR_BROKEN_VAL_OFFS 3 /* Broken Value */
#define PACR_BROKEN_VAL_MASK (0xf << PACR_BROKEN_VAL_OFFS)
#define PACR_BROKEN_VAL_CONV_MIN 0x2
#define PACR_BROKEN_VAL_PCIX_MIN 0x6
#define PACR_PARK_DIS_OFFS 14 /* Parking Disable */
#define PACR_PARK_DIS_MAX_AGENT 0x3f
#define PACR_PARK_DIS_MASK (PACR_PARK_DIS_MAX_AGENT<<PACR_PARK_DIS_OFFS)
#define PACR_PARK_DIS(agent) ((1 << (agent)) << PACR_PARK_DIS_OFFS)
#define PACR_ARB_ENABLE BIT31 /* Enable Internal Arbiter */
/* PCI P2P Configuration Register (PPCR) */
#define PPCR_2ND_BUS_L_OFFS 0 /* 2nd PCI Interface Bus Range Lower */
#define PPCR_2ND_BUS_L_MASK (0xff << PPCR_2ND_BUS_L_OFFS)
#define PPCR_2ND_BUS_H_OFFS 8 /* 2nd PCI Interface Bus Range Upper */
#define PPCR_2ND_BUS_H_MASK (0xff << PPCR_2ND_BUS_H_OFFS)
#define PPCR_BUS_NUM_OFFS 16 /* The PCI interface's Bus number */
#define PPCR_BUS_NUM_MASK (0xff << PPCR_BUS_NUM_OFFS)
#define PPCR_DEV_NUM_OFFS 24 /* The PCI interface’s Device number */
#define PPCR_DEV_NUM_MASK (0xff << PPCR_DEV_NUM_OFFS)
/* PCI Access Control Base Low Register (PACBLR) */
#define PACBLR_EN BIT0 /* Access control window enable */
#define PACBLR_SNOOP BIT2 /* I/O Cache Coherncy */
#define PACBLR_SNOOP_OFFS 2
#define PACBLR_ACCPROT BIT4 /* Access Protect */
#define PACBLR_WRPROT BIT5 /* Write Protect */
#define PACBLR_PCISWAP_OFFS 6 /* PCI slave Data Swap Control */
#define PACBLR_PCISWAP_MASK (0x3 << PACBLR_PCISWAP_OFFS)
#define PACBLR_PCISWAP_BYTE (0x0 << PACBLR_PCISWAP_OFFS)
#define PACBLR_PCISWAP_NO_SWAP (0x1 << PACBLR_PCISWAP_OFFS)
#define PACBLR_PCISWAP_BYTE_WORD (0x2 << PACBLR_PCISWAP_OFFS)
#define PACBLR_PCISWAP_WORD (0x3 << PACBLR_PCISWAP_OFFS)
#define PACBLR_RDMBURST_OFFS 8 /* Read Max Burst */
#define PACBLR_RDMBURST_MASK (0x3 << PACBLR_RDMBURST_OFFS)
#define PACBLR_RDMBURST_32BYTE (0x0 << PACBLR_RDMBURST_OFFS)
#define PACBLR_RDMBURST_64BYTE (0x1 << PACBLR_RDMBURST_OFFS)
#define PACBLR_RDMBURST_128BYTE (0x2 << PACBLR_RDMBURST_OFFS)
#define PACBLR_RDSIZE_OFFS 10 /* Typical PCI read transaction Size. */
#define PACBLR_RDSIZE_MASK (0x3 << PACBLR_RDSIZE_OFFS)
#define PACBLR_RDSIZE_32BYTE (0x0 << PACBLR_RDSIZE_OFFS)
#define PACBLR_RDSIZE_64BYTE (0x1 << PACBLR_RDSIZE_OFFS)
#define PACBLR_RDSIZE_128BYTE (0x2 << PACBLR_RDSIZE_OFFS)
#define PACBLR_RDSIZE_256BYTE (0x3 << PACBLR_RDSIZE_OFFS)
#define PACBLR_BASE_L_OFFS 12 /* Corresponds to address bits [31:12] */
#define PACBLR_BASE_L_MASK (0xfffff << PACBLR_BASE_L_OFFS)
#define PACBLR_BASE_L_ALIGNMENT (1 << PACBLR_BASE_L_OFFS)
#define PACBLR_BASE_ALIGN_UP(base) ((base+PACBLR_BASE_L_ALIGNMENT)&PACBLR_BASE_L_MASK)
#define PACBLR_BASE_ALIGN_DOWN(base) (base & PACBLR_BASE_L_MASK)
/* PCI Access Control Base High Register (PACBHR) */
#define PACBHR_BASE_H_OFFS 0 /* Corresponds to address bits [63:32] */
#define PACBHR_CTRL_BASE_H_MASK (0xffffffff << PACBHR_BASE_H_OFFS)
/* PCI Access Control Size Register (PACSR) */
#define PACSR_WRMBURST_OFFS 8 /* Write Max Burst */
#define PACSR_WRMBURST_MASK (0x3 << PACSR_WRMBURST_OFFS)
#define PACSR_WRMBURST_32BYTE (0x0 << PACSR_WRMBURST_OFFS)
#define PACSR_WRMBURST_64BYTE (0x1 << PACSR_WRMBURST_OFFS)
#define PACSR_WRMBURST_128BYTE (0x2 << PACSR_WRMBURST_OFFS)
#define PACSR_PCI_ORDERING BIT11 /* PCI Ordering required */
#define PACSR_SIZE_OFFS 12 /* PCI access window size */
#define PACSR_SIZE_MASK (0xfffff << PACSR_SIZE_OFFS)
#define PACSR_SIZE_ALIGNMENT (1 << PACSR_SIZE_OFFS)
#define PACSR_SIZE_ALIGN_UP(size) ((size+PACSR_SIZE_ALIGNMENT)&PACSR_SIZE_MASK)
#define PACSR_SIZE_ALIGN_DOWN(size) (size & PACSR_SIZE_MASK)
/***************************************/
/* PCI Configuration Access Registers */
/***************************************/
#define PCI_CONFIG_ADDR_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x0C78 - ((pciIf) * 0x80) )
#define PCI_CONFIG_DATA_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x0C7C - ((pciIf) * 0x80) )
#define PCI_INT_ACK_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x0C34 + ((pciIf) * 0x80) )
/* PCI Configuration Address Register (PCAR) */
#define PCAR_REG_NUM_OFFS 2
#define PCAR_REG_NUM_MASK (0x3F << PCAR_REG_NUM_OFFS)
#define PCAR_FUNC_NUM_OFFS 8
#define PCAR_FUNC_NUM_MASK (0x7 << PCAR_FUNC_NUM_OFFS)
#define PCAR_DEVICE_NUM_OFFS 11
#define PCAR_DEVICE_NUM_MASK (0x1F << PCAR_DEVICE_NUM_OFFS)
#define PCAR_BUS_NUM_OFFS 16
#define PCAR_BUS_NUM_MASK (0xFF << PCAR_BUS_NUM_OFFS)
#define PCAR_CONFIG_EN BIT31
/*********************************************/
/* PCI Configuration, Function 0, Registers */
/*********************************************/
#define PCI_DEVICE_AND_VENDOR_ID 0x000
#define PCI_STATUS_AND_COMMAND 0x004
#define PCI_CLASS_CODE_AND_REVISION_ID 0x008
#define PCI_BIST_HDR_TYPE_LAT_TMR_CACHE_LINE 0x00C
/* #define PCI_MEMORY_BAR_BASE_ADDR(barNum) (0x010 + ((barNum) << 2)) */
#define PCI_SCS0_BASE_ADDR_LOW 0x010
#define PCI_SCS0_BASE_ADDR_HIGH 0x014
#define PCI_SCS1_BASE_ADDR_LOW 0x018
#define PCI_SCS1_BASE_ADDR_HIGH 0x01C
#define PCI_INTER_REG_MEM_MAPPED_BASE_ADDR_L 0x020
#define PCI_INTER_REG_MEM_MAPPED_BASE_ADDR_H 0x024
#define PCI_SUBSYS_ID_AND_SUBSYS_VENDOR_ID 0x02C
#define PCI_EXPANSION_ROM_BASE_ADDR_REG 0x030
#define PCI_CAPABILTY_LIST_POINTER 0x034
#define PCI_INTERRUPT_PIN_AND_LINE 0x03C
/* capability list */
#define PCI_POWER_MNG_CAPABILITY 0x040
#define PCI_POWER_MNG_STATUS_CONTROL 0x044
#define PCI_VPD_ADDRESS_REG 0x048
#define PCI_VPD_DATA_REG 0x04c
#define PCI_MSI_MESSAGE_CONTROL 0x050
#define PCI_MSI_MESSAGE_ADDR 0x054
#define PCI_MSI_MESSAGE_UPPER_ADDR 0x058
#define PCI_MSI_MESSAGE_DATA 0x05c
#define PCIX_COMMAND 0x060
#define PCIX_STATUS 0x064
#define PCI_COMPACT_PCI_HOT_SWAP 0x068
/* PCI Device and Vendor ID Register (PDVIR) */
#define PDVIR_VEN_ID_OFFS 0 /* Vendor ID */
#define PDVIR_VEN_ID_MASK (0xffff << PDVIR_VEN_ID_OFFS)
#define PDVIR_DEV_ID_OFFS 16 /* Device ID */
#define PDVIR_DEV_ID_MASK (0xffff << PDVIR_DEV_ID_OFFS)
/* PCI Status and Command Register (PSCR) */
#define PSCR_IO_EN BIT0 /* IO Enable */
#define PSCR_MEM_EN BIT1 /* Memory Enable */
#define PSCR_MASTER_EN BIT2 /* Master Enable */
#define PSCR_SPECIAL_EN BIT3 /* Special Cycle Enable */
#define PSCR_MEM_WRI_INV BIT4 /* Memory Write and Invalidate Enable */
#define PSCR_VGA BIT5 /* VGA Palette Snoops */
#define PSCR_PERR_EN BIT6 /* Parity Errors Respond Enable */
#define PSCR_ADDR_STEP BIT7 /* Address Stepping Enable (Wait Cycle En)*/
#define PSCR_SERR_EN BIT8 /* Ability to assert SERR# line */
#define PSCR_FAST_BTB_EN BIT9 /* generate fast back-to-back transactions*/
#define PSCR_CAP_LIST BIT20 /* Capability List Support */
#define PSCR_66MHZ_EN BIT21 /* 66 MHz Capable */
#define PSCR_UDF_EN BIT22 /* User definable features */
#define PSCR_TAR_FAST_BB BIT23 /* fast back-to-back transactions capable */
#define PSCR_DATA_PERR BIT24 /* Data Parity reported */
#define PSCR_DEVSEL_TIM_OFFS 25 /* DEVSEL timing */
#define PSCR_DEVSEL_TIM_MASK (0x3 << PSCR_DEVSEL_TIM_OFFS)
#define PSCR_DEVSEL_TIM_FAST (0x0 << PSCR_DEVSEL_TIM_OFFS)
#define PSCR_DEVSEL_TIM_MED (0x1 << PSCR_DEVSEL_TIM_OFFS)
#define PSCR_DEVSEL_TIM_SLOW (0x2 << PSCR_DEVSEL_TIM_OFFS)
#define PSCR_SLAVE_TABORT BIT27 /* Signalled Target Abort */
#define PSCR_MASTER_TABORT BIT28 /* Recieved Target Abort */
#define PSCR_MABORT BIT29 /* Recieved Master Abort */
#define PSCR_SYSERR BIT30 /* Signalled system error */
#define PSCR_DET_PARERR BIT31 /* Detect Parity Error */
/* PCI configuration register offset=0x08 fields (PCI_CLASS_CODE_AND_REVISION_ID)(PCCRI) */
#define PCCRIR_REVID_OFFS 0 /* Revision ID */
#define PCCRIR_REVID_MASK (0xff << PCCRIR_REVID_OFFS)
#define PCCRIR_FULL_CLASS_OFFS 8 /* Full Class Code */
#define PCCRIR_FULL_CLASS_MASK (0xffffff << PCCRIR_FULL_CLASS_OFFS)
#define PCCRIR_PROGIF_OFFS 8 /* Prog .I/F*/
#define PCCRIR_PROGIF_MASK (0xff << PCCRIR_PROGIF_OFFS)
#define PCCRIR_SUB_CLASS_OFFS 16 /* Sub Class*/
#define PCCRIR_SUB_CLASS_MASK (0xff << PCCRIR_SUB_CLASS_OFFS)
#define PCCRIR_BASE_CLASS_OFFS 24 /* Base Class*/
#define PCCRIR_BASE_CLASS_MASK (0xff << PCCRIR_BASE_CLASS_OFFS)
/* PCI configuration register offset=0x0C fields
(PCI_BIST_HEADER_TYPE_LATENCY_TIMER_CACHE_LINE)(PBHTLTCL) */
#define PBHTLTCLR_CACHELINE_OFFS 0 /* Specifies the cache line size */
#define PBHTLTCLR_CACHELINE_MASK (0xff << PBHTLTCLR_CACHELINE_OFFS)
#define PBHTLTCLR_LATTIMER_OFFS 8 /* latency timer */
#define PBHTLTCLR_LATTIMER_MASK (0xff << PBHTLTCLR_LATTIMER_OFFS)
#define PBHTLTCLR_HEADTYPE_FULL_OFFS 16 /* Full Header Type */
#define PBHTLTCLR_HEADTYPE_FULL_MASK (0xff << PBHTLTCLR_HEADTYPE_FULL_OFFS)
#define PBHTLTCLR_MULTI_FUNC BIT23 /* Multi/Single function */
#define PBHTLTCLR_HEADER_OFFS 16 /* Header type */
#define PBHTLTCLR_HEADER_MASK (0x7f << PBHTLTCLR_HEADER_OFFS)
#define PBHTLTCLR_HEADER_STANDARD (0x0 << PBHTLTCLR_HEADER_OFFS)
#define PBHTLTCLR_HEADER_PCI2PCI_BRIDGE (0x1 << PBHTLTCLR_HEADER_OFFS)
#define PBHTLTCLR_BISTCOMP_OFFS 24 /* BIST Completion Code */
#define PBHTLTCLR_BISTCOMP_MASK (0xf << PBHTLTCLR_BISTCOMP_OFFS)
#define PBHTLTCLR_BISTACT BIT30 /* BIST Activate bit */
#define PBHTLTCLR_BISTCAP BIT31 /* BIST Capable Bit */
/* PCI Bar Base Low Register (PBBLR) */
#define PBBLR_IOSPACE BIT0 /* Memory Space Indicator */
#define PBBLR_TYPE_OFFS 1 /* BAR Type/Init Val. */
#define PBBLR_TYPE_MASK (0x3 << PBBLR_TYPE_OFFS)
#define PBBLR_TYPE_32BIT_ADDR (0x0 << PBBLR_TYPE_OFFS)
#define PBBLR_TYPE_64BIT_ADDR (0x2 << PBBLR_TYPE_OFFS)
#define PBBLR_PREFETCH_EN BIT3 /* Prefetch Enable */
#define PBBLR_MEM_BASE_OFFS 4 /* Memory Bar Base address. Corresponds to address bits [31:4] */
#define PBBLR_MEM_BASE_MASK (0xfffffff << PBBLR_MEM_BASE_OFFS)
#define PBBLR_IO_BASE_OFFS 2 /* IO Bar Base address. Corresponds to address bits [31:2] */
#define PBBLR_IO_BASE_MASK (0x3fffffff << PBBLR_IO_BASE_OFFS)
#define PBBLR_BASE_OFFS 12 /* Base address. Address bits [31:12] */
#define PBBLR_BASE_MASK (0xfffff << PBBLR_BASE_OFFS)
#define PBBLR_BASE_ALIGNMET (1 << PBBLR_BASE_OFFS)
/* PCI Bar Base High Fegister (PBBHR) */
#define PBBHR_BASE_OFFS 0 /* Base address. Address bits [31:12] */
#define PBBHR_BASE_MASK (0xffffffff << PBBHR_BASE_OFFS)
/* PCI configuration register offset=0x2C fields (PCI_SUBSYSTEM_ID_AND_SUBSYSTEM_VENDOR_ID)(PSISVI) */
#define PSISVIR_VENID_OFFS 0 /* Subsystem Manufacturer Vendor ID Number */
#define PSISVIR_VENID_MASK (0xffff << PSISVIR_VENID_OFFS)
#define PSISVIR_DEVID_OFFS 16 /* Subsystem Device ID Number */
#define PSISVIR_DEVID_MASK (0xffff << PSISVIR_DEVID_OFFS)
/* PCI configuration register offset=0x30 fields (PCI_EXPANSION_ROM_BASE_ADDR_REG)(PERBA) */
#define PERBAR_EXPROMEN BIT0 /* Expansion ROM Enable */
#define PERBAR_BASE_OFFS 12 /* Expansion ROM Base Address */
#define PERBAR_BASE_MASK (0xfffff << PERBAR_BASE_OFFS)
/* PCI configuration register offset=0x34 fields (PCI_CAPABILTY_LIST_POINTER)(PCLP) */
#define PCLPR_CAPPTR_OFFS 0 /* Capability List Pointer */
#define PCLPR_CAPPTR_MASK (0xff << PCLPR_CAPPTR_OFFS)
/* PCI configuration register offset=0x3C fields (PCI_INTERRUPT_PIN_AND_LINE)(PIPL) */
#define PIPLR_INTLINE_OFFS 0 /* Interrupt line (IRQ) */
#define PIPLR_INTLINE_MASK (0xff << PIPLR_INTLINE_OFFS)
#define PIPLR_INTPIN_OFFS 8 /* interrupt pin (A,B,C,D) */
#define PIPLR_INTPIN_MASK (0xff << PIPLR_INTPIN_OFFS)
#define PIPLR_MINGRANT_OFFS 16 /* Minimum Grant on 250 nano seconds units */
#define PIPLR_MINGRANT_MASK (0xff << PIPLR_MINGRANT_OFFS)
#define PIPLR_MAXLATEN_OFFS 24 /* Maximum latency on 250 nano seconds units */
#define PIPLR_MAXLATEN_MASK (0xff << PIPLR_MAXLATEN_OFFS)
/*********************************************/
/* PCI Configuration, Function 1, Registers */
/*********************************************/
#define PCI_SCS2_BASE_ADDR_LOW 0x10
#define PCI_SCS2_BASE_ADDR_HIGH 0x14
#define PCI_SCS3_BASE_ADDR_LOW 0x18
#define PCI_SCS3_BASE_ADDR_HIGH 0x1c
/***********************************************/
/* PCI Configuration, Function 2, Registers */
/***********************************************/
#define PCI_DEVCS0_BASE_ADDR_LOW 0x10
#define PCI_DEVCS0_BASE_ADDR_HIGH 0x14
#define PCI_DEVCS1_BASE_ADDR_LOW 0x18
#define PCI_DEVCS1_BASE_ADDR_HIGH 0x1c
#define PCI_DEVCS2_BASE_ADDR_LOW 0x20
#define PCI_DEVCS2_BASE_ADDR_HIGH 0x24
/***********************************************/
/* PCI Configuration, Function 3, Registers */
/***********************************************/
#define PCI_BOOTCS_BASE_ADDR_LOW 0x18
#define PCI_BOOTCS_BASE_ADDR_HIGH 0x1c
/***********************************************/
/* PCI Configuration, Function 4, Registers */
/***********************************************/
#define PCI_P2P_MEM0_BASE_ADDR_LOW 0x10
#define PCI_P2P_MEM0_BASE_ADDR_HIGH 0x14
#define PCI_P2P_IO_BASE_ADDR 0x20
#define PCI_INTER_REGS_IO_MAPPED_BASE_ADDR 0x24
/* PCIX_STATUS register fields (PXS) */
#define PXS_FN_OFFS 0 /* Description Number */
#define PXS_FN_MASK (0x7 << PXS_FN_OFFS)
#define PXS_DN_OFFS 3 /* Device Number */
#define PXS_DN_MASK (0x1f << PXS_DN_OFFS)
#define PXS_BN_OFFS 8 /* Bus Number */
#define PXS_BN_MASK (0xff << PXS_BN_OFFS)
/* PCI Error Report Register Map */
#define PCI_SERRN_MASK_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x0c28 + (pciIf * 0x80))
#define PCI_CAUSE_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d58 + (pciIf * 0x80))
#define PCI_MASK_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d5C + (pciIf * 0x80))
#define PCI_ERROR_ADDR_LOW_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d40 + (pciIf * 0x80))
#define PCI_ERROR_ADDR_HIGH_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d44 + (pciIf * 0x80))
#define PCI_ERROR_ATTRIBUTE_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d48 + (pciIf * 0x80))
#define PCI_ERROR_COMMAND_REG(pciIf) (MV_PCI_IF_REGS_BASE(pciIf) + 0x1d50 + (pciIf * 0x80))
/* PCI Interrupt Cause Register (PICR) */
#define PICR_ERR_SEL_OFFS 27
#define PICR_ERR_SEL_MASK (0x1f << PICR_ERR_SEL_OFFS)
/* PCI Error Command Register (PECR) */
#define PECR_ERR_CMD_OFFS 0
#define PECR_ERR_CMD_MASK (0xf << PECR_ERR_CMD_OFFS)
#define PECR_DAC BIT4
/* defaults */
/* Set bits means value is about to change according to new value */
#define PCI_COMMAND_DEFAULT_MASK 0xffffdff1
#define PCI_COMMAND_DEFAULT (PCR_MASTER_WR_TRIG_WHOLE | PCR_MASTER_RD_TRIG_WHOLE | \
PCR_MASTER_MEM_RD_LINE_EN | PCR_MASTER_MEM_RD_MULT_EN | \
PCR_NS_ACCORDING_RCV_TRANS | PCR_MASTER_PCIX_REQ64N_EN | \
PCR_MASTER_DAC_EN | PCR_MASTER_M64_ALLIGN | \
PCR_ERRORS_PROPAGATION_EN)
#define PCI_ARBITER_CTRL_DEFAULT_MASK 0x801fc07a
#define PCI_ARBITER_CTRL_DEFAULT (PACR_BROKEN_VAL_PCIX_MIN << PACR_BROKEN_VAL_OFFS)
#endif /* #ifndef __INCPCIREGSH */