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