1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2019, Xilinx, Inc. All rights reserved. 3*91f16700Schasinglulu * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved. 4*91f16700Schasinglulu * 5*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 6*91f16700Schasinglulu */ 7*91f16700Schasinglulu 8*91f16700Schasinglulu /* Versal PM nodes enums and defines */ 9*91f16700Schasinglulu 10*91f16700Schasinglulu #ifndef PM_NODE_H 11*91f16700Schasinglulu #define PM_NODE_H 12*91f16700Schasinglulu 13*91f16700Schasinglulu /********************************************************************* 14*91f16700Schasinglulu * Macro definitions 15*91f16700Schasinglulu ********************************************************************/ 16*91f16700Schasinglulu 17*91f16700Schasinglulu #define NODE_CLASS_SHIFT 26U 18*91f16700Schasinglulu #define NODE_SUBCLASS_SHIFT 20U 19*91f16700Schasinglulu #define NODE_TYPE_SHIFT 14U 20*91f16700Schasinglulu #define NODE_INDEX_SHIFT 0U 21*91f16700Schasinglulu #define NODE_CLASS_MASK_BITS GENMASK_32(5, 0) 22*91f16700Schasinglulu #define NODE_SUBCLASS_MASK_BITS GENMASK_32(5, 0) 23*91f16700Schasinglulu #define NODE_TYPE_MASK_BITS GENMASK_32(5, 0) 24*91f16700Schasinglulu #define NODE_INDEX_MASK_BITS GENMASK_32(13, 0) 25*91f16700Schasinglulu #define NODE_CLASS_MASK (NODE_CLASS_MASK_BITS << NODE_CLASS_SHIFT) 26*91f16700Schasinglulu #define NODE_SUBCLASS_MASK (NODE_SUBCLASS_MASK_BITS << NODE_SUBCLASS_SHIFT) 27*91f16700Schasinglulu #define NODE_TYPE_MASK (NODE_TYPE_MASK_BITS << NODE_TYPE_SHIFT) 28*91f16700Schasinglulu #define NODE_INDEX_MASK (NODE_INDEX_MASK_BITS << NODE_INDEX_SHIFT) 29*91f16700Schasinglulu 30*91f16700Schasinglulu #define NODEID(CLASS, SUBCLASS, TYPE, INDEX) \ 31*91f16700Schasinglulu ((((CLASS) & NODE_CLASS_MASK_BITS) << NODE_CLASS_SHIFT) | \ 32*91f16700Schasinglulu (((SUBCLASS) & NODE_SUBCLASS_MASK_BITS) << NODE_SUBCLASS_SHIFT) | \ 33*91f16700Schasinglulu (((TYPE) & NODE_TYPE_MASK_BITS) << NODE_TYPE_SHIFT) | \ 34*91f16700Schasinglulu (((INDEX) & NODE_INDEX_MASK_BITS) << NODE_INDEX_SHIFT)) 35*91f16700Schasinglulu 36*91f16700Schasinglulu #define NODECLASS(ID) (((ID) & NODE_CLASS_MASK) >> NODE_CLASS_SHIFT) 37*91f16700Schasinglulu #define NODESUBCLASS(ID) (((ID) & NODE_SUBCLASS_MASK) >> \ 38*91f16700Schasinglulu NODE_SUBCLASS_SHIFT) 39*91f16700Schasinglulu #define NODETYPE(ID) (((ID) & NODE_TYPE_MASK) >> NODE_TYPE_SHIFT) 40*91f16700Schasinglulu #define NODEINDEX(ID) (((ID) & NODE_INDEX_MASK) >> NODE_INDEX_SHIFT) 41*91f16700Schasinglulu 42*91f16700Schasinglulu /********************************************************************* 43*91f16700Schasinglulu * Enum definitions 44*91f16700Schasinglulu ********************************************************************/ 45*91f16700Schasinglulu 46*91f16700Schasinglulu /* Node class types */ 47*91f16700Schasinglulu enum pm_node_class { 48*91f16700Schasinglulu XPM_NODECLASS_MIN, 49*91f16700Schasinglulu 50*91f16700Schasinglulu XPM_NODECLASS_POWER, 51*91f16700Schasinglulu XPM_NODECLASS_CLOCK, 52*91f16700Schasinglulu XPM_NODECLASS_RESET, 53*91f16700Schasinglulu XPM_NODECLASS_MEMIC, 54*91f16700Schasinglulu XPM_NODECLASS_STMIC, 55*91f16700Schasinglulu XPM_NODECLASS_DEVICE, 56*91f16700Schasinglulu 57*91f16700Schasinglulu XPM_NODECLASS_MAX 58*91f16700Schasinglulu }; 59*91f16700Schasinglulu 60*91f16700Schasinglulu enum pm_device_node_subclass { 61*91f16700Schasinglulu /* Device types */ 62*91f16700Schasinglulu XPM_NODESUBCL_DEV_CORE = 1, 63*91f16700Schasinglulu XPM_NODESUBCL_DEV_PERIPH, 64*91f16700Schasinglulu XPM_NODESUBCL_DEV_MEM, 65*91f16700Schasinglulu XPM_NODESUBCL_DEV_SOC, 66*91f16700Schasinglulu XPM_NODESUBCL_DEV_MEM_CTRLR, 67*91f16700Schasinglulu XPM_NODESUBCL_DEV_PHY, 68*91f16700Schasinglulu }; 69*91f16700Schasinglulu 70*91f16700Schasinglulu enum pm_device_node_type { 71*91f16700Schasinglulu /* Device types */ 72*91f16700Schasinglulu XPM_NODETYPE_DEV_CORE_PMC = 1, 73*91f16700Schasinglulu XPM_NODETYPE_DEV_CORE_PSM, 74*91f16700Schasinglulu XPM_NODETYPE_DEV_CORE_APU, 75*91f16700Schasinglulu XPM_NODETYPE_DEV_CORE_RPU, 76*91f16700Schasinglulu XPM_NODETYPE_DEV_OCM, 77*91f16700Schasinglulu XPM_NODETYPE_DEV_TCM, 78*91f16700Schasinglulu XPM_NODETYPE_DEV_L2CACHE, 79*91f16700Schasinglulu XPM_NODETYPE_DEV_DDR, 80*91f16700Schasinglulu XPM_NODETYPE_DEV_PERIPH, 81*91f16700Schasinglulu XPM_NODETYPE_DEV_SOC, 82*91f16700Schasinglulu XPM_NODETYPE_DEV_GT, 83*91f16700Schasinglulu }; 84*91f16700Schasinglulu 85*91f16700Schasinglulu /* Device node Indexes */ 86*91f16700Schasinglulu enum pm_device_node_idx { 87*91f16700Schasinglulu /* Device nodes */ 88*91f16700Schasinglulu XPM_NODEIDX_DEV_MIN = 0x0, 89*91f16700Schasinglulu 90*91f16700Schasinglulu /* Processor devices */ 91*91f16700Schasinglulu XPM_NODEIDX_DEV_PMC_PROC = 0x1, 92*91f16700Schasinglulu XPM_NODEIDX_DEV_PSM_PROC = 0x2, 93*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_0 = 0x3, 94*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_1 = 0x4, 95*91f16700Schasinglulu XPM_NODEIDX_DEV_RPU0_0 = 0x5, 96*91f16700Schasinglulu XPM_NODEIDX_DEV_RPU0_1 = 0x6, 97*91f16700Schasinglulu 98*91f16700Schasinglulu /* Memory devices */ 99*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_0 = 0x7, 100*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_1 = 0x8, 101*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_2 = 0x9, 102*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_3 = 0xA, 103*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_0_A = 0xB, 104*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_0_B = 0xC, 105*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_1_A = 0xD, 106*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_1_B = 0xE, 107*91f16700Schasinglulu XPM_NODEIDX_DEV_L2_BANK_0 = 0xF, 108*91f16700Schasinglulu XPM_NODEIDX_DEV_DDR_0 = 0x10, 109*91f16700Schasinglulu XPM_NODEIDX_DEV_DDR_1 = 0x11, 110*91f16700Schasinglulu XPM_NODEIDX_DEV_DDR_2 = 0x12, 111*91f16700Schasinglulu XPM_NODEIDX_DEV_DDR_3 = 0x13, 112*91f16700Schasinglulu XPM_NODEIDX_DEV_DDR_4 = 0x14, 113*91f16700Schasinglulu XPM_NODEIDX_DEV_DDR_5 = 0x15, 114*91f16700Schasinglulu XPM_NODEIDX_DEV_DDR_6 = 0x16, 115*91f16700Schasinglulu XPM_NODEIDX_DEV_DDR_7 = 0x17, 116*91f16700Schasinglulu 117*91f16700Schasinglulu /* LPD Peripheral devices */ 118*91f16700Schasinglulu XPM_NODEIDX_DEV_USB_0 = 0x18, 119*91f16700Schasinglulu XPM_NODEIDX_DEV_GEM_0 = 0x19, 120*91f16700Schasinglulu XPM_NODEIDX_DEV_GEM_1 = 0x1A, 121*91f16700Schasinglulu XPM_NODEIDX_DEV_SPI_0 = 0x1B, 122*91f16700Schasinglulu XPM_NODEIDX_DEV_SPI_1 = 0x1C, 123*91f16700Schasinglulu XPM_NODEIDX_DEV_I2C_0 = 0x1D, 124*91f16700Schasinglulu XPM_NODEIDX_DEV_I2C_1 = 0x1E, 125*91f16700Schasinglulu XPM_NODEIDX_DEV_CAN_FD_0 = 0x1F, 126*91f16700Schasinglulu XPM_NODEIDX_DEV_CAN_FD_1 = 0x20, 127*91f16700Schasinglulu XPM_NODEIDX_DEV_UART_0 = 0x21, 128*91f16700Schasinglulu XPM_NODEIDX_DEV_UART_1 = 0x22, 129*91f16700Schasinglulu XPM_NODEIDX_DEV_GPIO = 0x23, 130*91f16700Schasinglulu XPM_NODEIDX_DEV_TTC_0 = 0x24, 131*91f16700Schasinglulu XPM_NODEIDX_DEV_TTC_1 = 0x25, 132*91f16700Schasinglulu XPM_NODEIDX_DEV_TTC_2 = 0x26, 133*91f16700Schasinglulu XPM_NODEIDX_DEV_TTC_3 = 0x27, 134*91f16700Schasinglulu XPM_NODEIDX_DEV_SWDT_LPD = 0x28, 135*91f16700Schasinglulu 136*91f16700Schasinglulu /* FPD Peripheral devices */ 137*91f16700Schasinglulu XPM_NODEIDX_DEV_SWDT_FPD = 0x29, 138*91f16700Schasinglulu 139*91f16700Schasinglulu /* PMC Peripheral devices */ 140*91f16700Schasinglulu XPM_NODEIDX_DEV_OSPI = 0x2A, 141*91f16700Schasinglulu XPM_NODEIDX_DEV_QSPI = 0x2B, 142*91f16700Schasinglulu XPM_NODEIDX_DEV_GPIO_PMC = 0x2C, 143*91f16700Schasinglulu XPM_NODEIDX_DEV_I2C_PMC = 0x2D, 144*91f16700Schasinglulu XPM_NODEIDX_DEV_SDIO_0 = 0x2E, 145*91f16700Schasinglulu XPM_NODEIDX_DEV_SDIO_1 = 0x2F, 146*91f16700Schasinglulu 147*91f16700Schasinglulu XPM_NODEIDX_DEV_PL_0 = 0x30, 148*91f16700Schasinglulu XPM_NODEIDX_DEV_PL_1 = 0x31, 149*91f16700Schasinglulu XPM_NODEIDX_DEV_PL_2 = 0x32, 150*91f16700Schasinglulu XPM_NODEIDX_DEV_PL_3 = 0x33, 151*91f16700Schasinglulu XPM_NODEIDX_DEV_RTC = 0x34, 152*91f16700Schasinglulu XPM_NODEIDX_DEV_ADMA_0 = 0x35, 153*91f16700Schasinglulu XPM_NODEIDX_DEV_ADMA_1 = 0x36, 154*91f16700Schasinglulu XPM_NODEIDX_DEV_ADMA_2 = 0x37, 155*91f16700Schasinglulu XPM_NODEIDX_DEV_ADMA_3 = 0x38, 156*91f16700Schasinglulu XPM_NODEIDX_DEV_ADMA_4 = 0x39, 157*91f16700Schasinglulu XPM_NODEIDX_DEV_ADMA_5 = 0x3A, 158*91f16700Schasinglulu XPM_NODEIDX_DEV_ADMA_6 = 0x3B, 159*91f16700Schasinglulu XPM_NODEIDX_DEV_ADMA_7 = 0x3C, 160*91f16700Schasinglulu XPM_NODEIDX_DEV_IPI_0 = 0x3D, 161*91f16700Schasinglulu XPM_NODEIDX_DEV_IPI_1 = 0x3E, 162*91f16700Schasinglulu XPM_NODEIDX_DEV_IPI_2 = 0x3F, 163*91f16700Schasinglulu XPM_NODEIDX_DEV_IPI_3 = 0x40, 164*91f16700Schasinglulu XPM_NODEIDX_DEV_IPI_4 = 0x41, 165*91f16700Schasinglulu XPM_NODEIDX_DEV_IPI_5 = 0x42, 166*91f16700Schasinglulu XPM_NODEIDX_DEV_IPI_6 = 0x43, 167*91f16700Schasinglulu 168*91f16700Schasinglulu /* Entire SoC */ 169*91f16700Schasinglulu XPM_NODEIDX_DEV_SOC = 0x44, 170*91f16700Schasinglulu 171*91f16700Schasinglulu /* DDR memory controllers */ 172*91f16700Schasinglulu XPM_NODEIDX_DEV_DDRMC_0 = 0x45, 173*91f16700Schasinglulu XPM_NODEIDX_DEV_DDRMC_1 = 0x46, 174*91f16700Schasinglulu XPM_NODEIDX_DEV_DDRMC_2 = 0x47, 175*91f16700Schasinglulu XPM_NODEIDX_DEV_DDRMC_3 = 0x48, 176*91f16700Schasinglulu 177*91f16700Schasinglulu /* GT devices */ 178*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_0 = 0x49, 179*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_1 = 0x4A, 180*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_2 = 0x4B, 181*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_3 = 0x4C, 182*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_4 = 0x4D, 183*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_5 = 0x4E, 184*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_6 = 0x4F, 185*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_7 = 0x50, 186*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_8 = 0x51, 187*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_9 = 0x52, 188*91f16700Schasinglulu XPM_NODEIDX_DEV_GT_10 = 0x53, 189*91f16700Schasinglulu 190*91f16700Schasinglulu #if defined(PLAT_versal_net) 191*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_0_0 = 0xAF, 192*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_0_1 = 0xB0, 193*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_0_2 = 0xB1, 194*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_0_3 = 0xB2, 195*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_1_0 = 0xB3, 196*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_1_1 = 0xB4, 197*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_1_2 = 0xB5, 198*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_1_3 = 0xB6, 199*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_2_0 = 0xB7, 200*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_2_1 = 0xB8, 201*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_2_2 = 0xB9, 202*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_2_3 = 0xBA, 203*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_3_0 = 0xBB, 204*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_3_1 = 0xBC, 205*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_3_2 = 0xBD, 206*91f16700Schasinglulu XPM_NODEIDX_DEV_ACPU_3_3 = 0xBE, 207*91f16700Schasinglulu XPM_NODEIDX_DEV_RPU_A_0 = 0xBF, 208*91f16700Schasinglulu XPM_NODEIDX_DEV_RPU_A_1 = 0xC0, 209*91f16700Schasinglulu XPM_NODEIDX_DEV_RPU_B_0 = 0xC1, 210*91f16700Schasinglulu XPM_NODEIDX_DEV_RPU_B_1 = 0xC2, 211*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_0_0 = 0xC3, 212*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_0_1 = 0xC4, 213*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_0_2 = 0xC5, 214*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_0_3 = 0xC6, 215*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_1_0 = 0xC7, 216*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_1_1 = 0xC8, 217*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_1_2 = 0xC9, 218*91f16700Schasinglulu XPM_NODEIDX_DEV_OCM_1_3 = 0xCA, 219*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_A_0A = 0xCB, 220*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_A_0B = 0xCC, 221*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_A_0C = 0xCD, 222*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_A_1A = 0xCE, 223*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_A_1B = 0xCF, 224*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_A_1C = 0xD0, 225*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_B_0A = 0xD1, 226*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_B_0B = 0xD2, 227*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_B_0C = 0xD3, 228*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_B_1A = 0xD4, 229*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_B_1B = 0xD5, 230*91f16700Schasinglulu XPM_NODEIDX_DEV_TCM_B_1C = 0xD6, 231*91f16700Schasinglulu XPM_NODEIDX_DEV_USB_1 = 0xD7, 232*91f16700Schasinglulu XPM_NODEIDX_DEV_PMC_WWDT = 0xD8, 233*91f16700Schasinglulu XPM_NODEIDX_DEV_LPD_SWDT_0 = 0xD9, 234*91f16700Schasinglulu XPM_NODEIDX_DEV_LPD_SWDT_1 = 0xDA, 235*91f16700Schasinglulu XPM_NODEIDX_DEV_FPD_SWDT_0 = 0xDB, 236*91f16700Schasinglulu XPM_NODEIDX_DEV_FPD_SWDT_1 = 0xDC, 237*91f16700Schasinglulu XPM_NODEIDX_DEV_FPD_SWDT_2 = 0xDD, 238*91f16700Schasinglulu XPM_NODEIDX_DEV_FPD_SWDT_3 = 0xDE, 239*91f16700Schasinglulu #endif 240*91f16700Schasinglulu XPM_NODEIDX_DEV_MAX, 241*91f16700Schasinglulu }; 242*91f16700Schasinglulu 243*91f16700Schasinglulu #endif /* PM_NODE_H */ 244