1*a92681d9SJay Buddhabhatti /* 2*a92681d9SJay Buddhabhatti * Copyright (c) 2019, Xilinx, Inc. All rights reserved. 3*a92681d9SJay Buddhabhatti * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved. 4*a92681d9SJay Buddhabhatti * 5*a92681d9SJay Buddhabhatti * SPDX-License-Identifier: BSD-3-Clause 6*a92681d9SJay Buddhabhatti */ 7*a92681d9SJay Buddhabhatti 8*a92681d9SJay Buddhabhatti /* Versal PM nodes enums and defines */ 9*a92681d9SJay Buddhabhatti 10*a92681d9SJay Buddhabhatti #ifndef PM_NODE_H 11*a92681d9SJay Buddhabhatti #define PM_NODE_H 12*a92681d9SJay Buddhabhatti 13*a92681d9SJay Buddhabhatti /********************************************************************* 14*a92681d9SJay Buddhabhatti * Macro definitions 15*a92681d9SJay Buddhabhatti ********************************************************************/ 16*a92681d9SJay Buddhabhatti 17*a92681d9SJay Buddhabhatti #define NODE_CLASS_SHIFT 26U 18*a92681d9SJay Buddhabhatti #define NODE_SUBCLASS_SHIFT 20U 19*a92681d9SJay Buddhabhatti #define NODE_TYPE_SHIFT 14U 20*a92681d9SJay Buddhabhatti #define NODE_INDEX_SHIFT 0U 21*a92681d9SJay Buddhabhatti #define NODE_CLASS_MASK_BITS 0x3F 22*a92681d9SJay Buddhabhatti #define NODE_SUBCLASS_MASK_BITS 0x3F 23*a92681d9SJay Buddhabhatti #define NODE_TYPE_MASK_BITS 0x3F 24*a92681d9SJay Buddhabhatti #define NODE_INDEX_MASK_BITS 0x3FFF 25*a92681d9SJay Buddhabhatti #define NODE_CLASS_MASK (NODE_CLASS_MASK_BITS << NODE_CLASS_SHIFT) 26*a92681d9SJay Buddhabhatti #define NODE_SUBCLASS_MASK (NODE_SUBCLASS_MASK_BITS << NODE_SUBCLASS_SHIFT) 27*a92681d9SJay Buddhabhatti #define NODE_TYPE_MASK (NODE_TYPE_MASK_BITS << NODE_TYPE_SHIFT) 28*a92681d9SJay Buddhabhatti #define NODE_INDEX_MASK (NODE_INDEX_MASK_BITS << NODE_INDEX_SHIFT) 29*a92681d9SJay Buddhabhatti 30*a92681d9SJay Buddhabhatti #define NODEID(CLASS, SUBCLASS, TYPE, INDEX) \ 31*a92681d9SJay Buddhabhatti ((((CLASS) & NODE_CLASS_MASK_BITS) << NODE_CLASS_SHIFT) | \ 32*a92681d9SJay Buddhabhatti (((SUBCLASS) & NODE_SUBCLASS_MASK_BITS) << NODE_SUBCLASS_SHIFT) | \ 33*a92681d9SJay Buddhabhatti (((TYPE) & NODE_TYPE_MASK_BITS) << NODE_TYPE_SHIFT) | \ 34*a92681d9SJay Buddhabhatti (((INDEX) & NODE_INDEX_MASK_BITS) << NODE_INDEX_SHIFT)) 35*a92681d9SJay Buddhabhatti 36*a92681d9SJay Buddhabhatti #define NODECLASS(ID) (((ID) & NODE_CLASS_MASK) >> NODE_CLASS_SHIFT) 37*a92681d9SJay Buddhabhatti #define NODESUBCLASS(ID) (((ID) & NODE_SUBCLASS_MASK) >> \ 38*a92681d9SJay Buddhabhatti NODE_SUBCLASS_SHIFT) 39*a92681d9SJay Buddhabhatti #define NODETYPE(ID) (((ID) & NODE_TYPE_MASK) >> NODE_TYPE_SHIFT) 40*a92681d9SJay Buddhabhatti #define NODEINDEX(ID) (((ID) & NODE_INDEX_MASK) >> NODE_INDEX_SHIFT) 41*a92681d9SJay Buddhabhatti 42*a92681d9SJay Buddhabhatti /********************************************************************* 43*a92681d9SJay Buddhabhatti * Enum definitions 44*a92681d9SJay Buddhabhatti ********************************************************************/ 45*a92681d9SJay Buddhabhatti 46*a92681d9SJay Buddhabhatti /* Node class types */ 47*a92681d9SJay Buddhabhatti enum pm_node_class { 48*a92681d9SJay Buddhabhatti XPM_NODECLASS_MIN, 49*a92681d9SJay Buddhabhatti 50*a92681d9SJay Buddhabhatti XPM_NODECLASS_POWER, 51*a92681d9SJay Buddhabhatti XPM_NODECLASS_CLOCK, 52*a92681d9SJay Buddhabhatti XPM_NODECLASS_RESET, 53*a92681d9SJay Buddhabhatti XPM_NODECLASS_MEMIC, 54*a92681d9SJay Buddhabhatti XPM_NODECLASS_STMIC, 55*a92681d9SJay Buddhabhatti XPM_NODECLASS_DEVICE, 56*a92681d9SJay Buddhabhatti 57*a92681d9SJay Buddhabhatti XPM_NODECLASS_MAX 58*a92681d9SJay Buddhabhatti }; 59*a92681d9SJay Buddhabhatti 60*a92681d9SJay Buddhabhatti enum pm_device_node_subclass { 61*a92681d9SJay Buddhabhatti /* Device types */ 62*a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_CORE = 1, 63*a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_PERIPH, 64*a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_MEM, 65*a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_SOC, 66*a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_MEM_CTRLR, 67*a92681d9SJay Buddhabhatti XPM_NODESUBCL_DEV_PHY, 68*a92681d9SJay Buddhabhatti }; 69*a92681d9SJay Buddhabhatti 70*a92681d9SJay Buddhabhatti enum pm_device_node_type { 71*a92681d9SJay Buddhabhatti /* Device types */ 72*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_CORE_PMC = 1, 73*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_CORE_PSM, 74*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_CORE_APU, 75*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_CORE_RPU, 76*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_OCM, 77*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_TCM, 78*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_L2CACHE, 79*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_DDR, 80*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_PERIPH, 81*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_SOC, 82*a92681d9SJay Buddhabhatti XPM_NODETYPE_DEV_GT, 83*a92681d9SJay Buddhabhatti }; 84*a92681d9SJay Buddhabhatti 85*a92681d9SJay Buddhabhatti /* Device node Indexes */ 86*a92681d9SJay Buddhabhatti enum pm_device_node_idx { 87*a92681d9SJay Buddhabhatti /* Device nodes */ 88*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_MIN, 89*a92681d9SJay Buddhabhatti 90*a92681d9SJay Buddhabhatti /* Processor devices */ 91*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_PMC_PROC, 92*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_PSM_PROC, 93*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_0, 94*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ACPU_1, 95*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_RPU0_0, 96*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_RPU0_1, 97*a92681d9SJay Buddhabhatti 98*a92681d9SJay Buddhabhatti /* Memory devices */ 99*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_OCM_0, 100*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_OCM_1, 101*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_OCM_2, 102*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_OCM_3, 103*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_TCM_0_A, 104*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_TCM_0_B, 105*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_TCM_1_A, 106*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_TCM_1_B, 107*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_L2_BANK_0, 108*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_0, 109*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_1, 110*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_2, 111*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_3, 112*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_4, 113*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_5, 114*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_6, 115*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDR_7, 116*a92681d9SJay Buddhabhatti 117*a92681d9SJay Buddhabhatti /* LPD Peripheral devices */ 118*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_USB_0, 119*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GEM_0, 120*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GEM_1, 121*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_SPI_0, 122*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_SPI_1, 123*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_I2C_0, 124*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_I2C_1, 125*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_CAN_FD_0, 126*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_CAN_FD_1, 127*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_UART_0, 128*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_UART_1, 129*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GPIO, 130*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_TTC_0, 131*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_TTC_1, 132*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_TTC_2, 133*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_TTC_3, 134*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_SWDT_LPD, 135*a92681d9SJay Buddhabhatti 136*a92681d9SJay Buddhabhatti /* FPD Peripheral devices */ 137*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_SWDT_FPD, 138*a92681d9SJay Buddhabhatti 139*a92681d9SJay Buddhabhatti /* PMC Peripheral devices */ 140*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_OSPI, 141*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_QSPI, 142*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GPIO_PMC, 143*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_I2C_PMC, 144*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_SDIO_0, 145*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_SDIO_1, 146*a92681d9SJay Buddhabhatti 147*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_PL_0, 148*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_PL_1, 149*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_PL_2, 150*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_PL_3, 151*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_RTC, 152*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_0, 153*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_1, 154*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_2, 155*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_3, 156*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_4, 157*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_5, 158*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_6, 159*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_ADMA_7, 160*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_0, 161*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_1, 162*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_2, 163*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_3, 164*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_4, 165*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_5, 166*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_IPI_6, 167*a92681d9SJay Buddhabhatti 168*a92681d9SJay Buddhabhatti /* Entire SoC */ 169*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_SOC, 170*a92681d9SJay Buddhabhatti 171*a92681d9SJay Buddhabhatti /* DDR memory controllers */ 172*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDRMC_0, 173*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDRMC_1, 174*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDRMC_2, 175*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_DDRMC_3, 176*a92681d9SJay Buddhabhatti 177*a92681d9SJay Buddhabhatti /* GT devices */ 178*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_0, 179*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_1, 180*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_2, 181*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_3, 182*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_4, 183*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_5, 184*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_6, 185*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_7, 186*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_8, 187*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_9, 188*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_GT_10, 189*a92681d9SJay Buddhabhatti 190*a92681d9SJay Buddhabhatti XPM_NODEIDX_DEV_MAX 191*a92681d9SJay Buddhabhatti }; 192*a92681d9SJay Buddhabhatti 193*a92681d9SJay Buddhabhatti #endif /* PM_NODE_H */ 194