| /* |
| * Copyright (c) 2019, Xilinx, Inc. All rights reserved. |
| * |
| * SPDX-License-Identifier: BSD-3-Clause |
| */ |
| |
| /* Versal PM nodes enums and defines */ |
| |
| #ifndef PM_NODE_H |
| #define PM_NODE_H |
| |
| /********************************************************************* |
| * Macro definitions |
| ********************************************************************/ |
| |
| #define NODE_CLASS_SHIFT 26U |
| #define NODE_SUBCLASS_SHIFT 20U |
| #define NODE_TYPE_SHIFT 14U |
| #define NODE_INDEX_SHIFT 0U |
| #define NODE_CLASS_MASK_BITS 0x3F |
| #define NODE_SUBCLASS_MASK_BITS 0x3F |
| #define NODE_TYPE_MASK_BITS 0x3F |
| #define NODE_INDEX_MASK_BITS 0x3FFF |
| #define NODE_CLASS_MASK (NODE_CLASS_MASK_BITS << NODE_CLASS_SHIFT) |
| #define NODE_SUBCLASS_MASK (NODE_SUBCLASS_MASK_BITS << NODE_SUBCLASS_SHIFT) |
| #define NODE_TYPE_MASK (NODE_TYPE_MASK_BITS << NODE_TYPE_SHIFT) |
| #define NODE_INDEX_MASK (NODE_INDEX_MASK_BITS << NODE_INDEX_SHIFT) |
| |
| #define NODEID(CLASS, SUBCLASS, TYPE, INDEX) \ |
| ((((CLASS) & NODE_CLASS_MASK_BITS) << NODE_CLASS_SHIFT) | \ |
| (((SUBCLASS) & NODE_SUBCLASS_MASK_BITS) << NODE_SUBCLASS_SHIFT) | \ |
| (((TYPE) & NODE_TYPE_MASK_BITS) << NODE_TYPE_SHIFT) | \ |
| (((INDEX) & NODE_INDEX_MASK_BITS) << NODE_INDEX_SHIFT)) |
| |
| #define NODECLASS(ID) (((ID) & NODE_CLASS_MASK) >> NODE_CLASS_SHIFT) |
| #define NODESUBCLASS(ID) (((ID) & NODE_SUBCLASS_MASK) >> \ |
| NODE_SUBCLASS_SHIFT) |
| #define NODETYPE(ID) (((ID) & NODE_TYPE_MASK) >> NODE_TYPE_SHIFT) |
| #define NODEINDEX(ID) (((ID) & NODE_INDEX_MASK) >> NODE_INDEX_SHIFT) |
| |
| /********************************************************************* |
| * Enum definitions |
| ********************************************************************/ |
| |
| /* Node class types */ |
| enum pm_node_class { |
| XPM_NODECLASS_MIN, |
| |
| XPM_NODECLASS_POWER, |
| XPM_NODECLASS_CLOCK, |
| XPM_NODECLASS_RESET, |
| XPM_NODECLASS_MEMIC, |
| XPM_NODECLASS_STMIC, |
| XPM_NODECLASS_DEVICE, |
| |
| XPM_NODECLASS_MAX |
| }; |
| |
| enum pm_device_node_subclass { |
| /* Device types */ |
| XPM_NODESUBCL_DEV_CORE = 1, |
| XPM_NODESUBCL_DEV_PERIPH, |
| XPM_NODESUBCL_DEV_MEM, |
| XPM_NODESUBCL_DEV_SOC, |
| XPM_NODESUBCL_DEV_MEM_CTRLR, |
| XPM_NODESUBCL_DEV_PHY, |
| }; |
| |
| enum pm_device_node_type { |
| /* Device types */ |
| XPM_NODETYPE_DEV_CORE_PMC = 1, |
| XPM_NODETYPE_DEV_CORE_PSM, |
| XPM_NODETYPE_DEV_CORE_APU, |
| XPM_NODETYPE_DEV_CORE_RPU, |
| XPM_NODETYPE_DEV_OCM, |
| XPM_NODETYPE_DEV_TCM, |
| XPM_NODETYPE_DEV_L2CACHE, |
| XPM_NODETYPE_DEV_DDR, |
| XPM_NODETYPE_DEV_PERIPH, |
| XPM_NODETYPE_DEV_SOC, |
| XPM_NODETYPE_DEV_GT, |
| }; |
| |
| /* Device node Indexes */ |
| enum pm_device_node_idx { |
| /* Device nodes */ |
| XPM_NODEIDX_DEV_MIN, |
| |
| /* Processor devices */ |
| XPM_NODEIDX_DEV_PMC_PROC, |
| XPM_NODEIDX_DEV_PSM_PROC, |
| XPM_NODEIDX_DEV_ACPU_0, |
| XPM_NODEIDX_DEV_ACPU_1, |
| XPM_NODEIDX_DEV_RPU0_0, |
| XPM_NODEIDX_DEV_RPU0_1, |
| |
| /* Memory devices */ |
| XPM_NODEIDX_DEV_OCM_0, |
| XPM_NODEIDX_DEV_OCM_1, |
| XPM_NODEIDX_DEV_OCM_2, |
| XPM_NODEIDX_DEV_OCM_3, |
| XPM_NODEIDX_DEV_TCM_0_A, |
| XPM_NODEIDX_DEV_TCM_0_B, |
| XPM_NODEIDX_DEV_TCM_1_A, |
| XPM_NODEIDX_DEV_TCM_1_B, |
| XPM_NODEIDX_DEV_L2_BANK_0, |
| XPM_NODEIDX_DEV_DDR_0, |
| XPM_NODEIDX_DEV_DDR_1, |
| XPM_NODEIDX_DEV_DDR_2, |
| XPM_NODEIDX_DEV_DDR_3, |
| XPM_NODEIDX_DEV_DDR_4, |
| XPM_NODEIDX_DEV_DDR_5, |
| XPM_NODEIDX_DEV_DDR_6, |
| XPM_NODEIDX_DEV_DDR_7, |
| |
| /* LPD Peripheral devices */ |
| XPM_NODEIDX_DEV_USB_0, |
| XPM_NODEIDX_DEV_GEM_0, |
| XPM_NODEIDX_DEV_GEM_1, |
| XPM_NODEIDX_DEV_SPI_0, |
| XPM_NODEIDX_DEV_SPI_1, |
| XPM_NODEIDX_DEV_I2C_0, |
| XPM_NODEIDX_DEV_I2C_1, |
| XPM_NODEIDX_DEV_CAN_FD_0, |
| XPM_NODEIDX_DEV_CAN_FD_1, |
| XPM_NODEIDX_DEV_UART_0, |
| XPM_NODEIDX_DEV_UART_1, |
| XPM_NODEIDX_DEV_GPIO, |
| XPM_NODEIDX_DEV_TTC_0, |
| XPM_NODEIDX_DEV_TTC_1, |
| XPM_NODEIDX_DEV_TTC_2, |
| XPM_NODEIDX_DEV_TTC_3, |
| XPM_NODEIDX_DEV_SWDT_LPD, |
| |
| /* FPD Peripheral devices */ |
| XPM_NODEIDX_DEV_SWDT_FPD, |
| |
| /* PMC Peripheral devices */ |
| XPM_NODEIDX_DEV_OSPI, |
| XPM_NODEIDX_DEV_QSPI, |
| XPM_NODEIDX_DEV_GPIO_PMC, |
| XPM_NODEIDX_DEV_I2C_PMC, |
| XPM_NODEIDX_DEV_SDIO_0, |
| XPM_NODEIDX_DEV_SDIO_1, |
| |
| XPM_NODEIDX_DEV_PL_0, |
| XPM_NODEIDX_DEV_PL_1, |
| XPM_NODEIDX_DEV_PL_2, |
| XPM_NODEIDX_DEV_PL_3, |
| XPM_NODEIDX_DEV_RTC, |
| XPM_NODEIDX_DEV_ADMA_0, |
| XPM_NODEIDX_DEV_ADMA_1, |
| XPM_NODEIDX_DEV_ADMA_2, |
| XPM_NODEIDX_DEV_ADMA_3, |
| XPM_NODEIDX_DEV_ADMA_4, |
| XPM_NODEIDX_DEV_ADMA_5, |
| XPM_NODEIDX_DEV_ADMA_6, |
| XPM_NODEIDX_DEV_ADMA_7, |
| XPM_NODEIDX_DEV_IPI_0, |
| XPM_NODEIDX_DEV_IPI_1, |
| XPM_NODEIDX_DEV_IPI_2, |
| XPM_NODEIDX_DEV_IPI_3, |
| XPM_NODEIDX_DEV_IPI_4, |
| XPM_NODEIDX_DEV_IPI_5, |
| XPM_NODEIDX_DEV_IPI_6, |
| |
| /* Entire SoC */ |
| XPM_NODEIDX_DEV_SOC, |
| |
| /* DDR memory controllers */ |
| XPM_NODEIDX_DEV_DDRMC_0, |
| XPM_NODEIDX_DEV_DDRMC_1, |
| XPM_NODEIDX_DEV_DDRMC_2, |
| XPM_NODEIDX_DEV_DDRMC_3, |
| |
| /* GT devices */ |
| XPM_NODEIDX_DEV_GT_0, |
| XPM_NODEIDX_DEV_GT_1, |
| XPM_NODEIDX_DEV_GT_2, |
| XPM_NODEIDX_DEV_GT_3, |
| XPM_NODEIDX_DEV_GT_4, |
| XPM_NODEIDX_DEV_GT_5, |
| XPM_NODEIDX_DEV_GT_6, |
| XPM_NODEIDX_DEV_GT_7, |
| XPM_NODEIDX_DEV_GT_8, |
| XPM_NODEIDX_DEV_GT_9, |
| XPM_NODEIDX_DEV_GT_10, |
| |
| XPM_NODEIDX_DEV_MAX |
| }; |
| |
| #endif /* PM_NODE_H */ |