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