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