xref: /linux/drivers/pmdomain/mediatek/mt8188-pm-domains.h (revision 151bd6c55f73df589d88e84a948edf0f0b4e9bc0)
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2022 MediaTek Inc.
4  * Author: Garmin Chang <garmin.chang@mediatek.com>
5  */
6 
7 #ifndef __SOC_MEDIATEK_MT8188_PM_DOMAINS_H
8 #define __SOC_MEDIATEK_MT8188_PM_DOMAINS_H
9 
10 #include "mtk-pm-domains.h"
11 #include <dt-bindings/power/mediatek,mt8188-power.h>
12 
13 /*
14  * MT8188 power domain support
15  */
16 
17 static const struct scpsys_domain_data scpsys_domain_data_mt8188[] = {
18 	[MT8188_POWER_DOMAIN_MFG0] = {
19 		.name = "mfg0",
20 		.sta_mask = BIT(1),
21 		.ctl_offs = 0x300,
22 		.pwr_sta_offs = 0x174,
23 		.pwr_sta2nd_offs = 0x178,
24 		.sram_pdn_bits = BIT(8),
25 		.sram_pdn_ack_bits = BIT(12),
26 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_DOMAIN_SUPPLY,
27 	},
28 	[MT8188_POWER_DOMAIN_MFG1] = {
29 		.name = "mfg1",
30 		.sta_mask = BIT(2),
31 		.ctl_offs = 0x304,
32 		.pwr_sta_offs = 0x174,
33 		.pwr_sta2nd_offs = 0x178,
34 		.sram_pdn_bits = BIT(8),
35 		.sram_pdn_ack_bits = BIT(12),
36 		.bp_cfg = {
37 			BUS_PROT_WR(INFRA,
38 				    MT8188_TOP_AXI_PROT_EN_MFG1_STEP1,
39 				    MT8188_TOP_AXI_PROT_EN_SET,
40 				    MT8188_TOP_AXI_PROT_EN_CLR,
41 				    MT8188_TOP_AXI_PROT_EN_STA),
42 			BUS_PROT_WR(INFRA,
43 				    MT8188_TOP_AXI_PROT_EN_2_MFG1_STEP2,
44 				    MT8188_TOP_AXI_PROT_EN_2_SET,
45 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
46 				    MT8188_TOP_AXI_PROT_EN_2_STA),
47 			BUS_PROT_WR(INFRA,
48 				    MT8188_TOP_AXI_PROT_EN_1_MFG1_STEP3,
49 				    MT8188_TOP_AXI_PROT_EN_1_SET,
50 				    MT8188_TOP_AXI_PROT_EN_1_CLR,
51 				    MT8188_TOP_AXI_PROT_EN_1_STA),
52 			BUS_PROT_WR(INFRA,
53 				    MT8188_TOP_AXI_PROT_EN_2_MFG1_STEP4,
54 				    MT8188_TOP_AXI_PROT_EN_2_SET,
55 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
56 				    MT8188_TOP_AXI_PROT_EN_2_STA),
57 			BUS_PROT_WR(INFRA,
58 				    MT8188_TOP_AXI_PROT_EN_MFG1_STEP5,
59 				    MT8188_TOP_AXI_PROT_EN_SET,
60 				    MT8188_TOP_AXI_PROT_EN_CLR,
61 				    MT8188_TOP_AXI_PROT_EN_STA),
62 			BUS_PROT_WR(INFRA,
63 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_MFG1_STEP6,
64 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
65 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
66 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA),
67 		},
68 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_DOMAIN_SUPPLY,
69 	},
70 	[MT8188_POWER_DOMAIN_MFG2] = {
71 		.name = "mfg2",
72 		.sta_mask = BIT(3),
73 		.ctl_offs = 0x308,
74 		.pwr_sta_offs = 0x174,
75 		.pwr_sta2nd_offs = 0x178,
76 		.sram_pdn_bits = BIT(8),
77 		.sram_pdn_ack_bits = BIT(12),
78 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
79 	},
80 	[MT8188_POWER_DOMAIN_MFG3] = {
81 		.name = "mfg3",
82 		.sta_mask = BIT(4),
83 		.ctl_offs = 0x30C,
84 		.pwr_sta_offs = 0x174,
85 		.pwr_sta2nd_offs = 0x178,
86 		.sram_pdn_bits = BIT(8),
87 		.sram_pdn_ack_bits = BIT(12),
88 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
89 	},
90 	[MT8188_POWER_DOMAIN_MFG4] = {
91 		.name = "mfg4",
92 		.sta_mask = BIT(5),
93 		.ctl_offs = 0x310,
94 		.pwr_sta_offs = 0x174,
95 		.pwr_sta2nd_offs = 0x178,
96 		.sram_pdn_bits = BIT(8),
97 		.sram_pdn_ack_bits = BIT(12),
98 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
99 	},
100 	[MT8188_POWER_DOMAIN_PEXTP_MAC_P0] = {
101 		.name = "pextp_mac_p0",
102 		.sta_mask = BIT(10),
103 		.ctl_offs = 0x324,
104 		.pwr_sta_offs = 0x174,
105 		.pwr_sta2nd_offs = 0x178,
106 		.sram_pdn_bits = BIT(8),
107 		.sram_pdn_ack_bits = BIT(12),
108 		.bp_cfg = {
109 			BUS_PROT_WR(INFRA,
110 				    MT8188_TOP_AXI_PROT_EN_PEXTP_MAC_P0_STEP1,
111 				    MT8188_TOP_AXI_PROT_EN_SET,
112 				    MT8188_TOP_AXI_PROT_EN_CLR,
113 				    MT8188_TOP_AXI_PROT_EN_STA),
114 			BUS_PROT_WR(INFRA,
115 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_PEXTP_MAC_P0_STEP2,
116 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_SET,
117 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_CLR,
118 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_STA),
119 		},
120 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
121 	},
122 	[MT8188_POWER_DOMAIN_PEXTP_PHY_TOP] = {
123 		.name = "pextp_phy_top",
124 		.sta_mask = BIT(12),
125 		.ctl_offs = 0x328,
126 		.pwr_sta_offs = 0x174,
127 		.pwr_sta2nd_offs = 0x178,
128 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
129 	},
130 	[MT8188_POWER_DOMAIN_CSIRX_TOP] = {
131 		.name = "pextp_csirx_top",
132 		.sta_mask = BIT(17),
133 		.ctl_offs = 0x3C4,
134 		.pwr_sta_offs = 0x174,
135 		.pwr_sta2nd_offs = 0x178,
136 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
137 	},
138 	[MT8188_POWER_DOMAIN_ETHER] = {
139 		.name = "ether",
140 		.sta_mask = BIT(1),
141 		.ctl_offs = 0x338,
142 		.pwr_sta_offs = 0x16C,
143 		.pwr_sta2nd_offs = 0x170,
144 		.sram_pdn_bits = BIT(8),
145 		.sram_pdn_ack_bits = BIT(12),
146 		.bp_cfg = {
147 			BUS_PROT_WR(INFRA,
148 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_ETHER_STEP1,
149 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_SET,
150 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_CLR,
151 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_STA),
152 		},
153 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_ACTIVE_WAKEUP,
154 	},
155 	[MT8188_POWER_DOMAIN_HDMI_TX] = {
156 		.name = "hdmi_tx",
157 		.sta_mask = BIT(18),
158 		.ctl_offs = 0x37C,
159 		.pwr_sta_offs = 0x16C,
160 		.pwr_sta2nd_offs = 0x170,
161 		.sram_pdn_bits = BIT(8),
162 		.sram_pdn_ack_bits = BIT(12),
163 		.bp_cfg = {
164 			BUS_PROT_WR(INFRA,
165 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_HDMI_TX_STEP1,
166 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_SET,
167 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_CLR,
168 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_STA),
169 		},
170 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_ACTIVE_WAKEUP,
171 	},
172 	[MT8188_POWER_DOMAIN_ADSP_AO] = {
173 		.name = "adsp_ao",
174 		.sta_mask = BIT(10),
175 		.ctl_offs = 0x35C,
176 		.pwr_sta_offs = 0x16C,
177 		.pwr_sta2nd_offs = 0x170,
178 		.bp_cfg = {
179 			BUS_PROT_WR(INFRA,
180 				    MT8188_TOP_AXI_PROT_EN_2_ADSP_AO_STEP1,
181 				    MT8188_TOP_AXI_PROT_EN_2_SET,
182 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
183 				    MT8188_TOP_AXI_PROT_EN_2_STA),
184 			BUS_PROT_WR(INFRA,
185 				    MT8188_TOP_AXI_PROT_EN_2_ADSP_AO_STEP2,
186 				    MT8188_TOP_AXI_PROT_EN_2_SET,
187 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
188 				    MT8188_TOP_AXI_PROT_EN_2_STA),
189 		},
190 		.caps = MTK_SCPD_ALWAYS_ON,
191 	},
192 	[MT8188_POWER_DOMAIN_ADSP_INFRA] = {
193 		.name = "adsp_infra",
194 		.sta_mask = BIT(9),
195 		.ctl_offs = 0x358,
196 		.pwr_sta_offs = 0x16C,
197 		.pwr_sta2nd_offs = 0x170,
198 		.sram_pdn_bits = BIT(8),
199 		.sram_pdn_ack_bits = BIT(12),
200 		.bp_cfg = {
201 			BUS_PROT_WR(INFRA,
202 				    MT8188_TOP_AXI_PROT_EN_2_ADSP_INFRA_STEP1,
203 				    MT8188_TOP_AXI_PROT_EN_2_SET,
204 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
205 				    MT8188_TOP_AXI_PROT_EN_2_STA),
206 			BUS_PROT_WR(INFRA,
207 				    MT8188_TOP_AXI_PROT_EN_2_ADSP_INFRA_STEP2,
208 				    MT8188_TOP_AXI_PROT_EN_2_SET,
209 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
210 				    MT8188_TOP_AXI_PROT_EN_2_STA),
211 		},
212 		.caps = MTK_SCPD_SRAM_ISO | MTK_SCPD_ALWAYS_ON,
213 	},
214 	[MT8188_POWER_DOMAIN_ADSP] = {
215 		.name = "adsp",
216 		.sta_mask = BIT(8),
217 		.ctl_offs = 0x354,
218 		.pwr_sta_offs = 0x16C,
219 		.pwr_sta2nd_offs = 0x170,
220 		.sram_pdn_bits = BIT(8),
221 		.sram_pdn_ack_bits = BIT(12),
222 		.bp_cfg = {
223 			BUS_PROT_WR(INFRA,
224 				    MT8188_TOP_AXI_PROT_EN_2_ADSP_STEP1,
225 				    MT8188_TOP_AXI_PROT_EN_2_SET,
226 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
227 				    MT8188_TOP_AXI_PROT_EN_2_STA),
228 			BUS_PROT_WR(INFRA,
229 				    MT8188_TOP_AXI_PROT_EN_2_ADSP_STEP2,
230 				    MT8188_TOP_AXI_PROT_EN_2_SET,
231 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
232 				    MT8188_TOP_AXI_PROT_EN_2_STA),
233 		},
234 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_SRAM_ISO | MTK_SCPD_ACTIVE_WAKEUP,
235 	},
236 	[MT8188_POWER_DOMAIN_AUDIO] = {
237 		.name = "audio",
238 		.sta_mask = BIT(6),
239 		.ctl_offs = 0x34C,
240 		.pwr_sta_offs = 0x16C,
241 		.pwr_sta2nd_offs = 0x170,
242 		.sram_pdn_bits = BIT(8),
243 		.sram_pdn_ack_bits = BIT(12),
244 		.bp_cfg = {
245 			BUS_PROT_WR(INFRA,
246 				    MT8188_TOP_AXI_PROT_EN_2_AUDIO_STEP1,
247 				    MT8188_TOP_AXI_PROT_EN_2_SET,
248 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
249 				    MT8188_TOP_AXI_PROT_EN_2_STA),
250 			BUS_PROT_WR(INFRA,
251 				    MT8188_TOP_AXI_PROT_EN_2_AUDIO_STEP2,
252 				    MT8188_TOP_AXI_PROT_EN_2_SET,
253 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
254 				    MT8188_TOP_AXI_PROT_EN_2_STA),
255 		},
256 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_ACTIVE_WAKEUP,
257 	},
258 	[MT8188_POWER_DOMAIN_AUDIO_ASRC] = {
259 		.name = "audio_asrc",
260 		.sta_mask = BIT(7),
261 		.ctl_offs = 0x350,
262 		.pwr_sta_offs = 0x16C,
263 		.pwr_sta2nd_offs = 0x170,
264 		.sram_pdn_bits = BIT(8),
265 		.sram_pdn_ack_bits = BIT(12),
266 		.bp_cfg = {
267 			BUS_PROT_WR(INFRA,
268 				    MT8188_TOP_AXI_PROT_EN_2_AUDIO_ASRC_STEP1,
269 				    MT8188_TOP_AXI_PROT_EN_2_SET,
270 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
271 				    MT8188_TOP_AXI_PROT_EN_2_STA),
272 			BUS_PROT_WR(INFRA,
273 				    MT8188_TOP_AXI_PROT_EN_2_AUDIO_ASRC_STEP2,
274 				    MT8188_TOP_AXI_PROT_EN_2_SET,
275 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
276 				    MT8188_TOP_AXI_PROT_EN_2_STA),
277 		},
278 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
279 	},
280 	[MT8188_POWER_DOMAIN_VPPSYS0] = {
281 		.name = "vppsys0",
282 		.sta_mask = BIT(11),
283 		.ctl_offs = 0x360,
284 		.pwr_sta_offs = 0x16C,
285 		.pwr_sta2nd_offs = 0x170,
286 		.sram_pdn_bits = BIT(8),
287 		.sram_pdn_ack_bits = BIT(12),
288 		.bp_cfg = {
289 			BUS_PROT_WR(INFRA,
290 				    MT8188_TOP_AXI_PROT_EN_VPPSYS0_STEP1,
291 				    MT8188_TOP_AXI_PROT_EN_SET,
292 				    MT8188_TOP_AXI_PROT_EN_CLR,
293 				    MT8188_TOP_AXI_PROT_EN_STA),
294 			BUS_PROT_WR(INFRA,
295 				    MT8188_TOP_AXI_PROT_EN_MM_2_VPPSYS0_STEP2,
296 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
297 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
298 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
299 			BUS_PROT_WR(INFRA,
300 				    MT8188_TOP_AXI_PROT_EN_VPPSYS0_STEP3,
301 				    MT8188_TOP_AXI_PROT_EN_SET,
302 				    MT8188_TOP_AXI_PROT_EN_CLR,
303 				    MT8188_TOP_AXI_PROT_EN_STA),
304 			BUS_PROT_WR(INFRA,
305 				    MT8188_TOP_AXI_PROT_EN_MM_2_VPPSYS0_STEP4,
306 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
307 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
308 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
309 			BUS_PROT_WR(INFRA,
310 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_VPPSYS0_STEP5,
311 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
312 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
313 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA),
314 		},
315 	},
316 	[MT8188_POWER_DOMAIN_VDOSYS0] = {
317 		.name = "vdosys0",
318 		.sta_mask = BIT(13),
319 		.ctl_offs = 0x368,
320 		.pwr_sta_offs = 0x16C,
321 		.pwr_sta2nd_offs = 0x170,
322 		.sram_pdn_bits = BIT(8),
323 		.sram_pdn_ack_bits = BIT(12),
324 		.bp_cfg = {
325 			BUS_PROT_WR(INFRA,
326 				    MT8188_TOP_AXI_PROT_EN_MM_VDOSYS0_STEP1,
327 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
328 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
329 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
330 			BUS_PROT_WR(INFRA,
331 				    MT8188_TOP_AXI_PROT_EN_VDOSYS0_STEP2,
332 				    MT8188_TOP_AXI_PROT_EN_SET,
333 				    MT8188_TOP_AXI_PROT_EN_CLR,
334 				    MT8188_TOP_AXI_PROT_EN_STA),
335 			BUS_PROT_WR(INFRA,
336 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_VDOSYS0_STEP3,
337 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
338 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
339 				    MT8188_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA),
340 		},
341 	},
342 	[MT8188_POWER_DOMAIN_VDOSYS1] = {
343 		.name = "vdosys1",
344 		.sta_mask = BIT(14),
345 		.ctl_offs = 0x36C,
346 		.pwr_sta_offs = 0x16C,
347 		.pwr_sta2nd_offs = 0x170,
348 		.sram_pdn_bits = BIT(8),
349 		.sram_pdn_ack_bits = BIT(12),
350 		.bp_cfg = {
351 			BUS_PROT_WR(INFRA,
352 				    MT8188_TOP_AXI_PROT_EN_MM_VDOSYS1_STEP1,
353 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
354 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
355 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
356 			BUS_PROT_WR(INFRA,
357 				    MT8188_TOP_AXI_PROT_EN_MM_VDOSYS1_STEP2,
358 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
359 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
360 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
361 			BUS_PROT_WR(INFRA,
362 				    MT8188_TOP_AXI_PROT_EN_MM_2_VDOSYS1_STEP3,
363 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
364 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
365 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
366 		},
367 	},
368 	[MT8188_POWER_DOMAIN_DP_TX] = {
369 		.name = "dp_tx",
370 		.sta_mask = BIT(16),
371 		.ctl_offs = 0x374,
372 		.pwr_sta_offs = 0x16C,
373 		.pwr_sta2nd_offs = 0x170,
374 		.sram_pdn_bits = BIT(8),
375 		.sram_pdn_ack_bits = BIT(12),
376 		.bp_cfg = {
377 			BUS_PROT_WR(INFRA,
378 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_DP_TX_STEP1,
379 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_SET,
380 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_CLR,
381 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_STA),
382 		},
383 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
384 	},
385 	[MT8188_POWER_DOMAIN_EDP_TX] = {
386 		.name = "edp_tx",
387 		.sta_mask = BIT(17),
388 		.ctl_offs = 0x378,
389 		.pwr_sta_offs = 0x16C,
390 		.pwr_sta2nd_offs = 0x170,
391 		.sram_pdn_bits = BIT(8),
392 		.sram_pdn_ack_bits = BIT(12),
393 		.bp_cfg = {
394 			BUS_PROT_WR(INFRA,
395 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_EDP_TX_STEP1,
396 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_SET,
397 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_CLR,
398 				    MT8188_TOP_AXI_PROT_EN_INFRA_VDNR_STA),
399 		},
400 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
401 	},
402 	[MT8188_POWER_DOMAIN_VPPSYS1] = {
403 		.name = "vppsys1",
404 		.sta_mask = BIT(12),
405 		.ctl_offs = 0x364,
406 		.pwr_sta_offs = 0x16C,
407 		.pwr_sta2nd_offs = 0x170,
408 		.sram_pdn_bits = BIT(8),
409 		.sram_pdn_ack_bits = BIT(12),
410 		.bp_cfg = {
411 			BUS_PROT_WR(INFRA,
412 				    MT8188_TOP_AXI_PROT_EN_MM_VPPSYS1_STEP1,
413 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
414 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
415 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
416 			BUS_PROT_WR(INFRA,
417 				    MT8188_TOP_AXI_PROT_EN_MM_VPPSYS1_STEP2,
418 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
419 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
420 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
421 			BUS_PROT_WR(INFRA,
422 				    MT8188_TOP_AXI_PROT_EN_MM_2_VPPSYS1_STEP3,
423 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
424 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
425 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
426 		},
427 	},
428 	[MT8188_POWER_DOMAIN_WPE] = {
429 		.name = "wpe",
430 		.sta_mask = BIT(15),
431 		.ctl_offs = 0x370,
432 		.pwr_sta_offs = 0x16C,
433 		.pwr_sta2nd_offs = 0x170,
434 		.sram_pdn_bits = BIT(8),
435 		.sram_pdn_ack_bits = BIT(12),
436 		.bp_cfg = {
437 			BUS_PROT_WR(INFRA,
438 				    MT8188_TOP_AXI_PROT_EN_MM_2_WPE_STEP1,
439 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
440 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
441 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
442 			BUS_PROT_WR(INFRA,
443 				    MT8188_TOP_AXI_PROT_EN_MM_2_WPE_STEP2,
444 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
445 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
446 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
447 		},
448 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
449 	},
450 	[MT8188_POWER_DOMAIN_VDEC0] = {
451 		.name = "vdec0",
452 		.sta_mask = BIT(19),
453 		.ctl_offs = 0x380,
454 		.pwr_sta_offs = 0x16C,
455 		.pwr_sta2nd_offs = 0x170,
456 		.sram_pdn_bits = BIT(8),
457 		.sram_pdn_ack_bits = BIT(12),
458 		.bp_cfg = {
459 			BUS_PROT_WR(INFRA,
460 				    MT8188_TOP_AXI_PROT_EN_MM_VDEC0_STEP1,
461 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
462 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
463 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
464 			BUS_PROT_WR(INFRA,
465 				    MT8188_TOP_AXI_PROT_EN_MM_2_VDEC0_STEP2,
466 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
467 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
468 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
469 		},
470 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
471 	},
472 	[MT8188_POWER_DOMAIN_VDEC1] = {
473 		.name = "vdec1",
474 		.sta_mask = BIT(20),
475 		.ctl_offs = 0x384,
476 		.pwr_sta_offs = 0x16C,
477 		.pwr_sta2nd_offs = 0x170,
478 		.sram_pdn_bits = BIT(8),
479 		.sram_pdn_ack_bits = BIT(12),
480 		.bp_cfg = {
481 			BUS_PROT_WR(INFRA,
482 				    MT8188_TOP_AXI_PROT_EN_MM_VDEC1_STEP1,
483 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
484 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
485 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
486 			BUS_PROT_WR(INFRA,
487 				    MT8188_TOP_AXI_PROT_EN_MM_VDEC1_STEP2,
488 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
489 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
490 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
491 		},
492 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
493 	},
494 	[MT8188_POWER_DOMAIN_VENC] = {
495 		.name = "venc",
496 		.sta_mask = BIT(22),
497 		.ctl_offs = 0x38C,
498 		.pwr_sta_offs = 0x16C,
499 		.pwr_sta2nd_offs = 0x170,
500 		.sram_pdn_bits = BIT(8),
501 		.sram_pdn_ack_bits = BIT(12),
502 		.bp_cfg = {
503 			BUS_PROT_WR(INFRA,
504 				    MT8188_TOP_AXI_PROT_EN_MM_VENC_STEP1,
505 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
506 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
507 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
508 			BUS_PROT_WR(INFRA,
509 				    MT8188_TOP_AXI_PROT_EN_MM_VENC_STEP2,
510 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
511 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
512 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
513 			BUS_PROT_WR(INFRA,
514 				    MT8188_TOP_AXI_PROT_EN_MM_2_VENC_STEP3,
515 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
516 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
517 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
518 		},
519 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
520 	},
521 	[MT8188_POWER_DOMAIN_IMG_VCORE] = {
522 		.name = "vcore",
523 		.sta_mask = BIT(28),
524 		.ctl_offs = 0x3A4,
525 		.pwr_sta_offs = 0x16C,
526 		.pwr_sta2nd_offs = 0x170,
527 		.bp_cfg = {
528 			BUS_PROT_WR(INFRA,
529 				    MT8188_TOP_AXI_PROT_EN_MM_IMG_VCORE_STEP1,
530 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
531 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
532 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
533 			BUS_PROT_WR(INFRA,
534 				    MT8188_TOP_AXI_PROT_EN_MM_IMG_VCORE_STEP2,
535 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
536 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
537 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
538 			BUS_PROT_WR(INFRA,
539 				    MT8188_TOP_AXI_PROT_EN_MM_2_IMG_VCORE_STEP3,
540 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
541 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
542 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
543 		},
544 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_DOMAIN_SUPPLY,
545 	},
546 	[MT8188_POWER_DOMAIN_IMG_MAIN] = {
547 		.name = "img_main",
548 		.sta_mask = BIT(29),
549 		.ctl_offs = 0x3A8,
550 		.pwr_sta_offs = 0x16C,
551 		.pwr_sta2nd_offs = 0x170,
552 		.sram_pdn_bits = BIT(8),
553 		.sram_pdn_ack_bits = BIT(12),
554 		.bp_cfg = {
555 			BUS_PROT_WR(INFRA,
556 				    MT8188_TOP_AXI_PROT_EN_MM_2_IMG_MAIN_STEP1,
557 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
558 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
559 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
560 			BUS_PROT_WR(INFRA,
561 				    MT8188_TOP_AXI_PROT_EN_MM_2_IMG_MAIN_STEP2,
562 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
563 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
564 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
565 		},
566 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
567 	},
568 	[MT8188_POWER_DOMAIN_DIP] = {
569 		.name = "dip",
570 		.sta_mask = BIT(30),
571 		.ctl_offs = 0x3AC,
572 		.pwr_sta_offs = 0x16C,
573 		.pwr_sta2nd_offs = 0x170,
574 		.sram_pdn_bits = BIT(8),
575 		.sram_pdn_ack_bits = BIT(12),
576 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
577 	},
578 	[MT8188_POWER_DOMAIN_IPE] = {
579 		.name = "ipe",
580 		.sta_mask = BIT(31),
581 		.ctl_offs = 0x3B0,
582 		.pwr_sta_offs = 0x16C,
583 		.pwr_sta2nd_offs = 0x170,
584 		.sram_pdn_bits = BIT(8),
585 		.sram_pdn_ack_bits = BIT(12),
586 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
587 	},
588 	[MT8188_POWER_DOMAIN_CAM_VCORE] = {
589 		.name = "cam_vcore",
590 		.sta_mask = BIT(27),
591 		.ctl_offs = 0x3A0,
592 		.pwr_sta_offs = 0x16C,
593 		.pwr_sta2nd_offs = 0x170,
594 		.bp_cfg = {
595 			BUS_PROT_WR(INFRA,
596 				    MT8188_TOP_AXI_PROT_EN_MM_CAM_VCORE_STEP1,
597 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
598 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
599 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
600 			BUS_PROT_WR(INFRA,
601 				    MT8188_TOP_AXI_PROT_EN_2_CAM_VCORE_STEP2,
602 				    MT8188_TOP_AXI_PROT_EN_2_SET,
603 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
604 				    MT8188_TOP_AXI_PROT_EN_2_STA),
605 			BUS_PROT_WR(INFRA,
606 				    MT8188_TOP_AXI_PROT_EN_1_CAM_VCORE_STEP3,
607 				    MT8188_TOP_AXI_PROT_EN_1_SET,
608 				    MT8188_TOP_AXI_PROT_EN_1_CLR,
609 				    MT8188_TOP_AXI_PROT_EN_1_STA),
610 			BUS_PROT_WR(INFRA,
611 				    MT8188_TOP_AXI_PROT_EN_MM_CAM_VCORE_STEP4,
612 				    MT8188_TOP_AXI_PROT_EN_MM_SET,
613 				    MT8188_TOP_AXI_PROT_EN_MM_CLR,
614 				    MT8188_TOP_AXI_PROT_EN_MM_STA),
615 			BUS_PROT_WR(INFRA,
616 				    MT8188_TOP_AXI_PROT_EN_MM_2_CAM_VCORE_STEP5,
617 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
618 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
619 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
620 		},
621 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_DOMAIN_SUPPLY,
622 	},
623 	[MT8188_POWER_DOMAIN_CAM_MAIN] = {
624 		.name = "cam_main",
625 		.sta_mask = BIT(24),
626 		.ctl_offs = 0x394,
627 		.pwr_sta_offs = 0x16C,
628 		.pwr_sta2nd_offs = 0x170,
629 		.sram_pdn_bits = BIT(8),
630 		.sram_pdn_ack_bits = BIT(12),
631 		.bp_cfg = {
632 			BUS_PROT_WR(INFRA,
633 				    MT8188_TOP_AXI_PROT_EN_MM_2_CAM_MAIN_STEP1,
634 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
635 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
636 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
637 			BUS_PROT_WR(INFRA,
638 				    MT8188_TOP_AXI_PROT_EN_2_CAM_MAIN_STEP2,
639 				    MT8188_TOP_AXI_PROT_EN_2_SET,
640 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
641 				    MT8188_TOP_AXI_PROT_EN_2_STA),
642 			BUS_PROT_WR(INFRA,
643 				    MT8188_TOP_AXI_PROT_EN_MM_2_CAM_MAIN_STEP3,
644 				    MT8188_TOP_AXI_PROT_EN_MM_2_SET,
645 				    MT8188_TOP_AXI_PROT_EN_MM_2_CLR,
646 				    MT8188_TOP_AXI_PROT_EN_MM_2_STA),
647 			BUS_PROT_WR(INFRA,
648 				    MT8188_TOP_AXI_PROT_EN_2_CAM_MAIN_STEP4,
649 				    MT8188_TOP_AXI_PROT_EN_2_SET,
650 				    MT8188_TOP_AXI_PROT_EN_2_CLR,
651 				    MT8188_TOP_AXI_PROT_EN_2_STA),
652 		},
653 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
654 	},
655 	[MT8188_POWER_DOMAIN_CAM_SUBA] = {
656 		.name = "cam_suba",
657 		.sta_mask = BIT(25),
658 		.ctl_offs = 0x398,
659 		.pwr_sta_offs = 0x16C,
660 		.pwr_sta2nd_offs = 0x170,
661 		.sram_pdn_bits = BIT(8),
662 		.sram_pdn_ack_bits = BIT(12),
663 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
664 	},
665 	[MT8188_POWER_DOMAIN_CAM_SUBB] = {
666 		.name = "cam_subb",
667 		.sta_mask = BIT(26),
668 		.ctl_offs = 0x39C,
669 		.pwr_sta_offs = 0x16C,
670 		.pwr_sta2nd_offs = 0x170,
671 		.sram_pdn_bits = BIT(8),
672 		.sram_pdn_ack_bits = BIT(12),
673 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
674 	},
675 };
676 
677 static const struct scpsys_soc_data mt8188_scpsys_data = {
678 	.domains_data = scpsys_domain_data_mt8188,
679 	.num_domains = ARRAY_SIZE(scpsys_domain_data_mt8188),
680 };
681 
682 #endif /* __SOC_MEDIATEK_MT8188_PM_DOMAINS_H */
683