xref: /openbmc/qemu/include/hw/pci-host/pnv_phb4_regs.h (revision a3c3aaa846ad61b801e7196482dcf4afb8ba34e4)
14f9924c4SBenjamin Herrenschmidt /*
24f9924c4SBenjamin Herrenschmidt  * QEMU PowerPC PowerNV (POWER9) PHB4 model
34f9924c4SBenjamin Herrenschmidt  *
44f9924c4SBenjamin Herrenschmidt  * Copyright (c) 2013-2020, IBM Corporation.
54f9924c4SBenjamin Herrenschmidt  *
64f9924c4SBenjamin Herrenschmidt  * This code is licensed under the GPL version 2 or later. See the
74f9924c4SBenjamin Herrenschmidt  * COPYING file in the top-level directory.
84f9924c4SBenjamin Herrenschmidt  */
94f9924c4SBenjamin Herrenschmidt 
104f9924c4SBenjamin Herrenschmidt #ifndef PCI_HOST_PNV_PHB4_REGS_H
114f9924c4SBenjamin Herrenschmidt #define PCI_HOST_PNV_PHB4_REGS_H
124f9924c4SBenjamin Herrenschmidt 
134f9924c4SBenjamin Herrenschmidt /*
144f9924c4SBenjamin Herrenschmidt  * PEC XSCOM registers
154f9924c4SBenjamin Herrenschmidt  *
164f9924c4SBenjamin Herrenschmidt  * There a 3 PECs in P9. Each PEC can have several PHBs. Each PEC has some
174f9924c4SBenjamin Herrenschmidt  * "global" registers and some "per-stack" (per-PHB) registers. Those are
184f9924c4SBenjamin Herrenschmidt  * organized in two XSCOM ranges, the "Nest" range and the "PCI" range, each
194f9924c4SBenjamin Herrenschmidt  * range contains both some "PEC" registers and some "per-stack" registers.
204f9924c4SBenjamin Herrenschmidt  *
214f9924c4SBenjamin Herrenschmidt  * Finally the PCI range also contains an additional range per stack that
224f9924c4SBenjamin Herrenschmidt  * passes through to some of the PHB own registers.
234f9924c4SBenjamin Herrenschmidt  *
244f9924c4SBenjamin Herrenschmidt  * PEC0 can contain 1 PHB  (PHB0)
254f9924c4SBenjamin Herrenschmidt  * PEC1 can contain 2 PHBs (PHB1 and PHB2)
264f9924c4SBenjamin Herrenschmidt  * PEC2 can contain 3 PHBs (PHB3, PHB4 and PHB5)
274f9924c4SBenjamin Herrenschmidt  */
284f9924c4SBenjamin Herrenschmidt 
294f9924c4SBenjamin Herrenschmidt /*
304f9924c4SBenjamin Herrenschmidt  * This is the "stack" offset, it's the offset from a given range base
314f9924c4SBenjamin Herrenschmidt  * to the first "per-stack" registers and also the stride between
324f9924c4SBenjamin Herrenschmidt  * stacks, thus for PEC2, the global registers are at offset 0, the
334f9924c4SBenjamin Herrenschmidt  * PHB3 registers at offset 0x40, the PHB4 at offset 0x80 etc....
344f9924c4SBenjamin Herrenschmidt  *
354f9924c4SBenjamin Herrenschmidt  * It is *also* the offset to the pass-through SCOM region but in this case
364f9924c4SBenjamin Herrenschmidt  * it is 0 based, ie PHB3 is at 0x100 PHB4 is a 0x140 etc..
374f9924c4SBenjamin Herrenschmidt  */
384f9924c4SBenjamin Herrenschmidt #define PEC_STACK_OFFSET        0x40
394f9924c4SBenjamin Herrenschmidt 
404f9924c4SBenjamin Herrenschmidt /* XSCOM Nest global registers */
414f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_HW_CONFIG         0x00
424f9924c4SBenjamin Herrenschmidt #define PEC_NEST_DROP_PRIO_CTRL         0x01
434f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_ERR_INJECT        0x02
444f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PCI_NEST_CLK_TRACE_CTL 0x03
454f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_PMON_CTRL         0x04
464f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_PBUS_ADDR_EXT     0x05
474f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_PRED_VEC_TIMEOUT  0x06
484f9924c4SBenjamin Herrenschmidt #define PEC_NEST_CAPP_CTRL              0x07
494f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_READ_STK_OVR      0x08
504f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_WRITE_STK_OVR     0x09
514f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_STORE_STK_OVR     0x0a
524f9924c4SBenjamin Herrenschmidt #define PEC_NEST_PBCQ_RETRY_BKOFF_CTRL  0x0b
534f9924c4SBenjamin Herrenschmidt 
544f9924c4SBenjamin Herrenschmidt /* XSCOM Nest per-stack registers */
554f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR       0x00
564f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR_CLR   0x01
574f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR_SET   0x02
584f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR_MSK   0x03
594f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR_MSKC  0x04
604f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR_MSKS  0x05
614f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR_ACT0  0x06
624f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR_ACT1  0x07
634f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PCI_NEST_FIR_WOF   0x08
644f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_ERR_REPORT_0       0x0a
654f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_ERR_REPORT_1       0x0b
664f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PBCQ_GNRL_STATUS   0x0c
674f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PBCQ_MODE          0x0d
684f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_MMIO_BAR0          0x0e
694f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_MMIO_BAR0_MASK     0x0f
704f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_MMIO_BAR1          0x10
714f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_MMIO_BAR1_MASK     0x11
724f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_PHB_REGS_BAR       0x12
734f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_INT_BAR            0x13
744f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_BAR_EN             0x14
754f9924c4SBenjamin Herrenschmidt #define   PEC_NEST_STK_BAR_EN_MMIO0             PPC_BIT(0)
764f9924c4SBenjamin Herrenschmidt #define   PEC_NEST_STK_BAR_EN_MMIO1             PPC_BIT(1)
774f9924c4SBenjamin Herrenschmidt #define   PEC_NEST_STK_BAR_EN_PHB               PPC_BIT(2)
784f9924c4SBenjamin Herrenschmidt #define   PEC_NEST_STK_BAR_EN_INT               PPC_BIT(3)
794f9924c4SBenjamin Herrenschmidt #define PEC_NEST_STK_DATA_FRZ_TYPE      0x15
80*fcc63904SSaif Abrar #define PEC_NEST_STK_PBCQ_SPARSE_PAGE   0x16 /* P10 */
81*fcc63904SSaif Abrar #define PEC_NEST_STK_PBCQ_CACHE_INJ     0x17 /* P10 */
824f9924c4SBenjamin Herrenschmidt 
834f9924c4SBenjamin Herrenschmidt /* XSCOM PCI global registers */
844f9924c4SBenjamin Herrenschmidt #define PEC_PCI_PBAIB_HW_CONFIG         0x00
85*fcc63904SSaif Abrar #define PEC_PCI_PBAIB_HW_OVR            0x01
864f9924c4SBenjamin Herrenschmidt #define PEC_PCI_PBAIB_READ_STK_OVR      0x02
874f9924c4SBenjamin Herrenschmidt 
884f9924c4SBenjamin Herrenschmidt /* XSCOM PCI per-stack registers */
894f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR             0x00
904f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR_CLR         0x01
914f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR_SET         0x02
924f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR_MSK         0x03
934f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR_MSKC        0x04
944f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR_MSKS        0x05
954f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR_ACT0        0x06
964f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR_ACT1        0x07
974f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PCI_FIR_WOF         0x08
984f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_ETU_RESET           0x0a
994f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PBAIB_ERR_REPORT    0x0b
1004f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PBAIB_TX_CMD_CRED   0x0d
1014f9924c4SBenjamin Herrenschmidt #define PEC_PCI_STK_PBAIB_TX_DAT_CRED   0x0e
1024f9924c4SBenjamin Herrenschmidt 
1034f9924c4SBenjamin Herrenschmidt /*
1044f9924c4SBenjamin Herrenschmidt  * PHB "SCOM" registers. This is accessed via the above window
1054f9924c4SBenjamin Herrenschmidt  * and provides a backdoor to the PHB when the AIB bus is not
1064f9924c4SBenjamin Herrenschmidt  * functional. Some of these directly map some of the PHB MMIO
1074f9924c4SBenjamin Herrenschmidt  * registers, some are specific and allow indirect access to a
1084f9924c4SBenjamin Herrenschmidt  * wider range of PHB registers
1094f9924c4SBenjamin Herrenschmidt  */
1104f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_HV_IND_ADDR            0x00
1114f9924c4SBenjamin Herrenschmidt #define   PHB_SCOM_HV_IND_ADDR_VALID            PPC_BIT(0)
1124f9924c4SBenjamin Herrenschmidt #define   PHB_SCOM_HV_IND_ADDR_4B               PPC_BIT(1)
1134f9924c4SBenjamin Herrenschmidt #define   PHB_SCOM_HV_IND_ADDR_AUTOINC          PPC_BIT(2)
1144f9924c4SBenjamin Herrenschmidt #define   PHB_SCOM_HV_IND_ADDR_ADDR             PPC_BITMASK(51, 63)
1154f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_HV_IND_DATA            0x01
1164f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_FIR            0x08
1174f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_FIR_AND        0x09
1184f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_FIR_OR         0x0a
1194f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_FIR_MSK        0x0b
1204f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_ERR_MSK_AND    0x0c
1214f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_ERR_MSK_OR     0x0d
1224f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_ACT0           0x0e
1234f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_ACT1           0x0f
1244f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_LEM_WOF            0x10
1254f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_PMON_CONFIG        0x17
1264f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_PMON_CTR0          0x18
1274f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_PMON_CTR1          0x19
1284f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_PMON_CTR2          0x1a
1294f9924c4SBenjamin Herrenschmidt #define PHB_SCOM_ETU_PMON_CTR3          0x1b
1304f9924c4SBenjamin Herrenschmidt 
1314f9924c4SBenjamin Herrenschmidt 
1324f9924c4SBenjamin Herrenschmidt /*
1334f9924c4SBenjamin Herrenschmidt  * PHB MMIO registers
1344f9924c4SBenjamin Herrenschmidt  */
1354f9924c4SBenjamin Herrenschmidt 
1364f9924c4SBenjamin Herrenschmidt /* PHB Fundamental register set A */
1374f9924c4SBenjamin Herrenschmidt #define PHB_LSI_SOURCE_ID               0x100
1384f9924c4SBenjamin Herrenschmidt #define   PHB_LSI_SRC_ID                PPC_BITMASK(4, 12)
1394f9924c4SBenjamin Herrenschmidt #define PHB_DMA_CHAN_STATUS             0x110
1404f9924c4SBenjamin Herrenschmidt #define   PHB_DMA_CHAN_ANY_ERR          PPC_BIT(27)
1414f9924c4SBenjamin Herrenschmidt #define   PHB_DMA_CHAN_ANY_ERR1         PPC_BIT(28)
1424f9924c4SBenjamin Herrenschmidt #define   PHB_DMA_CHAN_ANY_FREEZE       PPC_BIT(29)
1434f9924c4SBenjamin Herrenschmidt #define PHB_CPU_LOADSTORE_STATUS        0x120
1444f9924c4SBenjamin Herrenschmidt #define   PHB_CPU_LS_ANY_ERR            PPC_BIT(27)
1454f9924c4SBenjamin Herrenschmidt #define   PHB_CPU_LS_ANY_ERR1           PPC_BIT(28)
1464f9924c4SBenjamin Herrenschmidt #define   PHB_CPU_LS_ANY_FREEZE         PPC_BIT(29)
1474f9924c4SBenjamin Herrenschmidt #define PHB_CONFIG_DATA                 0x130
1484f9924c4SBenjamin Herrenschmidt #define PHB_LOCK0                       0x138
1494f9924c4SBenjamin Herrenschmidt #define PHB_CONFIG_ADDRESS              0x140
1504f9924c4SBenjamin Herrenschmidt #define   PHB_CA_ENABLE                 PPC_BIT(0)
1514f9924c4SBenjamin Herrenschmidt #define   PHB_CA_STATUS                 PPC_BITMASK(1, 3)
1524f9924c4SBenjamin Herrenschmidt #define     PHB_CA_STATUS_GOOD          0
1534f9924c4SBenjamin Herrenschmidt #define     PHB_CA_STATUS_UR            1
1544f9924c4SBenjamin Herrenschmidt #define     PHB_CA_STATUS_CRS           2
1554f9924c4SBenjamin Herrenschmidt #define     PHB_CA_STATUS_CA            4
1564f9924c4SBenjamin Herrenschmidt #define   PHB_CA_BUS                    PPC_BITMASK(4, 11)
1574f9924c4SBenjamin Herrenschmidt #define   PHB_CA_DEV                    PPC_BITMASK(12, 16)
1584f9924c4SBenjamin Herrenschmidt #define   PHB_CA_FUNC                   PPC_BITMASK(17, 19)
1594f9924c4SBenjamin Herrenschmidt #define   PHB_CA_BDFN                   PPC_BITMASK(4, 19) /* bus,dev,func */
1604f9924c4SBenjamin Herrenschmidt #define   PHB_CA_REG                    PPC_BITMASK(20, 31)
1614f9924c4SBenjamin Herrenschmidt #define   PHB_CA_PE                     PPC_BITMASK(39, 47)
1624f9924c4SBenjamin Herrenschmidt #define PHB_LOCK1                       0x148
1634f9924c4SBenjamin Herrenschmidt #define PHB_PHB4_CONFIG                 0x160
1644f9924c4SBenjamin Herrenschmidt #define   PHB_PHB4C_32BIT_MSI_EN        PPC_BIT(8)
1654f9924c4SBenjamin Herrenschmidt #define   PHB_PHB4C_64BIT_MSI_EN        PPC_BIT(14)
1664f9924c4SBenjamin Herrenschmidt #define PHB_RTT_BAR                     0x168
1674f9924c4SBenjamin Herrenschmidt #define   PHB_RTT_BAR_ENABLE            PPC_BIT(0)
1684f9924c4SBenjamin Herrenschmidt #define   PHB_RTT_BASE_ADDRESS_MASK     PPC_BITMASK(8, 46)
1694f9924c4SBenjamin Herrenschmidt #define PHB_PELTV_BAR                   0x188
1704f9924c4SBenjamin Herrenschmidt #define   PHB_PELTV_BAR_ENABLE          PPC_BIT(0)
1714f9924c4SBenjamin Herrenschmidt #define   PHB_PELTV_BASE_ADDRESS        PPC_BITMASK(8, 50)
1724f9924c4SBenjamin Herrenschmidt #define PHB_M32_START_ADDR              0x1a0
1734f9924c4SBenjamin Herrenschmidt #define PHB_PEST_BAR                    0x1a8
1744f9924c4SBenjamin Herrenschmidt #define   PHB_PEST_BAR_ENABLE           PPC_BIT(0)
1754f9924c4SBenjamin Herrenschmidt #define   PHB_PEST_BASE_ADDRESS         PPC_BITMASK(8, 51)
1764f9924c4SBenjamin Herrenschmidt #define PHB_ASN_CMPM                    0x1C0
1774f9924c4SBenjamin Herrenschmidt #define   PHB_ASN_CMPM_ENABLE           PPC_BIT(63)
1784f9924c4SBenjamin Herrenschmidt #define PHB_CAPI_CMPM                   0x1C8
1794f9924c4SBenjamin Herrenschmidt #define   PHB_CAPI_CMPM_ENABLE          PPC_BIT(63)
1804f9924c4SBenjamin Herrenschmidt #define PHB_M64_AOMASK                  0x1d0
1814f9924c4SBenjamin Herrenschmidt #define PHB_M64_UPPER_BITS              0x1f0
1824f9924c4SBenjamin Herrenschmidt #define PHB_NXLATE_PREFIX               0x1f8
1834f9924c4SBenjamin Herrenschmidt #define PHB_DMARD_SYNC                  0x200
1844f9924c4SBenjamin Herrenschmidt #define   PHB_DMARD_SYNC_START          PPC_BIT(0)
1854f9924c4SBenjamin Herrenschmidt #define   PHB_DMARD_SYNC_COMPLETE       PPC_BIT(1)
1864f9924c4SBenjamin Herrenschmidt #define PHB_RTC_INVALIDATE              0x208
1874f9924c4SBenjamin Herrenschmidt #define   PHB_RTC_INVALIDATE_ALL        PPC_BIT(0)
1884f9924c4SBenjamin Herrenschmidt #define   PHB_RTC_INVALIDATE_RID        PPC_BITMASK(16, 31)
1894f9924c4SBenjamin Herrenschmidt #define PHB_TCE_KILL                    0x210
1904f9924c4SBenjamin Herrenschmidt #define   PHB_TCE_KILL_ALL              PPC_BIT(0)
1914f9924c4SBenjamin Herrenschmidt #define   PHB_TCE_KILL_PE               PPC_BIT(1)
1924f9924c4SBenjamin Herrenschmidt #define   PHB_TCE_KILL_ONE              PPC_BIT(2)
1934f9924c4SBenjamin Herrenschmidt #define   PHB_TCE_KILL_PSEL             PPC_BIT(3)
1944f9924c4SBenjamin Herrenschmidt #define   PHB_TCE_KILL_64K              0x1000 /* Address override */
1954f9924c4SBenjamin Herrenschmidt #define   PHB_TCE_KILL_2M               0x2000 /* Address override */
1964f9924c4SBenjamin Herrenschmidt #define   PHB_TCE_KILL_1G               0x3000 /* Address override */
1974f9924c4SBenjamin Herrenschmidt #define   PHB_TCE_KILL_PENUM            PPC_BITMASK(55, 63)
1984f9924c4SBenjamin Herrenschmidt #define PHB_TCE_SPEC_CTL                0x218
1994f9924c4SBenjamin Herrenschmidt #define PHB_IODA_ADDR                   0x220
2004f9924c4SBenjamin Herrenschmidt #define   PHB_IODA_AD_AUTOINC           PPC_BIT(0)
2014f9924c4SBenjamin Herrenschmidt #define   PHB_IODA_AD_TSEL              PPC_BITMASK(11, 15)
2024f9924c4SBenjamin Herrenschmidt #define   PHB_IODA_AD_MIST_PWV          PPC_BITMASK(28, 31)
2034f9924c4SBenjamin Herrenschmidt #define   PHB_IODA_AD_TADR              PPC_BITMASK(54, 63)
2044f9924c4SBenjamin Herrenschmidt #define PHB_IODA_DATA0                  0x228
2054f9924c4SBenjamin Herrenschmidt #define PHB_PHB4_GEN_CAP                0x250
2064f9924c4SBenjamin Herrenschmidt #define PHB_PHB4_TCE_CAP                0x258
2074f9924c4SBenjamin Herrenschmidt #define PHB_PHB4_IRQ_CAP                0x260
2084f9924c4SBenjamin Herrenschmidt #define PHB_PHB4_EEH_CAP                0x268
2094f9924c4SBenjamin Herrenschmidt #define PHB_PAPR_ERR_INJ_CTL            0x2b0
2104f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_CTL_INB      PPC_BIT(0)
2114f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_CTL_OUTB     PPC_BIT(1)
2124f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_CTL_STICKY   PPC_BIT(2)
2134f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_CTL_CFG      PPC_BIT(3)
2144f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_CTL_RD       PPC_BIT(4)
2154f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_CTL_WR       PPC_BIT(5)
2164f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_CTL_FREEZE   PPC_BIT(6)
2174f9924c4SBenjamin Herrenschmidt #define PHB_PAPR_ERR_INJ_ADDR           0x2b8
2184f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_ADDR_MMIO            PPC_BITMASK(16, 63)
2194f9924c4SBenjamin Herrenschmidt #define PHB_PAPR_ERR_INJ_MASK           0x2c0
2204f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_MASK_CFG             PPC_BITMASK(4, 11)
2214f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_MASK_CFG_ALL         PPC_BITMASK(4, 19)
2224f9924c4SBenjamin Herrenschmidt #define   PHB_PAPR_ERR_INJ_MASK_MMIO            PPC_BITMASK(16, 63)
2234f9924c4SBenjamin Herrenschmidt #define PHB_ETU_ERR_SUMMARY             0x2c8
2244f9924c4SBenjamin Herrenschmidt #define PHB_INT_NOTIFY_ADDR             0x300
22534b0696bSCédric Le Goater #define   PHB_INT_NOTIFY_ADDR_64K       PPC_BIT(1)   /* P10 */
2264f9924c4SBenjamin Herrenschmidt #define PHB_INT_NOTIFY_INDEX            0x308
2274f9924c4SBenjamin Herrenschmidt 
2284f9924c4SBenjamin Herrenschmidt /* Fundamental register set B */
2294f9924c4SBenjamin Herrenschmidt #define PHB_VERSION                     0x800
2304f9924c4SBenjamin Herrenschmidt #define PHB_CTRLR                       0x810
231c6b8cc37SCédric Le Goater #define   PHB_CTRLR_IRQ_PQ_DISABLE      PPC_BIT(9)   /* P10 */
23234b0696bSCédric Le Goater #define   PHB_CTRLR_IRQ_ABT_MODE        PPC_BIT(10)  /* P10 */
2334f9924c4SBenjamin Herrenschmidt #define   PHB_CTRLR_IRQ_PGSZ_64K        PPC_BIT(11)
2344f9924c4SBenjamin Herrenschmidt #define   PHB_CTRLR_IRQ_STORE_EOI       PPC_BIT(12)
2354f9924c4SBenjamin Herrenschmidt #define   PHB_CTRLR_MMIO_RD_STRICT      PPC_BIT(13)
2364f9924c4SBenjamin Herrenschmidt #define   PHB_CTRLR_MMIO_EEH_DISABLE    PPC_BIT(14)
2374f9924c4SBenjamin Herrenschmidt #define   PHB_CTRLR_CFG_EEH_BLOCK       PPC_BIT(15)
2384f9924c4SBenjamin Herrenschmidt #define   PHB_CTRLR_FENCE_LNKILL_DIS    PPC_BIT(16)
2394f9924c4SBenjamin Herrenschmidt #define   PHB_CTRLR_TVT_ADDR_SEL        PPC_BITMASK(17, 19)
2404f9924c4SBenjamin Herrenschmidt #define     TVT_DD1_1_PER_PE            0
2414f9924c4SBenjamin Herrenschmidt #define     TVT_DD1_2_PER_PE            1
2424f9924c4SBenjamin Herrenschmidt #define     TVT_DD1_4_PER_PE            2
2434f9924c4SBenjamin Herrenschmidt #define     TVT_DD1_8_PER_PE            3
2444f9924c4SBenjamin Herrenschmidt #define     TVT_DD1_16_PER_PE           4
2454f9924c4SBenjamin Herrenschmidt #define     TVT_2_PER_PE                0
2464f9924c4SBenjamin Herrenschmidt #define     TVT_4_PER_PE                1
2474f9924c4SBenjamin Herrenschmidt #define     TVT_8_PER_PE                2
2484f9924c4SBenjamin Herrenschmidt #define     TVT_16_PER_PE               3
2494f9924c4SBenjamin Herrenschmidt #define   PHB_CTRLR_DMA_RD_SPACING      PPC_BITMASK(28, 31)
2504f9924c4SBenjamin Herrenschmidt #define PHB_AIB_FENCE_CTRL              0x860
2514f9924c4SBenjamin Herrenschmidt #define PHB_TCE_TAG_ENABLE              0x868
2524f9924c4SBenjamin Herrenschmidt #define PHB_TCE_WATERMARK               0x870
2534f9924c4SBenjamin Herrenschmidt #define PHB_TIMEOUT_CTRL1               0x878
2544f9924c4SBenjamin Herrenschmidt #define PHB_TIMEOUT_CTRL2               0x880
2554f9924c4SBenjamin Herrenschmidt #define PHB_Q_DMA_R                     0x888
2564f9924c4SBenjamin Herrenschmidt #define   PHB_Q_DMA_R_QUIESCE_DMA       PPC_BIT(0)
2574f9924c4SBenjamin Herrenschmidt #define   PHB_Q_DMA_R_AUTORESET         PPC_BIT(1)
2584f9924c4SBenjamin Herrenschmidt #define   PHB_Q_DMA_R_DMA_RESP_STATUS   PPC_BIT(4)
2594f9924c4SBenjamin Herrenschmidt #define   PHB_Q_DMA_R_MMIO_RESP_STATUS  PPC_BIT(5)
2604f9924c4SBenjamin Herrenschmidt #define   PHB_Q_DMA_R_TCE_RESP_STATUS   PPC_BIT(6)
2614f9924c4SBenjamin Herrenschmidt #define   PHB_Q_DMA_R_TCE_KILL_STATUS   PPC_BIT(7)
2624f9924c4SBenjamin Herrenschmidt #define PHB_TCE_TAG_STATUS              0x908
2634f9924c4SBenjamin Herrenschmidt 
2644f9924c4SBenjamin Herrenschmidt /* FIR & Error registers */
2654f9924c4SBenjamin Herrenschmidt #define PHB_LEM_FIR_ACCUM               0xc00
2664f9924c4SBenjamin Herrenschmidt #define PHB_LEM_FIR_AND_MASK            0xc08
2674f9924c4SBenjamin Herrenschmidt #define PHB_LEM_FIR_OR_MASK             0xc10
2684f9924c4SBenjamin Herrenschmidt #define PHB_LEM_ERROR_MASK              0xc18
2694f9924c4SBenjamin Herrenschmidt #define PHB_LEM_ERROR_AND_MASK          0xc20
2704f9924c4SBenjamin Herrenschmidt #define PHB_LEM_ERROR_OR_MASK           0xc28
2714f9924c4SBenjamin Herrenschmidt #define PHB_LEM_ACTION0                 0xc30
2724f9924c4SBenjamin Herrenschmidt #define PHB_LEM_ACTION1                 0xc38
2734f9924c4SBenjamin Herrenschmidt #define PHB_LEM_WOF                     0xc40
2744f9924c4SBenjamin Herrenschmidt #define PHB_ERR_STATUS                  0xc80
2754f9924c4SBenjamin Herrenschmidt #define PHB_ERR1_STATUS                 0xc88
2764f9924c4SBenjamin Herrenschmidt #define PHB_ERR_INJECT                  0xc90
2774f9924c4SBenjamin Herrenschmidt #define PHB_ERR_LEM_ENABLE              0xc98
2784f9924c4SBenjamin Herrenschmidt #define PHB_ERR_IRQ_ENABLE              0xca0
2794f9924c4SBenjamin Herrenschmidt #define PHB_ERR_FREEZE_ENABLE           0xca8
2804f9924c4SBenjamin Herrenschmidt #define PHB_ERR_AIB_FENCE_ENABLE        0xcb0
2814f9924c4SBenjamin Herrenschmidt #define PHB_ERR_LOG_0                   0xcc0
2824f9924c4SBenjamin Herrenschmidt #define PHB_ERR_LOG_1                   0xcc8
2834f9924c4SBenjamin Herrenschmidt #define PHB_ERR_STATUS_MASK             0xcd0
2844f9924c4SBenjamin Herrenschmidt #define PHB_ERR1_STATUS_MASK            0xcd8
2854f9924c4SBenjamin Herrenschmidt 
2864f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_STATUS                      0xd00
2874f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR1_STATUS                     0xd08
2884f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_INJECT                      0xd10
2894f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_LEM_ENABLE                  0xd18
2904f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_IRQ_ENABLE                  0xd20
2914f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_FREEZE_ENABLE               0xd28
2924f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_AIB_FENCE_ENABLE            0xd30
2934f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_LOG_0                       0xd40
2944f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_LOG_1                       0xd48
2954f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR_STATUS_MASK                 0xd50
2964f9924c4SBenjamin Herrenschmidt #define PHB_TXE_ERR1_STATUS_MASK                0xd58
2974f9924c4SBenjamin Herrenschmidt 
2984f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_STATUS                  0xd80
2994f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR1_STATUS                 0xd88
3004f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_INJECT                  0xd90
3014f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_LEM_ENABLE              0xd98
3024f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_IRQ_ENABLE              0xda0
3034f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_FREEZE_ENABLE           0xda8
3044f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_AIB_FENCE_ENABLE        0xdb0
3054f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_LOG_0                   0xdc0
3064f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_LOG_1                   0xdc8
3074f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR_STATUS_MASK             0xdd0
3084f9924c4SBenjamin Herrenschmidt #define PHB_RXE_ARB_ERR1_STATUS_MASK            0xdd8
3094f9924c4SBenjamin Herrenschmidt 
3104f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_STATUS                  0xe00
3114f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR1_STATUS                 0xe08
3124f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_INJECT                  0xe10
3134f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_LEM_ENABLE              0xe18
3144f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_IRQ_ENABLE              0xe20
3154f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_FREEZE_ENABLE           0xe28
3164f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_AIB_FENCE_ENABLE        0xe30
3174f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_LOG_0                   0xe40
3184f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_LOG_1                   0xe48
3194f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR_STATUS_MASK             0xe50
3204f9924c4SBenjamin Herrenschmidt #define PHB_RXE_MRG_ERR1_STATUS_MASK            0xe58
3214f9924c4SBenjamin Herrenschmidt 
3224f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_STATUS                  0xe80
3234f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR1_STATUS                 0xe88
3244f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_INJECT                  0xe90
3254f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_LEM_ENABLE              0xe98
3264f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_IRQ_ENABLE              0xea0
3274f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_FREEZE_ENABLE           0xea8
3284f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_AIB_FENCE_ENABLE        0xeb0
3294f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_LOG_0                   0xec0
3304f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_LOG_1                   0xec8
3314f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR_STATUS_MASK             0xed0
3324f9924c4SBenjamin Herrenschmidt #define PHB_RXE_TCE_ERR1_STATUS_MASK            0xed8
3334f9924c4SBenjamin Herrenschmidt 
3344f9924c4SBenjamin Herrenschmidt /* Performance monitor & Debug registers */
3354f9924c4SBenjamin Herrenschmidt #define PHB_TRACE_CONTROL                       0xf80
3364f9924c4SBenjamin Herrenschmidt #define PHB_PERFMON_CONFIG                      0xf88
3374f9924c4SBenjamin Herrenschmidt #define PHB_PERFMON_CTR0                        0xf90
3384f9924c4SBenjamin Herrenschmidt #define PHB_PERFMON_CTR1                        0xf98
3394f9924c4SBenjamin Herrenschmidt #define PHB_PERFMON_CTR2                        0xfa0
3404f9924c4SBenjamin Herrenschmidt #define PHB_PERFMON_CTR3                        0xfa8
3414f9924c4SBenjamin Herrenschmidt 
3424f9924c4SBenjamin Herrenschmidt /* Root complex config space memory mapped */
3434f9924c4SBenjamin Herrenschmidt #define PHB_RC_CONFIG_BASE                      0x1000
3444f9924c4SBenjamin Herrenschmidt #define   PHB_RC_CONFIG_SIZE                    0x800
3454f9924c4SBenjamin Herrenschmidt 
3464f9924c4SBenjamin Herrenschmidt /* PHB4 REGB registers */
3474f9924c4SBenjamin Herrenschmidt 
3484f9924c4SBenjamin Herrenschmidt /* PBL core */
3494f9924c4SBenjamin Herrenschmidt #define PHB_PBL_CONTROL                         0x1800
3504f9924c4SBenjamin Herrenschmidt #define PHB_PBL_TIMEOUT_CTRL                    0x1810
3514f9924c4SBenjamin Herrenschmidt #define PHB_PBL_NPTAG_ENABLE                    0x1820
3524f9924c4SBenjamin Herrenschmidt #define PHB_PBL_NBW_CMP_MASK                    0x1830
3534f9924c4SBenjamin Herrenschmidt #define   PHB_PBL_NBW_MASK_ENABLE               PPC_BIT(63)
3544f9924c4SBenjamin Herrenschmidt #define PHB_PBL_SYS_LINK_INIT                   0x1838
3554f9924c4SBenjamin Herrenschmidt #define PHB_PBL_BUF_STATUS                      0x1840
3564f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR_STATUS                      0x1900
3574f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR1_STATUS                     0x1908
3584f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR_INJECT                      0x1910
3594f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR_INF_ENABLE                  0x1920
3604f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR_ERC_ENABLE                  0x1928
3614f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR_FAT_ENABLE                  0x1930
3624f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR_LOG_0                       0x1940
3634f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR_LOG_1                       0x1948
3644f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR_STATUS_MASK                 0x1950
3654f9924c4SBenjamin Herrenschmidt #define PHB_PBL_ERR1_STATUS_MASK                0x1958
3664f9924c4SBenjamin Herrenschmidt 
3674f9924c4SBenjamin Herrenschmidt /* PCI-E stack */
3684f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_SCR                    0x1A00
3694f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_SCR_SLOT_CAP         PPC_BIT(15)
3704f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_SCR_MAXLINKSPEED     PPC_BITMASK(32, 35)
3714f9924c4SBenjamin Herrenschmidt 
3724f9924c4SBenjamin Herrenschmidt 
3734f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_CRESET                 0x1A10
3744f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_CRESET_CFG_CORE      PPC_BIT(0)
3754f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_CRESET_TLDLP         PPC_BIT(1)
3764f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_CRESET_PBL           PPC_BIT(2)
3774f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_CRESET_PERST_N       PPC_BIT(3)
3784f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_CRESET_PIPE_N        PPC_BIT(4)
3794f9924c4SBenjamin Herrenschmidt 
3804f9924c4SBenjamin Herrenschmidt 
3814f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_HOTPLUG_STATUS         0x1A20
3824f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_HPSTAT_PRESENCE      PPC_BIT(10)
3834f9924c4SBenjamin Herrenschmidt 
3844f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_DLP_TRAIN_CTL          0x1A40
3854f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_LINK_WIDTH       PPC_BITMASK(30, 35)
3864f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_LINK_SPEED       PPC_BITMASK(36, 39)
3874f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_LTSSM_TRC        PPC_BITMASK(24, 27)
3884f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_RESET    0
3894f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_DETECT   1
3904f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_POLLING  2
3914f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_CONFIG   3
3924f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_L0       4
3934f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_REC      5
3944f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_L1       6
3954f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_L2       7
3964f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_HOTRESET 8
3974f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_DISABLED 9
3984f9924c4SBenjamin Herrenschmidt #define     PHB_PCIE_DLP_LTSSM_LOOPBACK 10
3994f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_TL_LINKACT       PPC_BIT(23)
4004f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_DL_PGRESET       PPC_BIT(22)
4014f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_TRAINING         PPC_BIT(20)
4024f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_INBAND_PRESENCE  PPC_BIT(19)
4034f9924c4SBenjamin Herrenschmidt 
4044f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_DLP_CTL                0x1A78
4054f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_CTL_BYPASS_PH2   PPC_BIT(4)
4064f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_CTL_BYPASS_PH3   PPC_BIT(5)
4074f9924c4SBenjamin Herrenschmidt 
4084f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_DLP_TRWCTL             0x1A80
4094f9924c4SBenjamin Herrenschmidt #define   PHB_PCIE_DLP_TRWCTL_EN        PPC_BIT(0)
4104f9924c4SBenjamin Herrenschmidt 
4114f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_DLP_ERRLOG1            0x1AA0
4124f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_DLP_ERRLOG2            0x1AA8
4134f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_DLP_ERR_STATUS         0x1AB0
4144f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_DLP_ERR_COUNTERS       0x1AB8
4154f9924c4SBenjamin Herrenschmidt 
4164f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_LANE_EQ_CNTL0          0x1AD0
4174f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_LANE_EQ_CNTL1          0x1AD8
4184f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_LANE_EQ_CNTL2          0x1AE0
4194f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_LANE_EQ_CNTL3          0x1AE8
4204f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_LANE_EQ_CNTL20         0x1AF0
4214f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_LANE_EQ_CNTL21         0x1AF8
4224f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_LANE_EQ_CNTL22         0x1B00 /* DD1 only */
4234f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_LANE_EQ_CNTL23         0x1B08 /* DD1 only */
4244f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_TRACE_CTRL             0x1B20
4254f9924c4SBenjamin Herrenschmidt #define PHB_PCIE_MISC_STRAP             0x1B30
4264f9924c4SBenjamin Herrenschmidt 
4274f9924c4SBenjamin Herrenschmidt /* Error */
4284f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR_STATUS             0x1C00
4294f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR1_STATUS            0x1C08
4304f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR_INJECT             0x1C10
4314f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR_INF_ENABLE         0x1C20
4324f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR_ERC_ENABLE         0x1C28
4334f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR_FAT_ENABLE         0x1C30
4344f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR_LOG_0              0x1C40
4354f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR_LOG_1              0x1C48
4364f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR_STATUS_MASK        0x1C50
4374f9924c4SBenjamin Herrenschmidt #define PHB_REGB_ERR1_STATUS_MASK       0x1C58
4384f9924c4SBenjamin Herrenschmidt 
4394f9924c4SBenjamin Herrenschmidt /*
4404f9924c4SBenjamin Herrenschmidt  * IODA3 on-chip tables
4414f9924c4SBenjamin Herrenschmidt  */
4424f9924c4SBenjamin Herrenschmidt 
4434f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_LIST          1
4444f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_MIST          2
4454f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_RCAM          5
4464f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_MRT           6
4474f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_PESTA         7
4484f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_PESTB         8
4494f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_TVT           9
4504f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_TCR           10
4514f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_TDR           11
4524f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_MBT           16
4534f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_MDT           17
4544f9924c4SBenjamin Herrenschmidt #define IODA3_TBL_PEEV          20
4554f9924c4SBenjamin Herrenschmidt 
4564f9924c4SBenjamin Herrenschmidt /* LIST */
4574f9924c4SBenjamin Herrenschmidt #define IODA3_LIST_P                    PPC_BIT(6)
4584f9924c4SBenjamin Herrenschmidt #define IODA3_LIST_Q                    PPC_BIT(7)
4594f9924c4SBenjamin Herrenschmidt #define IODA3_LIST_STATE                PPC_BIT(14)
4604f9924c4SBenjamin Herrenschmidt 
4614f9924c4SBenjamin Herrenschmidt /* MIST */
4624f9924c4SBenjamin Herrenschmidt #define IODA3_MIST_P3                   PPC_BIT(48 + 0)
4634f9924c4SBenjamin Herrenschmidt #define IODA3_MIST_Q3                   PPC_BIT(48 + 1)
4644f9924c4SBenjamin Herrenschmidt #define IODA3_MIST_PE3                  PPC_BITMASK(48 + 4, 48 + 15)
4654f9924c4SBenjamin Herrenschmidt 
4664f9924c4SBenjamin Herrenschmidt /* TVT */
4674f9924c4SBenjamin Herrenschmidt #define IODA3_TVT_TABLE_ADDR            PPC_BITMASK(0, 47)
4684f9924c4SBenjamin Herrenschmidt #define IODA3_TVT_NUM_LEVELS            PPC_BITMASK(48, 50)
4694f9924c4SBenjamin Herrenschmidt #define   IODA3_TVE_1_LEVEL     0
4704f9924c4SBenjamin Herrenschmidt #define   IODA3_TVE_2_LEVELS    1
4714f9924c4SBenjamin Herrenschmidt #define   IODA3_TVE_3_LEVELS    2
4724f9924c4SBenjamin Herrenschmidt #define   IODA3_TVE_4_LEVELS    3
4734f9924c4SBenjamin Herrenschmidt #define   IODA3_TVE_5_LEVELS    4
4744f9924c4SBenjamin Herrenschmidt #define IODA3_TVT_TCE_TABLE_SIZE        PPC_BITMASK(51, 55)
4754f9924c4SBenjamin Herrenschmidt #define IODA3_TVT_NON_TRANSLATE_50      PPC_BIT(56)
4764f9924c4SBenjamin Herrenschmidt #define IODA3_TVT_IO_PSIZE              PPC_BITMASK(59, 63)
4774f9924c4SBenjamin Herrenschmidt 
4784f9924c4SBenjamin Herrenschmidt /* PESTA */
4794f9924c4SBenjamin Herrenschmidt #define IODA3_PESTA_MMIO_FROZEN         PPC_BIT(0)
4804f9924c4SBenjamin Herrenschmidt #define IODA3_PESTA_TRANS_TYPE          PPC_BITMASK(5, 7)
4814f9924c4SBenjamin Herrenschmidt #define  IODA3_PESTA_TRANS_TYPE_MMIOLOAD 0x4
4824f9924c4SBenjamin Herrenschmidt #define IODA3_PESTA_CA_CMPLT_TMT        PPC_BIT(8)
4834f9924c4SBenjamin Herrenschmidt #define IODA3_PESTA_UR                  PPC_BIT(9)
4844f9924c4SBenjamin Herrenschmidt 
4854f9924c4SBenjamin Herrenschmidt /* PESTB */
4864f9924c4SBenjamin Herrenschmidt #define IODA3_PESTB_DMA_STOPPED         PPC_BIT(0)
4874f9924c4SBenjamin Herrenschmidt 
4884f9924c4SBenjamin Herrenschmidt /* MDT */
4894f9924c4SBenjamin Herrenschmidt /* FIXME: check this field with Eric and add a B, C and D */
4904f9924c4SBenjamin Herrenschmidt #define IODA3_MDT_PE_A                  PPC_BITMASK(0, 15)
4914f9924c4SBenjamin Herrenschmidt #define IODA3_MDT_PE_B                  PPC_BITMASK(16, 31)
4924f9924c4SBenjamin Herrenschmidt #define IODA3_MDT_PE_C                  PPC_BITMASK(32, 47)
4934f9924c4SBenjamin Herrenschmidt #define IODA3_MDT_PE_D                  PPC_BITMASK(48, 63)
4944f9924c4SBenjamin Herrenschmidt 
4954f9924c4SBenjamin Herrenschmidt /* MBT */
4964f9924c4SBenjamin Herrenschmidt #define IODA3_MBT0_ENABLE               PPC_BIT(0)
4974f9924c4SBenjamin Herrenschmidt #define IODA3_MBT0_TYPE                 PPC_BIT(1)
4984f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_TYPE_M32           IODA3_MBT0_TYPE
4994f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_TYPE_M64           0
5004f9924c4SBenjamin Herrenschmidt #define IODA3_MBT0_MODE                 PPC_BITMASK(2, 3)
5014f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_MODE_PE_SEG        0
5024f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_MODE_MDT           1
5034f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_MODE_SINGLE_PE     2
5044f9924c4SBenjamin Herrenschmidt #define IODA3_MBT0_SEG_DIV              PPC_BITMASK(4, 5)
5054f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_SEG_DIV_MAX        0
5064f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_SEG_DIV_128        1
5074f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_SEG_DIV_64         2
5084f9924c4SBenjamin Herrenschmidt #define   IODA3_MBT0_SEG_DIV_8          3
5094f9924c4SBenjamin Herrenschmidt #define IODA3_MBT0_MDT_COLUMN           PPC_BITMASK(4, 5)
5104f9924c4SBenjamin Herrenschmidt #define IODA3_MBT0_BASE_ADDR            PPC_BITMASK(8, 51)
5114f9924c4SBenjamin Herrenschmidt 
5124f9924c4SBenjamin Herrenschmidt #define IODA3_MBT1_ENABLE               PPC_BIT(0)
5134f9924c4SBenjamin Herrenschmidt #define IODA3_MBT1_MASK                 PPC_BITMASK(8, 51)
5144f9924c4SBenjamin Herrenschmidt #define IODA3_MBT1_SEG_BASE             PPC_BITMASK(55, 63)
5154f9924c4SBenjamin Herrenschmidt #define IODA3_MBT1_SINGLE_PE_NUM        PPC_BITMASK(55, 63)
5164f9924c4SBenjamin Herrenschmidt 
5174f9924c4SBenjamin Herrenschmidt /*
5184f9924c4SBenjamin Herrenschmidt  * IODA3 in-memory tables
5194f9924c4SBenjamin Herrenschmidt  */
5204f9924c4SBenjamin Herrenschmidt 
5214f9924c4SBenjamin Herrenschmidt /*
5224f9924c4SBenjamin Herrenschmidt  * PEST
5234f9924c4SBenjamin Herrenschmidt  *
5244f9924c4SBenjamin Herrenschmidt  * 2x8 bytes entries, PEST0 and PEST1
5254f9924c4SBenjamin Herrenschmidt  */
5264f9924c4SBenjamin Herrenschmidt 
5274f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_MMIO_CAUSE          PPC_BIT(2)
5284f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_CFG_READ            PPC_BIT(3)
5294f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_CFG_WRITE           PPC_BIT(4)
5304f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_TTYPE               PPC_BITMASK(5, 7)
5314f9924c4SBenjamin Herrenschmidt #define   PEST_TTYPE_DMA_WRITE          0
5324f9924c4SBenjamin Herrenschmidt #define   PEST_TTYPE_MSI                1
5334f9924c4SBenjamin Herrenschmidt #define   PEST_TTYPE_DMA_READ           2
5344f9924c4SBenjamin Herrenschmidt #define   PEST_TTYPE_DMA_READ_RESP      3
5354f9924c4SBenjamin Herrenschmidt #define   PEST_TTYPE_MMIO_LOAD          4
5364f9924c4SBenjamin Herrenschmidt #define   PEST_TTYPE_MMIO_STORE         5
5374f9924c4SBenjamin Herrenschmidt #define   PEST_TTYPE_OTHER              7
5384f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_CA_RETURN           PPC_BIT(8)
5394f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_UR_RETURN           PPC_BIT(9)
5404f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_PCIE_NONFATAL       PPC_BIT(10)
5414f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_PCIE_FATAL          PPC_BIT(11)
5424f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_PARITY_UE           PPC_BIT(13)
5434f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_PCIE_CORRECTABLE    PPC_BIT(14)
5444f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_PCIE_INTERRUPT      PPC_BIT(15)
5454f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_MMIO_XLATE          PPC_BIT(16)
5464f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_IODA3_ERROR         PPC_BIT(16) /* Same bit as MMIO xlate */
5474f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_TCE_PAGE_FAULT      PPC_BIT(18)
5484f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_TCE_ACCESS_FAULT    PPC_BIT(19)
5494f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_DMA_RESP_TIMEOUT    PPC_BIT(20)
5504f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_AIB_SIZE_INVALID    PPC_BIT(21)
5514f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_LEM_BIT             PPC_BITMASK(26, 31)
5524f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_RID                 PPC_BITMASK(32, 47)
5534f9924c4SBenjamin Herrenschmidt #define IODA3_PEST0_MSI_DATA            PPC_BITMASK(48, 63)
5544f9924c4SBenjamin Herrenschmidt 
5554f9924c4SBenjamin Herrenschmidt #define IODA3_PEST1_FAIL_ADDR           PPC_BITMASK(3, 63)
5564f9924c4SBenjamin Herrenschmidt 
5574f9924c4SBenjamin Herrenschmidt 
5584f9924c4SBenjamin Herrenschmidt #endif /* PCI_HOST_PNV_PHB4_REGS_H */
559