1a92681d9SJay Buddhabhatti /* 2a92681d9SJay Buddhabhatti * Copyright (c) 2019, Xilinx, Inc. All rights reserved. 3a92681d9SJay Buddhabhatti * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved. 4a92681d9SJay Buddhabhatti * 5a92681d9SJay Buddhabhatti * SPDX-License-Identifier: BSD-3-Clause 6a92681d9SJay Buddhabhatti */ 7a92681d9SJay Buddhabhatti 8a92681d9SJay Buddhabhatti /* Versal PM nodes enums and defines */ 9a92681d9SJay Buddhabhatti 10a92681d9SJay Buddhabhatti #ifndef PM_NODE_H 11a92681d9SJay Buddhabhatti #define PM_NODE_H 12a92681d9SJay Buddhabhatti 13a92681d9SJay Buddhabhatti /********************************************************************* 14a92681d9SJay Buddhabhatti * Macro definitions 15a92681d9SJay Buddhabhatti ********************************************************************/ 16a92681d9SJay Buddhabhatti 17a92681d9SJay Buddhabhatti #define NODE_CLASS_SHIFT 26U 18a92681d9SJay Buddhabhatti #define NODE_SUBCLASS_SHIFT 20U 19a92681d9SJay Buddhabhatti #define NODE_TYPE_SHIFT 14U 20a92681d9SJay Buddhabhatti #define NODE_INDEX_SHIFT 0U 21964e5592SJay Buddhabhatti #define NODE_CLASS_MASK_BITS GENMASK_32(5, 0) 22964e5592SJay Buddhabhatti #define NODE_SUBCLASS_MASK_BITS GENMASK_32(5, 0) 23964e5592SJay Buddhabhatti #define NODE_TYPE_MASK_BITS GENMASK_32(5, 0) 24964e5592SJay Buddhabhatti #define NODE_INDEX_MASK_BITS GENMASK_32(13, 0) 25a92681d9SJay Buddhabhatti #define NODE_CLASS_MASK (NODE_CLASS_MASK_BITS << NODE_CLASS_SHIFT) 26a92681d9SJay Buddhabhatti #define NODE_SUBCLASS_MASK (NODE_SUBCLASS_MASK_BITS << NODE_SUBCLASS_SHIFT) 27a92681d9SJay Buddhabhatti #define NODE_TYPE_MASK (NODE_TYPE_MASK_BITS << NODE_TYPE_SHIFT) 28a92681d9SJay Buddhabhatti #define NODE_INDEX_MASK (NODE_INDEX_MASK_BITS << NODE_INDEX_SHIFT) 29a92681d9SJay Buddhabhatti 30a92681d9SJay Buddhabhatti #define NODEID(CLASS, SUBCLASS, TYPE, INDEX) \ 31a92681d9SJay Buddhabhatti ((((CLASS) & NODE_CLASS_MASK_BITS) << NODE_CLASS_SHIFT) | \ 32a92681d9SJay Buddhabhatti (((SUBCLASS) & NODE_SUBCLASS_MASK_BITS) << NODE_SUBCLASS_SHIFT) | \ 33a92681d9SJay Buddhabhatti (((TYPE) & NODE_TYPE_MASK_BITS) << NODE_TYPE_SHIFT) | \ 34a92681d9SJay Buddhabhatti (((INDEX) & NODE_INDEX_MASK_BITS) << NODE_INDEX_SHIFT)) 35a92681d9SJay Buddhabhatti 36a92681d9SJay Buddhabhatti #define NODECLASS(ID) (((ID) & NODE_CLASS_MASK) >> NODE_CLASS_SHIFT) 37a92681d9SJay Buddhabhatti #define NODESUBCLASS(ID) (((ID) & NODE_SUBCLASS_MASK) >> \ 38a92681d9SJay Buddhabhatti NODE_SUBCLASS_SHIFT) 39a92681d9SJay Buddhabhatti #define NODETYPE(ID) (((ID) & NODE_TYPE_MASK) >> NODE_TYPE_SHIFT) 40a92681d9SJay Buddhabhatti #define NODEINDEX(ID) (((ID) & NODE_INDEX_MASK) >> NODE_INDEX_SHIFT) 41a92681d9SJay Buddhabhatti 42a92681d9SJay Buddhabhatti /********************************************************************* 43a92681d9SJay Buddhabhatti * Enum definitions 44a92681d9SJay Buddhabhatti ********************************************************************/ 45a92681d9SJay Buddhabhatti 46a92681d9SJay Buddhabhatti /* Node class types */ 47a92681d9SJay Buddhabhatti enum pm_node_class { 48a92681d9SJay Buddhabhatti XPM_NODECLASS_MIN, 49a92681d9SJay Buddhabhatti 50a92681d9SJay Buddhabhatti XPM_NODECLASS_POWER, 51a92681d9SJay Buddhabhatti XPM_NODECLASS_CLOCK, 52a92681d9SJay Buddhabhatti XPM_NODECLASS_RESET, 53a92681d9SJay Buddhabhatti XPM_NODECLASS_MEMIC, 54a92681d9SJay Buddhabhatti XPM_NODECLASS_STMIC, 55a92681d9SJay Buddhabhatti XPM_NODECLASS_DEVICE, 56a92681d9SJay Buddhabhatti 57a92681d9SJay Buddhabhatti XPM_NODECLASS_MAX 58a92681d9SJay Buddhabhatti }; 59a92681d9SJay Buddhabhatti 60a92681d9SJay Buddhabhatti enum pm_device_node_subclass { 61a92681d9SJay Buddhabhatti /* Device types */ 62a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_CORE = 1, 63a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_PERIPH, 64a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_MEM, 65a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_SOC, 66a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_MEM_CTRLR, 67a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_PHY, 68a92681d9SJay Buddhabhatti }; 69a92681d9SJay Buddhabhatti 70a92681d9SJay Buddhabhatti enum pm_device_node_type { 71a92681d9SJay Buddhabhatti /* Device types */ 72a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_CORE_PMC = 1, 73a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_CORE_PSM, 74a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_CORE_APU, 75a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_CORE_RPU, 76a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_OCM, 77a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_TCM, 78a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_L2CACHE, 79a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_DDR, 80a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_PERIPH, 81a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_SOC, 82a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_GT, 83a92681d9SJay Buddhabhatti }; 84a92681d9SJay Buddhabhatti 85a92681d9SJay Buddhabhatti /* Device node Indexes */ 86a92681d9SJay Buddhabhatti enum pm_device_node_idx { 87a92681d9SJay Buddhabhatti /* Device nodes */ 885c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_MIN = 0x0, 89a92681d9SJay Buddhabhatti 90a92681d9SJay Buddhabhatti /* Processor devices */ 915c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_PMC_PROC = 0x1, 925c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_PSM_PROC = 0x2, 935c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_0 = 0x3, 945c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_1 = 0x4, 955c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_RPU0_0 = 0x5, 965c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_RPU0_1 = 0x6, 97a92681d9SJay Buddhabhatti 98a92681d9SJay Buddhabhatti /* Memory devices */ 995c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_OCM_0 = 0x7, 1005c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_OCM_1 = 0x8, 1015c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_OCM_2 = 0x9, 1025c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_OCM_3 = 0xA, 1035c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_TCM_0_A = 0xB, 1045c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_TCM_0_B = 0xC, 1055c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_TCM_1_A = 0xD, 1065c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_TCM_1_B = 0xE, 1075c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_L2_BANK_0 = 0xF, 1085c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_0 = 0x10, 1095c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_1 = 0x11, 1105c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_2 = 0x12, 1115c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_3 = 0x13, 1125c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_4 = 0x14, 1135c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_5 = 0x15, 1145c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_6 = 0x16, 1155c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_7 = 0x17, 116a92681d9SJay Buddhabhatti 117a92681d9SJay Buddhabhatti /* LPD Peripheral devices */ 1185c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_USB_0 = 0x18, 1195c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GEM_0 = 0x19, 1205c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GEM_1 = 0x1A, 1215c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_SPI_0 = 0x1B, 1225c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_SPI_1 = 0x1C, 1235c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_I2C_0 = 0x1D, 1245c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_I2C_1 = 0x1E, 1255c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_CAN_FD_0 = 0x1F, 1265c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_CAN_FD_1 = 0x20, 1275c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_UART_0 = 0x21, 1285c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_UART_1 = 0x22, 1295c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GPIO = 0x23, 1305c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_TTC_0 = 0x24, 1315c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_TTC_1 = 0x25, 1325c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_TTC_2 = 0x26, 1335c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_TTC_3 = 0x27, 1345c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_SWDT_LPD = 0x28, 135a92681d9SJay Buddhabhatti 136a92681d9SJay Buddhabhatti /* FPD Peripheral devices */ 1375c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_SWDT_FPD = 0x29, 138a92681d9SJay Buddhabhatti 139a92681d9SJay Buddhabhatti /* PMC Peripheral devices */ 1405c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_OSPI = 0x2A, 1415c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_QSPI = 0x2B, 1425c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GPIO_PMC = 0x2C, 1435c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_I2C_PMC = 0x2D, 1445c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_SDIO_0 = 0x2E, 1455c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_SDIO_1 = 0x2F, 146a92681d9SJay Buddhabhatti 1475c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_PL_0 = 0x30, 1485c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_PL_1 = 0x31, 1495c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_PL_2 = 0x32, 1505c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_PL_3 = 0x33, 1515c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_RTC = 0x34, 1525c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_0 = 0x35, 1535c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_1 = 0x36, 1545c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_2 = 0x37, 1555c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_3 = 0x38, 1565c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_4 = 0x39, 1575c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_5 = 0x3A, 1585c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_6 = 0x3B, 1595c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_7 = 0x3C, 1605c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_0 = 0x3D, 1615c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_1 = 0x3E, 1625c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_2 = 0x3F, 1635c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_3 = 0x40, 1645c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_4 = 0x41, 1655c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_5 = 0x42, 1665c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_6 = 0x43, 167a92681d9SJay Buddhabhatti 168a92681d9SJay Buddhabhatti /* Entire SoC */ 1695c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_SOC = 0x44, 170a92681d9SJay Buddhabhatti 171a92681d9SJay Buddhabhatti /* DDR memory controllers */ 1725c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDRMC_0 = 0x45, 1735c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDRMC_1 = 0x46, 1745c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDRMC_2 = 0x47, 1755c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_DDRMC_3 = 0x48, 176a92681d9SJay Buddhabhatti 177a92681d9SJay Buddhabhatti /* GT devices */ 1785c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_0 = 0x49, 1795c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_1 = 0x4A, 1805c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_2 = 0x4B, 1815c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_3 = 0x4C, 1825c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_4 = 0x4D, 1835c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_5 = 0x4E, 1845c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_6 = 0x4F, 1855c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_7 = 0x50, 1865c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_8 = 0x51, 1875c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_9 = 0x52, 1885c62d599SJay Buddhabhatti XPM_NODEIDX_DEV_GT_10 = 0x53, 189a92681d9SJay Buddhabhatti 190407eb6fdSJay Buddhabhatti #if defined(PLAT_versal_net) 191*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_0_0 = 0xAF, 192*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_0_1 = 0xB0, 193*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_0_2 = 0xB1, 194*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_0_3 = 0xB2, 195*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_1_0 = 0xB3, 196*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_1_1 = 0xB4, 197*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_1_2 = 0xB5, 198*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_1_3 = 0xB6, 199*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_2_0 = 0xB7, 200*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_2_1 = 0xB8, 201*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_2_2 = 0xB9, 202*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_2_3 = 0xBA, 203*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_3_0 = 0xBB, 204*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_3_1 = 0xBC, 205*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_3_2 = 0xBD, 206*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_3_3 = 0xBE, 207*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_RPU_A_0 = 0xBF, 208*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_RPU_A_1 = 0xC0, 209*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_RPU_B_0 = 0xC1, 210*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_RPU_B_1 = 0xC2, 211*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_OCM_0_0 = 0xC3, 212*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_OCM_0_1 = 0xC4, 213*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_OCM_0_2 = 0xC5, 214*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_OCM_0_3 = 0xC6, 215*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_OCM_1_0 = 0xC7, 216*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_OCM_1_1 = 0xC8, 217*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_OCM_1_2 = 0xC9, 218*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_OCM_1_3 = 0xCA, 219*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_A_0A = 0xCB, 220*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_A_0B = 0xCC, 221*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_A_0C = 0xCD, 222*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_A_1A = 0xCE, 223*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_A_1B = 0xCF, 224*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_A_1C = 0xD0, 225*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_B_0A = 0xD1, 226*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_B_0B = 0xD2, 227*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_B_0C = 0xD3, 228*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_B_1A = 0xD4, 229*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_B_1B = 0xD5, 230*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_TCM_B_1C = 0xD6, 231*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_USB_1 = 0xD7, 232*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_PMC_WWDT = 0xD8, 233*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_LPD_SWDT_0 = 0xD9, 234*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_LPD_SWDT_1 = 0xDA, 235*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_FPD_SWDT_0 = 0xDB, 236*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_FPD_SWDT_1 = 0xDC, 237*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_FPD_SWDT_2 = 0xDD, 238*66b5620cSJay Buddhabhatti XPM_NODEIDX_DEV_FPD_SWDT_3 = 0xDE, 239407eb6fdSJay Buddhabhatti #endif 240407eb6fdSJay Buddhabhatti XPM_NODEIDX_DEV_MAX, 241a92681d9SJay Buddhabhatti }; 242a92681d9SJay Buddhabhatti 243a92681d9SJay Buddhabhatti #endif /* PM_NODE_H */ 244