1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (c) 2021 MediaTek Inc.
4  * Author: Chun-Jie Chen <chun-jie.chen@mediatek.com>
5  */
6 
7 #ifndef __SOC_MEDIATEK_MT8195_PM_DOMAINS_H
8 #define __SOC_MEDIATEK_MT8195_PM_DOMAINS_H
9 
10 #include "mtk-pm-domains.h"
11 #include <dt-bindings/power/mt8195-power.h>
12 
13 /*
14  * MT8195 power domain support
15  */
16 
17 static const struct scpsys_domain_data scpsys_domain_data_mt8195[] = {
18 	[MT8195_POWER_DOMAIN_PCIE_MAC_P0] = {
19 		.name = "pcie_mac_p0",
20 		.sta_mask = BIT(11),
21 		.ctl_offs = 0x328,
22 		.pwr_sta_offs = 0x174,
23 		.pwr_sta2nd_offs = 0x178,
24 		.sram_pdn_bits = GENMASK(8, 8),
25 		.sram_pdn_ack_bits = GENMASK(12, 12),
26 		.bp_infracfg = {
27 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_PCIE_MAC_P0,
28 				    MT8195_TOP_AXI_PROT_EN_VDNR_SET,
29 				    MT8195_TOP_AXI_PROT_EN_VDNR_CLR,
30 				    MT8195_TOP_AXI_PROT_EN_VDNR_STA1),
31 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_1_PCIE_MAC_P0,
32 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_SET,
33 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_CLR,
34 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_STA1),
35 		},
36 	},
37 	[MT8195_POWER_DOMAIN_PCIE_MAC_P1] = {
38 		.name = "pcie_mac_p1",
39 		.sta_mask = BIT(12),
40 		.ctl_offs = 0x32C,
41 		.pwr_sta_offs = 0x174,
42 		.pwr_sta2nd_offs = 0x178,
43 		.sram_pdn_bits = GENMASK(8, 8),
44 		.sram_pdn_ack_bits = GENMASK(12, 12),
45 		.bp_infracfg = {
46 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_PCIE_MAC_P1,
47 				    MT8195_TOP_AXI_PROT_EN_VDNR_SET,
48 				    MT8195_TOP_AXI_PROT_EN_VDNR_CLR,
49 				    MT8195_TOP_AXI_PROT_EN_VDNR_STA1),
50 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_1_PCIE_MAC_P1,
51 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_SET,
52 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_CLR,
53 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_STA1),
54 		},
55 	},
56 	[MT8195_POWER_DOMAIN_PCIE_PHY] = {
57 		.name = "pcie_phy",
58 		.sta_mask = BIT(13),
59 		.ctl_offs = 0x330,
60 		.pwr_sta_offs = 0x174,
61 		.pwr_sta2nd_offs = 0x178,
62 		.caps = MTK_SCPD_ACTIVE_WAKEUP,
63 	},
64 	[MT8195_POWER_DOMAIN_SSUSB_PCIE_PHY] = {
65 		.name = "ssusb_pcie_phy",
66 		.sta_mask = BIT(14),
67 		.ctl_offs = 0x334,
68 		.pwr_sta_offs = 0x174,
69 		.pwr_sta2nd_offs = 0x178,
70 		.caps = MTK_SCPD_ACTIVE_WAKEUP | MTK_SCPD_ALWAYS_ON,
71 	},
72 	[MT8195_POWER_DOMAIN_CSI_RX_TOP] = {
73 		.name = "csi_rx_top",
74 		.sta_mask = BIT(18),
75 		.ctl_offs = 0x3C4,
76 		.pwr_sta_offs = 0x174,
77 		.pwr_sta2nd_offs = 0x178,
78 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
79 	},
80 	[MT8195_POWER_DOMAIN_ETHER] = {
81 		.name = "ether",
82 		.sta_mask = BIT(3),
83 		.ctl_offs = 0x344,
84 		.pwr_sta_offs = 0x16c,
85 		.pwr_sta2nd_offs = 0x170,
86 		.sram_pdn_bits = GENMASK(8, 8),
87 		.sram_pdn_ack_bits = GENMASK(12, 12),
88 		.caps = MTK_SCPD_ACTIVE_WAKEUP,
89 	},
90 	[MT8195_POWER_DOMAIN_ADSP] = {
91 		.name = "adsp",
92 		.sta_mask = BIT(10),
93 		.ctl_offs = 0x360,
94 		.pwr_sta_offs = 0x16c,
95 		.pwr_sta2nd_offs = 0x170,
96 		.sram_pdn_bits = GENMASK(8, 8),
97 		.sram_pdn_ack_bits = GENMASK(12, 12),
98 		.bp_infracfg = {
99 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_ADSP,
100 				    MT8195_TOP_AXI_PROT_EN_2_SET,
101 				    MT8195_TOP_AXI_PROT_EN_2_CLR,
102 				    MT8195_TOP_AXI_PROT_EN_2_STA1),
103 		},
104 		.caps = MTK_SCPD_SRAM_ISO | MTK_SCPD_ACTIVE_WAKEUP,
105 	},
106 	[MT8195_POWER_DOMAIN_AUDIO] = {
107 		.name = "audio",
108 		.sta_mask = BIT(8),
109 		.ctl_offs = 0x358,
110 		.pwr_sta_offs = 0x16c,
111 		.pwr_sta2nd_offs = 0x170,
112 		.sram_pdn_bits = GENMASK(8, 8),
113 		.sram_pdn_ack_bits = GENMASK(12, 12),
114 		.bp_infracfg = {
115 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_AUDIO,
116 				    MT8195_TOP_AXI_PROT_EN_2_SET,
117 				    MT8195_TOP_AXI_PROT_EN_2_CLR,
118 				    MT8195_TOP_AXI_PROT_EN_2_STA1),
119 		},
120 	},
121 	[MT8195_POWER_DOMAIN_MFG0] = {
122 		.name = "mfg0",
123 		.sta_mask = BIT(1),
124 		.ctl_offs = 0x300,
125 		.pwr_sta_offs = 0x174,
126 		.pwr_sta2nd_offs = 0x178,
127 		.sram_pdn_bits = GENMASK(8, 8),
128 		.sram_pdn_ack_bits = GENMASK(12, 12),
129 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_DOMAIN_SUPPLY,
130 	},
131 	[MT8195_POWER_DOMAIN_MFG1] = {
132 		.name = "mfg1",
133 		.sta_mask = BIT(2),
134 		.ctl_offs = 0x304,
135 		.pwr_sta_offs = 0x174,
136 		.pwr_sta2nd_offs = 0x178,
137 		.sram_pdn_bits = GENMASK(8, 8),
138 		.sram_pdn_ack_bits = GENMASK(12, 12),
139 		.bp_infracfg = {
140 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MFG1,
141 				    MT8195_TOP_AXI_PROT_EN_SET,
142 				    MT8195_TOP_AXI_PROT_EN_CLR,
143 				    MT8195_TOP_AXI_PROT_EN_STA1),
144 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_MFG1,
145 				    MT8195_TOP_AXI_PROT_EN_2_SET,
146 				    MT8195_TOP_AXI_PROT_EN_2_CLR,
147 				    MT8195_TOP_AXI_PROT_EN_2_STA1),
148 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_1_MFG1,
149 				    MT8195_TOP_AXI_PROT_EN_1_SET,
150 				    MT8195_TOP_AXI_PROT_EN_1_CLR,
151 				    MT8195_TOP_AXI_PROT_EN_1_STA1),
152 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_MFG1_2ND,
153 				    MT8195_TOP_AXI_PROT_EN_2_SET,
154 				    MT8195_TOP_AXI_PROT_EN_2_CLR,
155 				    MT8195_TOP_AXI_PROT_EN_2_STA1),
156 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MFG1_2ND,
157 				    MT8195_TOP_AXI_PROT_EN_SET,
158 				    MT8195_TOP_AXI_PROT_EN_CLR,
159 				    MT8195_TOP_AXI_PROT_EN_STA1),
160 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_MFG1,
161 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
162 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
163 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA1),
164 		},
165 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_DOMAIN_SUPPLY,
166 	},
167 	[MT8195_POWER_DOMAIN_MFG2] = {
168 		.name = "mfg2",
169 		.sta_mask = BIT(3),
170 		.ctl_offs = 0x308,
171 		.pwr_sta_offs = 0x174,
172 		.pwr_sta2nd_offs = 0x178,
173 		.sram_pdn_bits = GENMASK(8, 8),
174 		.sram_pdn_ack_bits = GENMASK(12, 12),
175 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
176 	},
177 	[MT8195_POWER_DOMAIN_MFG3] = {
178 		.name = "mfg3",
179 		.sta_mask = BIT(4),
180 		.ctl_offs = 0x30C,
181 		.pwr_sta_offs = 0x174,
182 		.pwr_sta2nd_offs = 0x178,
183 		.sram_pdn_bits = GENMASK(8, 8),
184 		.sram_pdn_ack_bits = GENMASK(12, 12),
185 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
186 	},
187 	[MT8195_POWER_DOMAIN_MFG4] = {
188 		.name = "mfg4",
189 		.sta_mask = BIT(5),
190 		.ctl_offs = 0x310,
191 		.pwr_sta_offs = 0x174,
192 		.pwr_sta2nd_offs = 0x178,
193 		.sram_pdn_bits = GENMASK(8, 8),
194 		.sram_pdn_ack_bits = GENMASK(12, 12),
195 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
196 	},
197 	[MT8195_POWER_DOMAIN_MFG5] = {
198 		.name = "mfg5",
199 		.sta_mask = BIT(6),
200 		.ctl_offs = 0x314,
201 		.pwr_sta_offs = 0x174,
202 		.pwr_sta2nd_offs = 0x178,
203 		.sram_pdn_bits = GENMASK(8, 8),
204 		.sram_pdn_ack_bits = GENMASK(12, 12),
205 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
206 	},
207 	[MT8195_POWER_DOMAIN_MFG6] = {
208 		.name = "mfg6",
209 		.sta_mask = BIT(7),
210 		.ctl_offs = 0x318,
211 		.pwr_sta_offs = 0x174,
212 		.pwr_sta2nd_offs = 0x178,
213 		.sram_pdn_bits = GENMASK(8, 8),
214 		.sram_pdn_ack_bits = GENMASK(12, 12),
215 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
216 	},
217 	[MT8195_POWER_DOMAIN_VPPSYS0] = {
218 		.name = "vppsys0",
219 		.sta_mask = BIT(11),
220 		.ctl_offs = 0x364,
221 		.pwr_sta_offs = 0x16c,
222 		.pwr_sta2nd_offs = 0x170,
223 		.sram_pdn_bits = GENMASK(8, 8),
224 		.sram_pdn_ack_bits = GENMASK(12, 12),
225 		.bp_infracfg = {
226 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VPPSYS0,
227 				    MT8195_TOP_AXI_PROT_EN_SET,
228 				    MT8195_TOP_AXI_PROT_EN_CLR,
229 				    MT8195_TOP_AXI_PROT_EN_STA1),
230 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VPPSYS0,
231 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
232 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
233 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
234 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VPPSYS0_2ND,
235 				    MT8195_TOP_AXI_PROT_EN_SET,
236 				    MT8195_TOP_AXI_PROT_EN_CLR,
237 				    MT8195_TOP_AXI_PROT_EN_STA1),
238 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VPPSYS0_2ND,
239 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
240 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
241 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
242 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_VPPSYS0,
243 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
244 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
245 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA1),
246 		},
247 	},
248 	[MT8195_POWER_DOMAIN_VDOSYS0] = {
249 		.name = "vdosys0",
250 		.sta_mask = BIT(13),
251 		.ctl_offs = 0x36C,
252 		.pwr_sta_offs = 0x16c,
253 		.pwr_sta2nd_offs = 0x170,
254 		.sram_pdn_bits = GENMASK(8, 8),
255 		.sram_pdn_ack_bits = GENMASK(12, 12),
256 		.bp_infracfg = {
257 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDOSYS0,
258 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
259 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
260 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
261 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDOSYS0,
262 				    MT8195_TOP_AXI_PROT_EN_SET,
263 				    MT8195_TOP_AXI_PROT_EN_CLR,
264 				    MT8195_TOP_AXI_PROT_EN_STA1),
265 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_VDOSYS0,
266 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
267 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
268 				    MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA1),
269 		},
270 	},
271 	[MT8195_POWER_DOMAIN_VPPSYS1] = {
272 		.name = "vppsys1",
273 		.sta_mask = BIT(12),
274 		.ctl_offs = 0x368,
275 		.pwr_sta_offs = 0x16c,
276 		.pwr_sta2nd_offs = 0x170,
277 		.sram_pdn_bits = GENMASK(8, 8),
278 		.sram_pdn_ack_bits = GENMASK(12, 12),
279 		.bp_infracfg = {
280 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VPPSYS1,
281 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
282 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
283 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
284 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VPPSYS1_2ND,
285 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
286 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
287 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
288 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VPPSYS1,
289 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
290 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
291 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
292 		},
293 	},
294 	[MT8195_POWER_DOMAIN_VDOSYS1] = {
295 		.name = "vdosys1",
296 		.sta_mask = BIT(14),
297 		.ctl_offs = 0x370,
298 		.pwr_sta_offs = 0x16c,
299 		.pwr_sta2nd_offs = 0x170,
300 		.sram_pdn_bits = GENMASK(8, 8),
301 		.sram_pdn_ack_bits = GENMASK(12, 12),
302 		.bp_infracfg = {
303 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDOSYS1,
304 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
305 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
306 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
307 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDOSYS1_2ND,
308 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
309 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
310 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
311 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDOSYS1,
312 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
313 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
314 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
315 		},
316 	},
317 	[MT8195_POWER_DOMAIN_DP_TX] = {
318 		.name = "dp_tx",
319 		.sta_mask = BIT(16),
320 		.ctl_offs = 0x378,
321 		.pwr_sta_offs = 0x16c,
322 		.pwr_sta2nd_offs = 0x170,
323 		.sram_pdn_bits = GENMASK(8, 8),
324 		.sram_pdn_ack_bits = GENMASK(12, 12),
325 		.bp_infracfg = {
326 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_1_DP_TX,
327 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_SET,
328 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_CLR,
329 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_STA1),
330 		},
331 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
332 	},
333 	[MT8195_POWER_DOMAIN_EPD_TX] = {
334 		.name = "epd_tx",
335 		.sta_mask = BIT(17),
336 		.ctl_offs = 0x37C,
337 		.pwr_sta_offs = 0x16c,
338 		.pwr_sta2nd_offs = 0x170,
339 		.sram_pdn_bits = GENMASK(8, 8),
340 		.sram_pdn_ack_bits = GENMASK(12, 12),
341 		.bp_infracfg = {
342 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_1_EPD_TX,
343 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_SET,
344 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_CLR,
345 				    MT8195_TOP_AXI_PROT_EN_VDNR_1_STA1),
346 		},
347 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
348 	},
349 	[MT8195_POWER_DOMAIN_HDMI_TX] = {
350 		.name = "hdmi_tx",
351 		.sta_mask = BIT(18),
352 		.ctl_offs = 0x380,
353 		.pwr_sta_offs = 0x16c,
354 		.pwr_sta2nd_offs = 0x170,
355 		.sram_pdn_bits = GENMASK(8, 8),
356 		.sram_pdn_ack_bits = GENMASK(12, 12),
357 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_ACTIVE_WAKEUP,
358 	},
359 	[MT8195_POWER_DOMAIN_WPESYS] = {
360 		.name = "wpesys",
361 		.sta_mask = BIT(15),
362 		.ctl_offs = 0x374,
363 		.pwr_sta_offs = 0x16c,
364 		.pwr_sta2nd_offs = 0x170,
365 		.sram_pdn_bits = GENMASK(8, 8),
366 		.sram_pdn_ack_bits = GENMASK(12, 12),
367 		.bp_infracfg = {
368 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_WPESYS,
369 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
370 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
371 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
372 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_WPESYS,
373 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
374 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
375 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
376 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_WPESYS_2ND,
377 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
378 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
379 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
380 		},
381 	},
382 	[MT8195_POWER_DOMAIN_VDEC0] = {
383 		.name = "vdec0",
384 		.sta_mask = BIT(20),
385 		.ctl_offs = 0x388,
386 		.pwr_sta_offs = 0x16c,
387 		.pwr_sta2nd_offs = 0x170,
388 		.sram_pdn_bits = GENMASK(8, 8),
389 		.sram_pdn_ack_bits = GENMASK(12, 12),
390 		.bp_infracfg = {
391 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDEC0,
392 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
393 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
394 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
395 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDEC0,
396 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
397 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
398 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
399 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDEC0_2ND,
400 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
401 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
402 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
403 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDEC0_2ND,
404 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
405 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
406 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
407 		},
408 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
409 	},
410 	[MT8195_POWER_DOMAIN_VDEC1] = {
411 		.name = "vdec1",
412 		.sta_mask = BIT(21),
413 		.ctl_offs = 0x38C,
414 		.pwr_sta_offs = 0x16c,
415 		.pwr_sta2nd_offs = 0x170,
416 		.sram_pdn_bits = GENMASK(8, 8),
417 		.sram_pdn_ack_bits = GENMASK(12, 12),
418 		.bp_infracfg = {
419 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDEC1,
420 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
421 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
422 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
423 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDEC1_2ND,
424 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
425 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
426 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
427 		},
428 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
429 	},
430 	[MT8195_POWER_DOMAIN_VDEC2] = {
431 		.name = "vdec2",
432 		.sta_mask = BIT(22),
433 		.ctl_offs = 0x390,
434 		.pwr_sta_offs = 0x16c,
435 		.pwr_sta2nd_offs = 0x170,
436 		.sram_pdn_bits = GENMASK(8, 8),
437 		.sram_pdn_ack_bits = GENMASK(12, 12),
438 		.bp_infracfg = {
439 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDEC2,
440 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
441 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
442 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
443 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDEC2_2ND,
444 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
445 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
446 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
447 		},
448 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
449 	},
450 	[MT8195_POWER_DOMAIN_VENC] = {
451 		.name = "venc",
452 		.sta_mask = BIT(23),
453 		.ctl_offs = 0x394,
454 		.pwr_sta_offs = 0x16c,
455 		.pwr_sta2nd_offs = 0x170,
456 		.sram_pdn_bits = GENMASK(8, 8),
457 		.sram_pdn_ack_bits = GENMASK(12, 12),
458 		.bp_infracfg = {
459 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VENC,
460 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
461 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
462 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
463 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VENC_2ND,
464 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
465 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
466 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
467 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VENC,
468 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
469 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
470 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
471 		},
472 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
473 	},
474 	[MT8195_POWER_DOMAIN_VENC_CORE1] = {
475 		.name = "venc_core1",
476 		.sta_mask = BIT(24),
477 		.ctl_offs = 0x398,
478 		.pwr_sta_offs = 0x16c,
479 		.pwr_sta2nd_offs = 0x170,
480 		.sram_pdn_bits = GENMASK(8, 8),
481 		.sram_pdn_ack_bits = GENMASK(12, 12),
482 		.bp_infracfg = {
483 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VENC_CORE1,
484 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
485 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
486 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
487 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VENC_CORE1,
488 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
489 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
490 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
491 		},
492 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
493 	},
494 	[MT8195_POWER_DOMAIN_IMG] = {
495 		.name = "img",
496 		.sta_mask = BIT(29),
497 		.ctl_offs = 0x3AC,
498 		.pwr_sta_offs = 0x16c,
499 		.pwr_sta2nd_offs = 0x170,
500 		.sram_pdn_bits = GENMASK(8, 8),
501 		.sram_pdn_ack_bits = GENMASK(12, 12),
502 		.bp_infracfg = {
503 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_IMG,
504 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
505 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
506 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
507 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_IMG_2ND,
508 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
509 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
510 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
511 		},
512 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
513 	},
514 	[MT8195_POWER_DOMAIN_DIP] = {
515 		.name = "dip",
516 		.sta_mask = BIT(30),
517 		.ctl_offs = 0x3B0,
518 		.pwr_sta_offs = 0x16c,
519 		.pwr_sta2nd_offs = 0x170,
520 		.sram_pdn_bits = GENMASK(8, 8),
521 		.sram_pdn_ack_bits = GENMASK(12, 12),
522 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
523 	},
524 	[MT8195_POWER_DOMAIN_IPE] = {
525 		.name = "ipe",
526 		.sta_mask = BIT(31),
527 		.ctl_offs = 0x3B4,
528 		.pwr_sta_offs = 0x16c,
529 		.pwr_sta2nd_offs = 0x170,
530 		.sram_pdn_bits = GENMASK(8, 8),
531 		.sram_pdn_ack_bits = GENMASK(12, 12),
532 		.bp_infracfg = {
533 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_IPE,
534 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
535 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
536 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
537 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_IPE,
538 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
539 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
540 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
541 		},
542 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
543 	},
544 	[MT8195_POWER_DOMAIN_CAM] = {
545 		.name = "cam",
546 		.sta_mask = BIT(25),
547 		.ctl_offs = 0x39C,
548 		.pwr_sta_offs = 0x16c,
549 		.pwr_sta2nd_offs = 0x170,
550 		.sram_pdn_bits = GENMASK(8, 8),
551 		.sram_pdn_ack_bits = GENMASK(12, 12),
552 		.bp_infracfg = {
553 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_CAM,
554 				    MT8195_TOP_AXI_PROT_EN_2_SET,
555 				    MT8195_TOP_AXI_PROT_EN_2_CLR,
556 				    MT8195_TOP_AXI_PROT_EN_2_STA1),
557 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_CAM,
558 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
559 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
560 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
561 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_1_CAM,
562 				    MT8195_TOP_AXI_PROT_EN_1_SET,
563 				    MT8195_TOP_AXI_PROT_EN_1_CLR,
564 				    MT8195_TOP_AXI_PROT_EN_1_STA1),
565 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_CAM_2ND,
566 				    MT8195_TOP_AXI_PROT_EN_MM_SET,
567 				    MT8195_TOP_AXI_PROT_EN_MM_CLR,
568 				    MT8195_TOP_AXI_PROT_EN_MM_STA1),
569 			BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_CAM,
570 				    MT8195_TOP_AXI_PROT_EN_MM_2_SET,
571 				    MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
572 				    MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
573 		},
574 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
575 	},
576 	[MT8195_POWER_DOMAIN_CAM_RAWA] = {
577 		.name = "cam_rawa",
578 		.sta_mask = BIT(26),
579 		.ctl_offs = 0x3A0,
580 		.pwr_sta_offs = 0x16c,
581 		.pwr_sta2nd_offs = 0x170,
582 		.sram_pdn_bits = GENMASK(8, 8),
583 		.sram_pdn_ack_bits = GENMASK(12, 12),
584 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
585 	},
586 	[MT8195_POWER_DOMAIN_CAM_RAWB] = {
587 		.name = "cam_rawb",
588 		.sta_mask = BIT(27),
589 		.ctl_offs = 0x3A4,
590 		.pwr_sta_offs = 0x16c,
591 		.pwr_sta2nd_offs = 0x170,
592 		.sram_pdn_bits = GENMASK(8, 8),
593 		.sram_pdn_ack_bits = GENMASK(12, 12),
594 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
595 	},
596 	[MT8195_POWER_DOMAIN_CAM_MRAW] = {
597 		.name = "cam_mraw",
598 		.sta_mask = BIT(28),
599 		.ctl_offs = 0x3A8,
600 		.pwr_sta_offs = 0x16c,
601 		.pwr_sta2nd_offs = 0x170,
602 		.sram_pdn_bits = GENMASK(8, 8),
603 		.sram_pdn_ack_bits = GENMASK(12, 12),
604 		.caps = MTK_SCPD_KEEP_DEFAULT_OFF,
605 	},
606 };
607 
608 static const struct scpsys_soc_data mt8195_scpsys_data = {
609 	.domains_data = scpsys_domain_data_mt8195,
610 	.num_domains = ARRAY_SIZE(scpsys_domain_data_mt8195),
611 };
612 
613 #endif /* __SOC_MEDIATEK_MT8195_PM_DOMAINS_H */
614