#ifndef _BHND_CORES_PCI_BHND_PCIREG_H_
#define _BHND_CORES_PCI_BHND_PCIREG_H_
#define BHND_PCI_DMA32_TRANSLATION 0x40000000
#define BHND_PCI_DMA32_MASK BHND_PCI_SBTOPCI2_MASK
#define BHND_PCIE_DMA32_TRANSLATION 0x80000000
#define BHND_PCIE_DMA32_MASK BHND_PCIE_SBTOPCI2_MASK
#define BHND_PCIE_DMA64_TRANSLATION _BHND_PCIE_DMA64(TRANSLATION)
#define BHND_PCIE_DMA64_MASK _BHND_PCIE_DMA64(MASK)
#define _BHND_PCIE_DMA64(_x) ((uint64_t)BHND_PCIE_DMA32_ ## _x << 32)
#define BHND_PCI_CTL 0x000
#define BHND_PCI_ARB_CTL 0x010
#define BHND_PCI_CLKRUN_CTL 0x014
#define BHND_PCI_INTR_STATUS 0x020
#define BHND_PCI_INTR_MASK 0x024
#define BHND_PCI_SBTOPCI_MBOX 0x028
#define BHND_PCI_BCAST_ADDR 0x050
#define BHND_PCI_BCAST_DATA 0x054
#define BHND_PCI_GPIO_IN 0x060
#define BHND_PCI_GPIO_OUT 0x064
#define BHND_PCI_GPIO_EN 0x068
#define BHND_PCI_GPIO_CTL 0x06C
#define BHND_PCI_SBTOPCI0 0x100
#define BHND_PCI_SBTOPCI1 0x104
#define BHND_PCI_SBTOPCI2 0x108
#define BHND_PCI_FUNC0_CFG 0x400
#define BHND_PCI_FUNC1_CFG 0x500
#define BHND_PCI_FUNC2_CFG 0x600
#define BHND_PCI_FUNC3_CFG 0x700
#define BHND_PCI_SPROM_SHADOW 0x800
#define BHND_PCI_CTL_RST_OE 0x01
#define BHND_PCI_CTL_RST 0x02
#define BHND_PCI_CTL_CLK_OE 0x04
#define BHND_PCI_CTL_CLK 0x08
#define BHND_PCI_ARB_INT 0x01
#define BHND_PCI_ARB_EXT 0x02
#define BHND_PCI_ARB_PARKID_MASK 0x1c
#define BHND_PCI_ARB_PARKID_SHIFT 2
#define BHND_PCI_ARB_PARKID_EXT0 0
#define BHND_PCI_ARB_PARKID_EXT1 1
#define BHND_PCI_ARB_PARKID_EXT2 2
#define BHND_PCI_ARB_PARKID_EXT3 3
#define BHND_PCI_ARB_PARKID_INT_r10 3
#define BHND_PCI_ARB_PARKID_INT_r11 4
#define BHND_PCI_ARB_PARKID_LAST_r10 4
#define BHND_PCI_ARB_PARKID_LAST_r11 5
#define BHND_PCI_CLKRUN_DSBL 0x8000
#define BHND_PCI_INTR_A 0x01
#define BHND_PCI_INTR_B 0x02
#define BHND_PCI_INTR_SERR 0x04
#define BHND_PCI_INTR_PERR 0x08
#define BHND_PCI_SBTOPCI_MBOX_F0_0 0x100
#define BHND_PCI_SBTOPCI_MBOX_F0_1 0x200
#define BHND_PCI_SBTOPCI_MBOX_F1_0 0x400
#define BHND_PCI_SBTOPCI_MBOX_F1_1 0x800
#define BHND_PCI_SBTOPCI_MBOX_F2_0 0x1000
#define BHND_PCI_SBTOPCI_MBOX_F2_1 0x2000
#define BHND_PCI_SBTOPCI_MBOX_F3_0 0x4000
#define BHND_PCI_SBTOPCI_MBOX_F3_1 0x8000
#define BHNC_PCI_BCAST_ADDR_MASK 0xFF
#define BHND_PCI_SBTOPCI0_MASK 0xfc000000
#define BHND_PCI_SBTOPCI1_MASK 0xfc000000
#define BHND_PCI_SBTOPCI2_MASK 0xc0000000
#define BHND_PCI_SBTOPCI_MEM 0
#define BHND_PCI_SBTOPCI_IO 1
#define BHND_PCI_SBTOPCI_CFG0 2
#define BHND_PCI_SBTOPCI_CFG1 3
#define BHND_PCI_SBTOPCI_PREF 0x4
#define BHND_PCI_SBTOPCI_BURST 0x8
#define BHND_PCI_SBTOPCI_RC_MASK 0x30
#define BHND_PCI_SBTOPCI_RC_READ 0x00
#define BHND_PCI_SBTOPCI_RC_READLINE 0x10
#define BHND_PCI_SBTOPCI_RC_READMULTI 0x20
#define BHND_PCI_SRSH_PI_OFFSET 0
#define BHND_PCI_SRSH_PI_MASK 0xf000
#define BHND_PCI_SRSH_PI_SHIFT 12
#define BHND_PCI_SRSH_PI_ADDR_MASK 0x0000F000
#define BHND_PCI_SRSH_PI_ADDR_SHIFT 12
#define BHND_PCIE_CTL BHND_PCI_CTL
#define BHND_PCIE_BIST_STATUS 0x00C
#define BHND_PCIE_GPIO_SEL 0x010
#define BHND_PCIE_GPIO_OUT_EN 0x014
#define BHND_PCIE_INTR_STATUS BHND_PCI_INTR_STATUS
#define BHND_PCIE_INTR_MASK BHND_PCI_INTR_MASK
#define BHND_PCIE_SBTOPCI_MBOX BHND_PCI_SBTOPCI_MBOX
#define BHND_PCIE_SBTOPCI0 BHND_PCI_SBTOPCI0
#define BHND_PCIE_SBTOPCI1 BHND_PCI_SBTOPCI1
#define BHND_PCIE_SBTOPCI2 BHND_PCI_SBTOPCI2
#define BHND_PCIE_CFG_ADDR 0x120
#define BHND_PCIE_CFG_DATA 0x124
#define BHND_PCIE_MDIO_CTL 0x128
#define BHND_PCIE_MDIO_DATA 0x12C
#define BHND_PCIE_IND_ADDR 0x130
#define BHND_PCIE_IND_DATA 0x134
#define BHND_PCIE_CLKREQEN_CTL 0x138
#define BHND_PCIE_FUNC0_CFG BHND_PCI_FUNC0_CFG
#define BHND_PCIE_FUNC1_CFG BHND_PCI_FUNC1_CFG
#define BHND_PCIE_FUNC2_CFG BHND_PCI_FUNC2_CFG
#define BHND_PCIE_FUNC3_CFG BHND_PCI_FUNC3_CFG
#define BHND_PCIE_SPROM_SHADOW BHND_PCI_SPROM_SHADOW
#define BHND_PCIE_CTL_RST_OE BHND_PCI_CTL_RST_OE
#define BHND_PCIE_CTL_RST BHND_PCI_CTL_RST_OE
#define BHND_PCIE_INTR_A BHND_PCI_INTR_A
#define BHND_PCIE_INTR_B BHND_PCI_INTR_B
#define BHND_PCIE_INTR_FATAL 0x04
#define BHND_PCIE_INTR_NFATAL 0x08
#define BHND_PCIE_INTR_CORR 0x10
#define BHND_PCIE_INTR_PME 0x20
#define BHND_PCIE_SBTOPCI0_MASK BHND_PCI_SBTOPCI0_MASK
#define BHND_PCIE_SBTOPCI1_MASK BHND_PCI_SBTOPCI1_MASK
#define BHND_PCIE_SBTOPCI2_MASK BHND_PCI_SBTOPCI2_MASK
#define BHND_PCIE_SBTOPCI_MEM BHND_PCI_SBTOPCI_MEM
#define BHND_PCIE_SBTOPCI_IO BHND_PCI_SBTOPCI_IO
#define BHND_PCIE_SBTOPCI_CFG0 BHND_PCI_SBTOPCI_CFG0
#define BHND_PCIE_SBTOPCI_CFG1 BHND_PCI_SBTOPCI_CFG1
#define BHND_PCIE_SBTOPCI_PREF BHND_PCI_SBTOPCI_PREF
#define BHND_PCIE_SBTOPCI_BURST BHND_PCI_SBTOPCI_BURST
#define BHND_PCIE_CFG_ADDR_FUNC_MASK 0x7000
#define BHND_PCIE_CFG_ADDR_FUNC_SHIFT 12
#define BHND_PCIE_CFG_ADDR_REG_MASK 0x0FFF
#define BHND_PCIE_CFG_ADDR_REG_SHIFT 0
#define BHND_PCIE_CFG_OFFSET(f, r) \
((((f) & BHND_PCIE_CFG_ADDR_FUNC_MASK) << BHND_PCIE_CFG_ADDR_FUNC_SHIFT) | \
(((r) & BHND_PCIE_CFG_ADDR_FUNC_SHIFT) << BHND_PCIE_CFG_ADDR_REG_SHIFT))
#define BHND_PCIE_MDIOCTL_DIVISOR_MASK 0x7f
#define BHND_PCIE_MDIOCTL_DIVISOR_VAL 0x2
#define BHND_PCIE_MDIOCTL_PREAM_EN 0x80
#define BHND_PCIE_MDIOCTL_DONE 0x100
#define BHND_PCIE_MDIODATA_PHYADDR_MASK 0x0f800000
#define BHND_PCIE_MDIODATA_PHYADDR_SHIFT 23
#define BHND_PCIE_MDIODATA_REGADDR_MASK 0x007c0000
#define BHND_PCIE_MDIODATA_REGADDR_SHIFT 18
#define BHND_PCIE_MDIODATA_DATA_MASK 0x0000ffff
#define BHND_PCIE_MDIODATA_TA 0x00020000
#define BHND_PCIE_MDIODATA_START 0x40000000
#define BHND_PCIE_MDIODATA_CMD_WRITE 0x10000000
#define BHND_PCIE_MDIODATA_CMD_READ 0x20000000
#define BHND_PCIE_MDIODATA_ADDR(_phyaddr, _regaddr) ( \
(((_phyaddr) << BHND_PCIE_MDIODATA_PHYADDR_SHIFT) & \
BHND_PCIE_MDIODATA_PHYADDR_MASK) | \
(((_regaddr) << BHND_PCIE_MDIODATA_REGADDR_SHIFT) & \
BHND_PCIE_MDIODATA_REGADDR_MASK) \
)
#define BHND_PCIE_PLP_MODEREG 0x200
#define BHND_PCIE_PLP_STATUSREG 0x204
#define BHND_PCIE_PLP_LTSSMCTRLREG 0x208
#define BHND_PCIE_PLP_LTLINKNUMREG 0x20c
#define BHND_PCIE_PLP_LTLANENUMREG 0x210
#define BHND_PCIE_PLP_LTNFTSREG 0x214
#define BHND_PCIE_PLP_ATTNREG 0x218
#define BHND_PCIE_PLP_ATTNMASKREG 0x21C
#define BHND_PCIE_PLP_RXERRCTR 0x220
#define BHND_PCIE_PLP_RXFRMERRCTR 0x224
#define BHND_PCIE_PLP_RXERRTHRESHREG 0x228
#define BHND_PCIE_PLP_TESTCTRLREG 0x22C
#define BHND_PCIE_PLP_SERDESCTRLOVRDREG 0x230
#define BHND_PCIE_PLP_TIMINGOVRDREG 0x234
#define BHND_PCIE_PLP_RXTXSMDIAGREG 0x238
#define BHND_PCIE_PLP_LTSSMDIAGREG 0x23C
#define BHND_PCIE_DLLP_LCREG 0x100
#define BHND_PCIE_DLLP_LCREG_PCIPM_EN 0x40
#define BHND_PCIE_DLLP_LSREG 0x104
#define BHND_PCIE_DLLP_LAREG 0x108
#define BHND_PCIE_DLLP_LAMASKREG 0x10C
#define BHND_PCIE_DLLP_NEXTTXSEQNUMREG 0x110
#define BHND_PCIE_DLLP_ACKEDTXSEQNUMREG 0x114
#define BHND_PCIE_DLLP_PURGEDTXSEQNUMREG 0x118
#define BHND_PCIE_DLLP_RXSEQNUMREG 0x11C
#define BHND_PCIE_DLLP_LRREG 0x120
#define BHND_PCIE_DLLP_LACKTOREG 0x124
#define BHND_PCIE_DLLP_PMTHRESHREG 0x128
#define BHND_PCIE_L0THRESHOLDTIME_MASK 0xFF00
#define BHND_PCIE_L1THRESHOLDTIME_MASK 0xFF00
#define BHND_PCIE_L1THRESHOLDTIME_SHIFT 8
#define BHND_PCIE_L1THRESHOLD_WARVAL 0x72
#define BHND_PCIE_ASPMTIMER_EXTEND 0x1000000
#define BHND_PCIE_DLLP_RTRYWPREG 0x12C
#define BHND_PCIE_DLLP_RTRYRPREG 0x130
#define BHND_PCIE_DLLP_RTRYPPREG 0x134
#define BHND_PCIE_DLLP_RTRRWREG 0x138
#define BHND_PCIE_DLLP_ECTHRESHREG 0x13C
#define BHND_PCIE_DLLP_TLPERRCTRREG 0x140
#define BHND_PCIE_DLLP_ERRCTRREG 0x144
#define BHND_PCIE_DLLP_NAKRXCTRREG 0x148
#define BHND_PCIE_DLLP_TESTREG 0x14C
#define BHND_PCIE_DLLP_PKTBIST 0x150
#define BHND_PCIE_DLLP_PCIE11 0x154
#define BHND_PCIE_DLLP_LSREG_LINKUP (1 << 16)
#define BHND_PCIE_TLP_CONFIGREG 0x000
#define BHND_PCIE_TLP_WORKAROUNDSREG 0x004
#define BHND_PCIE_TLP_WORKAROUND_URBIT 0x8
#define BHND_PCIE_TLP_WRDMAUPPER 0x010
#define BHND_PCIE_TLP_WRDMALOWER 0x014
#define BHND_PCIE_TLP_WRDMAREQ_LBEREG 0x018
#define BHND_PCIE_TLP_RDDMAUPPER 0x01C
#define BHND_PCIE_TLP_RDDMALOWER 0x020
#define BHND_PCIE_TLP_RDDMALENREG 0x024
#define BHND_PCIE_TLP_MSIDMAUPPER 0x028
#define BHND_PCIE_TLP_MSIDMALOWER 0x02C
#define BHND_PCIE_TLP_MSIDMALENREG 0x030
#define BHND_PCIE_TLP_SLVREQLENREG 0x034
#define BHND_PCIE_TLP_FCINPUTSREQ 0x038
#define BHND_PCIE_TLP_TXSMGRSREQ 0x03C
#define BHND_PCIE_TLP_ADRACKCNTARBLEN 0x040
#define BHND_PCIE_TLP_DMACPLHDR0 0x044
#define BHND_PCIE_TLP_DMACPLHDR1 0x048
#define BHND_PCIE_TLP_DMACPLHDR2 0x04C
#define BHND_PCIE_TLP_DMACPLMISC0 0x050
#define BHND_PCIE_TLP_DMACPLMISC1 0x054
#define BHND_PCIE_TLP_DMACPLMISC2 0x058
#define BHND_PCIE_TLP_SPTCTRLLEN 0x05C
#define BHND_PCIE_TLP_SPTCTRLMSIC0 0x060
#define BHND_PCIE_TLP_SPTCTRLMSIC1 0x064
#define BHND_PCIE_TLP_BUSDEVFUNC 0x068
#define BHND_PCIE_TLP_RESETCTR 0x06C
#define BHND_PCIE_TLP_RTRYBUF 0x070
#define BHND_PCIE_TLP_TGTDEBUG1 0x074
#define BHND_PCIE_TLP_TGTDEBUG2 0x078
#define BHND_PCIE_TLP_TGTDEBUG3 0x07C
#define BHND_PCIE_TLP_TGTDEBUG4 0x080
#define BHND_PCIE_PHYADDR_SD 0x0
#define BHND_PCIE_SD_ADDREXT 0x1F
#define BHND_PCIE_SD_REGS_IEEE0 0x0000
#define BHND_PCIE_SD_REGS_IEEE1 0x0010
#define BHND_PCIE_SD_REGS_BLK0 0x8000
#define BHND_PCIE_SD_REGS_BLK1 0x8010
#define BHND_PCIE_SD_REGS_BLK2 0x8020
#define BHND_PCIE_SD_REGS_BLK3 0x8030
#define BHND_PCIE_SD_REGS_BLK4 0x8040
#define BHND_PCIE_SD_REGS_PLL 0x8080
#define BHND_PCIE_SD_REGS_TX0 0x8200
#define BHND_PCIE_SD_REGS_SERDESID 0x8310
#define BHND_PCIE_SD_REGS_RX0 0x8400
#define BHND_PCIE_SD_TX_DRIVER 0x17
#define BHND_PCIE_SD_TX_DRIVER_IFIR_MASK 0x000E
#define BHND_PCIE_SD_TX_DRIVER_IFIR_SHIFT 1
#define BHND_PCIE_SD_TX_DRIVER_IPRE_MASK 0x00F0
#define BHND_PCIE_SD_TX_DRIVER_IPRE_SHIFT 4
#define BHND_PCIE_SD_TX_DRIVER_IDRIVER_MASK 0x0F00
#define BHND_PCIE_SD_TX_DRIVER_IDRIVER_SHIFT 8
#define BHND_PCIE_SD_TX_DRIVER_P2_COEFF_SHIFT 12
#define BHND_PCIE_SD_TX_DRIVER_P2_COEFF_MASK 0xF000
#define BHND_PCIE_APPLE_TX_P2_COEFF_MAX 0x7
#define BHND_PCIE_APPLE_TX_IDRIVER_MAX 0xF
#define BHND_PCIE_APPLE_TX_P2_COEFF_700MV 0x7
#define BHND_PCIE_APPLE_TX_IDRIVER_700MV 0x0
#define BHND_PCIE_PHY_SDR9_PLL 0x1C
#define BHND_PCIE_SDR9_PLL_CTRL 0x17
#define BHND_PCIE_SDR9_PLL_CTRL_FREQDET_EN 0x4000
#define BHND_PCIE_PHY_SDR9_TXRX 0x0F
#define BHND_PCIE_SDR9_RX_CTRL 0x11
#define BHND_PCIE_SDR9_RX_CTRL_FORCE 0x80
#define BHND_PCIE_SDR9_RX_CTRL_POLARITY_INV 0x40
#define BHND_PCIE_SDR9_RX_CDR 0x16
#define BHND_PCIE_SDR9_RX_CDR_FREQ_OVR_EN 0x0100
#define BHND_PCIE_SDR9_RX_CDR_FREQ_OVR_MASK 0x00FF
#define BHND_PCIE_SDR9_RX_CDR_FREQ_OVR_SHIFT 0
#define BHND_PCIE_SDR9_RX_CDRBW 0x17
#define BHND_PCIE_SDR9_RX_CDRBW_INTGTRK_MASK 0x7000
#define BHND_PCIE_SDR9_RX_CDRBW_INTGTRK_SHIFT 11
#define BHND_PCIE_SDR9_RX_CDRBW_INTGACQ_MASK 0x0700
#define BHND_PCIE_SDR9_RX_CDRBW_INTGACQ_SHIFT 8
#define BHND_PCIE_SDR9_RX_CDRBW_PROPTRK_MASK 0x0070
#define BHND_PCIE_SDR9_RX_CDRBW_PROPTRK_SHIFT 4
#define BHND_PCIE_SDR9_RX_CDRBW_PROPACQ_MASK 0x0007
#define BHND_PCIE_SDR9_RX_CDRBW_PROPACQ_SHIFT 0
#define BHND_PCIE_SDR9_RX_TIMER1 0x12
#define BHND_PCIE_SDR9_RX_TIMER1_LKTRK_MASK 0xFF00
#define BHND_PCIE_SDR9_RX_TIMER1_LKTRK_SHIFT 8
#define BHND_PCIE_SDR9_RX_TIMER1_LKACQ_MASK 0x00FF
#define BHND_PCIE_SDR9_RX_TIMER1_LKACQ_SHIFT 0
#define BHND_PCIE_SRSH_PI_OFFSET BHND_PCI_SRSH_PI_OFFSET
#define BHND_PCIE_SRSH_PI_MASK BHND_PCI_SRSH_PI_MASK
#define BHND_PCIE_SRSH_PI_SHIFT BHND_PCI_SRSH_PI_SHIFT
#define BHND_PCIE_SRSH_PI_ADDR_MASK BHND_PCI_SRSH_PI_ADDR_MASK
#define BHND_PCIE_SRSH_PI_ADDR_SHIFT BHND_PCI_SRSH_PI_ADDR_SHIFT
#define BHND_PCIE_SRSH_ASPM_OFFSET 8
#define BHND_PCIE_SRSH_ASPM_ENB 0x18
#define BHND_PCIE_SRSH_ASPM_L1_ENB 0x10
#define BHND_PCIE_SRSH_ASPM_L0s_ENB 0x8
#define BHND_PCIE_SRSH_PCIE_MISC_CONFIG 10
#define BHND_PCIE_SRSH_L23READY_EXIT_NOPRST 0x8000
#define BHND_PCIE_SRSH_CLKREQ_OFFSET_R5 40
#define BHND_PCIE_SRSH_CLKREQ_OFFSET_R8 104
#define BHND_PCIE_SRSH_CLKREQ_ENB 0x0800
#define BHND_PCIE_SRSH_BD_OFFSET 12
#define BHND_PCIE_SRSH_AUTOINIT_OFFSET 36
#define BHND_PCIE_PLP_POLARITY_INV 0x10
#endif