historical/m0-applesillicon.git/xnu-qemu-arm64-5.1.0/roms/skiboot/include/xscom-p9-regs.h
2024-01-16 11:20:27 -06:00

85 lines
2.8 KiB
C

#ifndef __XSCOM_P9_REGS_H__
#define __XSCOM_P9_REGS_H__
/* Core FIR (Fault Isolation Register) */
#define P9_CORE_FIR 0x20010A40
/* Core WOF (Whose On First) */
#define P9_CORE_WOF 0x20010A48
/* pMisc Receive Malfunction Alert Register */
#define P9_MALFUNC_ALERT 0x00090022
#define P9_NX_STATUS_REG 0x02011040 /* NX status register */
#define P9_NX_DMA_ENGINE_FIR 0x02011100 /* DMA & Engine FIR Data Register */
#define P9_NX_PBI_FIR 0x02011080 /* PowerBus Interface FIR Register */
/*
* Bit 54 from NX status register is set to 1 when HMI interrupt is triggered
* due to NX checksop.
*/
#define NX_HMI_ACTIVE PPC_BIT(54)
/* Direct controls */
#define P9_EC_DIRECT_CONTROLS 0x10a9c
#define P9_THREAD_STOP(t) PPC_BIT(7 + 8*(t))
#define P9_THREAD_CONT(t) PPC_BIT(6 + 8*(t))
#define P9_THREAD_SRESET(t) PPC_BIT(4 + 8*(t))
#define P9_THREAD_CLEAR_MAINT(t) PPC_BIT(3 + 8*(t))
#define P9_THREAD_PWR(t) PPC_BIT(32 + 8*(t))
#define P9_RAS_STATUS 0x10a02
#define P9_THREAD_QUIESCED(t) PPC_BITMASK(0 + 8*(t), 3 + 8*(t))
#define P9_CORE_THREAD_STATE 0x10ab3
#define P9_THREAD_INFO 0x10a9b
/* EC_PPM_SPECIAL_WKUP_HYP */
#define P9_SPWKUP_SET PPC_BIT(0)
#define P9_EC_PPM_SSHHYP 0x0114
#define P9_CORE_GATED PPC_BIT(0)
#define P9_SPECIAL_WKUP_DONE PPC_BIT(1)
/* EX (core pair) registers, use XSCOM_ADDR_P9_EX to access */
#define P9X_EX_NCU_STATUS_REG 0x1100f
#define P9X_EX_NCU_SPEC_BAR 0x11010
#define P9X_EX_NCU_SPEC_BAR_ENABLE PPC_BIT(0)
#define P9X_EX_NCU_SPEC_BAR_256K PPC_BIT(1)
#define P9X_EX_NCU_SPEC_BAR_ADDRMSK 0x0fffffffffffc000ull /* naturally aligned */
#define P9X_NX_MMIO_BAR 0x201108d
#define P9X_NX_MMIO_BAR_EN PPC_BIT(52)
#define P9X_NX_MMIO_OFFSET 0x00060302031d0000ull
#define P9X_NX_RNG_CFG 0x20110E0
#define P9X_NX_RNG_CFG_EN PPC_BIT(63)
#define P9X_EX_NCU_DARN_BAR 0x11011
#define P9X_EX_NCU_DARN_BAR_EN PPC_BIT(0)
#define P9_GPIO_DATA_OUT 0x00000000000B0051ull
#define P9_GPIO_DATA_OUT_ENABLE 0x00000000000B0054ull
#define P9_GPIO_INTERRUPT_STATUS 0x00000000000B0057ull
#define P9_GPIO_INTERRUPT_ENABLE 0x00000000000B005Dull
#define P9_GPIO_INTERRUPT_CONDITION 0x00000000000B005Eull
/* xscom address for SCOM Control and data Register */
/* bits 54:60 of SCOM SPRC register is used for core specific SPR selection. */
#define P9_SCOM_SPRC 0x20010A80
#define P9_SCOMC_SPR_SELECT PPC_BITMASK(54, 60)
#define P9_SCOMC_TFMR_T0 0x8 /* 0b0001000 TFMR */
#define P9_SCOM_SPRD 0x20010A81
#define PB_CENT_HP_MODE_CURR 0x5011c0c
#define PB_CFG_CHG_RATE_GP_MASTER PPC_BIT(2)
#define PB_CFG_PUMP_MODE PPC_BIT(54)
/* Power 9 EC slave per-core power mgt slave registers */
#define EC_PPM_SPECIAL_WKUP_OTR 0x010A
#define EC_PPM_SPECIAL_WKUP_FSP 0x010B
#define EC_PPM_SPECIAL_WKUP_OCC 0x010C
#define EC_PPM_SPECIAL_WKUP_HYP 0x010D
#endif /* __XSCOM_P9_REGS_H__ */