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