0001
0002
0003
0004
0005
0006
0007 #ifndef __SOC_MEDIATEK_MT8195_PM_DOMAINS_H
0008 #define __SOC_MEDIATEK_MT8195_PM_DOMAINS_H
0009
0010 #include "mtk-pm-domains.h"
0011 #include <dt-bindings/power/mt8195-power.h>
0012
0013
0014
0015
0016
0017 static const struct scpsys_domain_data scpsys_domain_data_mt8195[] = {
0018 [MT8195_POWER_DOMAIN_PCIE_MAC_P0] = {
0019 .name = "pcie_mac_p0",
0020 .sta_mask = BIT(11),
0021 .ctl_offs = 0x328,
0022 .pwr_sta_offs = 0x174,
0023 .pwr_sta2nd_offs = 0x178,
0024 .sram_pdn_bits = GENMASK(8, 8),
0025 .sram_pdn_ack_bits = GENMASK(12, 12),
0026 .bp_infracfg = {
0027 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_PCIE_MAC_P0,
0028 MT8195_TOP_AXI_PROT_EN_VDNR_SET,
0029 MT8195_TOP_AXI_PROT_EN_VDNR_CLR,
0030 MT8195_TOP_AXI_PROT_EN_VDNR_STA1),
0031 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_1_PCIE_MAC_P0,
0032 MT8195_TOP_AXI_PROT_EN_VDNR_1_SET,
0033 MT8195_TOP_AXI_PROT_EN_VDNR_1_CLR,
0034 MT8195_TOP_AXI_PROT_EN_VDNR_1_STA1),
0035 },
0036 },
0037 [MT8195_POWER_DOMAIN_PCIE_MAC_P1] = {
0038 .name = "pcie_mac_p1",
0039 .sta_mask = BIT(12),
0040 .ctl_offs = 0x32C,
0041 .pwr_sta_offs = 0x174,
0042 .pwr_sta2nd_offs = 0x178,
0043 .sram_pdn_bits = GENMASK(8, 8),
0044 .sram_pdn_ack_bits = GENMASK(12, 12),
0045 .bp_infracfg = {
0046 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_PCIE_MAC_P1,
0047 MT8195_TOP_AXI_PROT_EN_VDNR_SET,
0048 MT8195_TOP_AXI_PROT_EN_VDNR_CLR,
0049 MT8195_TOP_AXI_PROT_EN_VDNR_STA1),
0050 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_1_PCIE_MAC_P1,
0051 MT8195_TOP_AXI_PROT_EN_VDNR_1_SET,
0052 MT8195_TOP_AXI_PROT_EN_VDNR_1_CLR,
0053 MT8195_TOP_AXI_PROT_EN_VDNR_1_STA1),
0054 },
0055 },
0056 [MT8195_POWER_DOMAIN_PCIE_PHY] = {
0057 .name = "pcie_phy",
0058 .sta_mask = BIT(13),
0059 .ctl_offs = 0x330,
0060 .pwr_sta_offs = 0x174,
0061 .pwr_sta2nd_offs = 0x178,
0062 .caps = MTK_SCPD_ACTIVE_WAKEUP,
0063 },
0064 [MT8195_POWER_DOMAIN_SSUSB_PCIE_PHY] = {
0065 .name = "ssusb_pcie_phy",
0066 .sta_mask = BIT(14),
0067 .ctl_offs = 0x334,
0068 .pwr_sta_offs = 0x174,
0069 .pwr_sta2nd_offs = 0x178,
0070 .caps = MTK_SCPD_ACTIVE_WAKEUP | MTK_SCPD_ALWAYS_ON,
0071 },
0072 [MT8195_POWER_DOMAIN_CSI_RX_TOP] = {
0073 .name = "csi_rx_top",
0074 .sta_mask = BIT(18),
0075 .ctl_offs = 0x3C4,
0076 .pwr_sta_offs = 0x174,
0077 .pwr_sta2nd_offs = 0x178,
0078 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0079 },
0080 [MT8195_POWER_DOMAIN_ETHER] = {
0081 .name = "ether",
0082 .sta_mask = BIT(3),
0083 .ctl_offs = 0x344,
0084 .pwr_sta_offs = 0x16c,
0085 .pwr_sta2nd_offs = 0x170,
0086 .sram_pdn_bits = GENMASK(8, 8),
0087 .sram_pdn_ack_bits = GENMASK(12, 12),
0088 .caps = MTK_SCPD_ACTIVE_WAKEUP,
0089 },
0090 [MT8195_POWER_DOMAIN_ADSP] = {
0091 .name = "adsp",
0092 .sta_mask = BIT(10),
0093 .ctl_offs = 0x360,
0094 .pwr_sta_offs = 0x16c,
0095 .pwr_sta2nd_offs = 0x170,
0096 .sram_pdn_bits = GENMASK(8, 8),
0097 .sram_pdn_ack_bits = GENMASK(12, 12),
0098 .bp_infracfg = {
0099 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_ADSP,
0100 MT8195_TOP_AXI_PROT_EN_2_SET,
0101 MT8195_TOP_AXI_PROT_EN_2_CLR,
0102 MT8195_TOP_AXI_PROT_EN_2_STA1),
0103 },
0104 .caps = MTK_SCPD_SRAM_ISO | MTK_SCPD_ACTIVE_WAKEUP,
0105 },
0106 [MT8195_POWER_DOMAIN_AUDIO] = {
0107 .name = "audio",
0108 .sta_mask = BIT(8),
0109 .ctl_offs = 0x358,
0110 .pwr_sta_offs = 0x16c,
0111 .pwr_sta2nd_offs = 0x170,
0112 .sram_pdn_bits = GENMASK(8, 8),
0113 .sram_pdn_ack_bits = GENMASK(12, 12),
0114 .bp_infracfg = {
0115 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_AUDIO,
0116 MT8195_TOP_AXI_PROT_EN_2_SET,
0117 MT8195_TOP_AXI_PROT_EN_2_CLR,
0118 MT8195_TOP_AXI_PROT_EN_2_STA1),
0119 },
0120 },
0121 [MT8195_POWER_DOMAIN_MFG0] = {
0122 .name = "mfg0",
0123 .sta_mask = BIT(1),
0124 .ctl_offs = 0x300,
0125 .pwr_sta_offs = 0x174,
0126 .pwr_sta2nd_offs = 0x178,
0127 .sram_pdn_bits = GENMASK(8, 8),
0128 .sram_pdn_ack_bits = GENMASK(12, 12),
0129 .caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_DOMAIN_SUPPLY,
0130 },
0131 [MT8195_POWER_DOMAIN_MFG1] = {
0132 .name = "mfg1",
0133 .sta_mask = BIT(2),
0134 .ctl_offs = 0x304,
0135 .pwr_sta_offs = 0x174,
0136 .pwr_sta2nd_offs = 0x178,
0137 .sram_pdn_bits = GENMASK(8, 8),
0138 .sram_pdn_ack_bits = GENMASK(12, 12),
0139 .bp_infracfg = {
0140 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MFG1,
0141 MT8195_TOP_AXI_PROT_EN_SET,
0142 MT8195_TOP_AXI_PROT_EN_CLR,
0143 MT8195_TOP_AXI_PROT_EN_STA1),
0144 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_MFG1,
0145 MT8195_TOP_AXI_PROT_EN_2_SET,
0146 MT8195_TOP_AXI_PROT_EN_2_CLR,
0147 MT8195_TOP_AXI_PROT_EN_2_STA1),
0148 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_1_MFG1,
0149 MT8195_TOP_AXI_PROT_EN_1_SET,
0150 MT8195_TOP_AXI_PROT_EN_1_CLR,
0151 MT8195_TOP_AXI_PROT_EN_1_STA1),
0152 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_MFG1_2ND,
0153 MT8195_TOP_AXI_PROT_EN_2_SET,
0154 MT8195_TOP_AXI_PROT_EN_2_CLR,
0155 MT8195_TOP_AXI_PROT_EN_2_STA1),
0156 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MFG1_2ND,
0157 MT8195_TOP_AXI_PROT_EN_SET,
0158 MT8195_TOP_AXI_PROT_EN_CLR,
0159 MT8195_TOP_AXI_PROT_EN_STA1),
0160 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_MFG1,
0161 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
0162 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
0163 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA1),
0164 },
0165 .caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_DOMAIN_SUPPLY,
0166 },
0167 [MT8195_POWER_DOMAIN_MFG2] = {
0168 .name = "mfg2",
0169 .sta_mask = BIT(3),
0170 .ctl_offs = 0x308,
0171 .pwr_sta_offs = 0x174,
0172 .pwr_sta2nd_offs = 0x178,
0173 .sram_pdn_bits = GENMASK(8, 8),
0174 .sram_pdn_ack_bits = GENMASK(12, 12),
0175 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0176 },
0177 [MT8195_POWER_DOMAIN_MFG3] = {
0178 .name = "mfg3",
0179 .sta_mask = BIT(4),
0180 .ctl_offs = 0x30C,
0181 .pwr_sta_offs = 0x174,
0182 .pwr_sta2nd_offs = 0x178,
0183 .sram_pdn_bits = GENMASK(8, 8),
0184 .sram_pdn_ack_bits = GENMASK(12, 12),
0185 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0186 },
0187 [MT8195_POWER_DOMAIN_MFG4] = {
0188 .name = "mfg4",
0189 .sta_mask = BIT(5),
0190 .ctl_offs = 0x310,
0191 .pwr_sta_offs = 0x174,
0192 .pwr_sta2nd_offs = 0x178,
0193 .sram_pdn_bits = GENMASK(8, 8),
0194 .sram_pdn_ack_bits = GENMASK(12, 12),
0195 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0196 },
0197 [MT8195_POWER_DOMAIN_MFG5] = {
0198 .name = "mfg5",
0199 .sta_mask = BIT(6),
0200 .ctl_offs = 0x314,
0201 .pwr_sta_offs = 0x174,
0202 .pwr_sta2nd_offs = 0x178,
0203 .sram_pdn_bits = GENMASK(8, 8),
0204 .sram_pdn_ack_bits = GENMASK(12, 12),
0205 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0206 },
0207 [MT8195_POWER_DOMAIN_MFG6] = {
0208 .name = "mfg6",
0209 .sta_mask = BIT(7),
0210 .ctl_offs = 0x318,
0211 .pwr_sta_offs = 0x174,
0212 .pwr_sta2nd_offs = 0x178,
0213 .sram_pdn_bits = GENMASK(8, 8),
0214 .sram_pdn_ack_bits = GENMASK(12, 12),
0215 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0216 },
0217 [MT8195_POWER_DOMAIN_VPPSYS0] = {
0218 .name = "vppsys0",
0219 .sta_mask = BIT(11),
0220 .ctl_offs = 0x364,
0221 .pwr_sta_offs = 0x16c,
0222 .pwr_sta2nd_offs = 0x170,
0223 .sram_pdn_bits = GENMASK(8, 8),
0224 .sram_pdn_ack_bits = GENMASK(12, 12),
0225 .bp_infracfg = {
0226 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VPPSYS0,
0227 MT8195_TOP_AXI_PROT_EN_SET,
0228 MT8195_TOP_AXI_PROT_EN_CLR,
0229 MT8195_TOP_AXI_PROT_EN_STA1),
0230 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VPPSYS0,
0231 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0232 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0233 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0234 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VPPSYS0_2ND,
0235 MT8195_TOP_AXI_PROT_EN_SET,
0236 MT8195_TOP_AXI_PROT_EN_CLR,
0237 MT8195_TOP_AXI_PROT_EN_STA1),
0238 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VPPSYS0_2ND,
0239 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0240 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0241 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0242 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_VPPSYS0,
0243 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
0244 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
0245 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA1),
0246 },
0247 },
0248 [MT8195_POWER_DOMAIN_VDOSYS0] = {
0249 .name = "vdosys0",
0250 .sta_mask = BIT(13),
0251 .ctl_offs = 0x36C,
0252 .pwr_sta_offs = 0x16c,
0253 .pwr_sta2nd_offs = 0x170,
0254 .sram_pdn_bits = GENMASK(8, 8),
0255 .sram_pdn_ack_bits = GENMASK(12, 12),
0256 .bp_infracfg = {
0257 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDOSYS0,
0258 MT8195_TOP_AXI_PROT_EN_MM_SET,
0259 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0260 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0261 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDOSYS0,
0262 MT8195_TOP_AXI_PROT_EN_SET,
0263 MT8195_TOP_AXI_PROT_EN_CLR,
0264 MT8195_TOP_AXI_PROT_EN_STA1),
0265 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_VDOSYS0,
0266 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_SET,
0267 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_CLR,
0268 MT8195_TOP_AXI_PROT_EN_SUB_INFRA_VDNR_STA1),
0269 },
0270 },
0271 [MT8195_POWER_DOMAIN_VPPSYS1] = {
0272 .name = "vppsys1",
0273 .sta_mask = BIT(12),
0274 .ctl_offs = 0x368,
0275 .pwr_sta_offs = 0x16c,
0276 .pwr_sta2nd_offs = 0x170,
0277 .sram_pdn_bits = GENMASK(8, 8),
0278 .sram_pdn_ack_bits = GENMASK(12, 12),
0279 .bp_infracfg = {
0280 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VPPSYS1,
0281 MT8195_TOP_AXI_PROT_EN_MM_SET,
0282 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0283 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0284 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VPPSYS1_2ND,
0285 MT8195_TOP_AXI_PROT_EN_MM_SET,
0286 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0287 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0288 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VPPSYS1,
0289 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0290 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0291 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0292 },
0293 },
0294 [MT8195_POWER_DOMAIN_VDOSYS1] = {
0295 .name = "vdosys1",
0296 .sta_mask = BIT(14),
0297 .ctl_offs = 0x370,
0298 .pwr_sta_offs = 0x16c,
0299 .pwr_sta2nd_offs = 0x170,
0300 .sram_pdn_bits = GENMASK(8, 8),
0301 .sram_pdn_ack_bits = GENMASK(12, 12),
0302 .bp_infracfg = {
0303 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDOSYS1,
0304 MT8195_TOP_AXI_PROT_EN_MM_SET,
0305 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0306 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0307 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDOSYS1_2ND,
0308 MT8195_TOP_AXI_PROT_EN_MM_SET,
0309 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0310 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0311 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDOSYS1,
0312 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0313 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0314 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0315 },
0316 },
0317 [MT8195_POWER_DOMAIN_DP_TX] = {
0318 .name = "dp_tx",
0319 .sta_mask = BIT(16),
0320 .ctl_offs = 0x378,
0321 .pwr_sta_offs = 0x16c,
0322 .pwr_sta2nd_offs = 0x170,
0323 .sram_pdn_bits = GENMASK(8, 8),
0324 .sram_pdn_ack_bits = GENMASK(12, 12),
0325 .bp_infracfg = {
0326 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_1_DP_TX,
0327 MT8195_TOP_AXI_PROT_EN_VDNR_1_SET,
0328 MT8195_TOP_AXI_PROT_EN_VDNR_1_CLR,
0329 MT8195_TOP_AXI_PROT_EN_VDNR_1_STA1),
0330 },
0331 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0332 },
0333 [MT8195_POWER_DOMAIN_EPD_TX] = {
0334 .name = "epd_tx",
0335 .sta_mask = BIT(17),
0336 .ctl_offs = 0x37C,
0337 .pwr_sta_offs = 0x16c,
0338 .pwr_sta2nd_offs = 0x170,
0339 .sram_pdn_bits = GENMASK(8, 8),
0340 .sram_pdn_ack_bits = GENMASK(12, 12),
0341 .bp_infracfg = {
0342 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_VDNR_1_EPD_TX,
0343 MT8195_TOP_AXI_PROT_EN_VDNR_1_SET,
0344 MT8195_TOP_AXI_PROT_EN_VDNR_1_CLR,
0345 MT8195_TOP_AXI_PROT_EN_VDNR_1_STA1),
0346 },
0347 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0348 },
0349 [MT8195_POWER_DOMAIN_HDMI_TX] = {
0350 .name = "hdmi_tx",
0351 .sta_mask = BIT(18),
0352 .ctl_offs = 0x380,
0353 .pwr_sta_offs = 0x16c,
0354 .pwr_sta2nd_offs = 0x170,
0355 .sram_pdn_bits = GENMASK(8, 8),
0356 .sram_pdn_ack_bits = GENMASK(12, 12),
0357 .caps = MTK_SCPD_KEEP_DEFAULT_OFF | MTK_SCPD_ACTIVE_WAKEUP,
0358 },
0359 [MT8195_POWER_DOMAIN_WPESYS] = {
0360 .name = "wpesys",
0361 .sta_mask = BIT(15),
0362 .ctl_offs = 0x374,
0363 .pwr_sta_offs = 0x16c,
0364 .pwr_sta2nd_offs = 0x170,
0365 .sram_pdn_bits = GENMASK(8, 8),
0366 .sram_pdn_ack_bits = GENMASK(12, 12),
0367 .bp_infracfg = {
0368 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_WPESYS,
0369 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0370 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0371 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0372 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_WPESYS,
0373 MT8195_TOP_AXI_PROT_EN_MM_SET,
0374 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0375 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0376 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_WPESYS_2ND,
0377 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0378 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0379 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0380 },
0381 },
0382 [MT8195_POWER_DOMAIN_VDEC0] = {
0383 .name = "vdec0",
0384 .sta_mask = BIT(20),
0385 .ctl_offs = 0x388,
0386 .pwr_sta_offs = 0x16c,
0387 .pwr_sta2nd_offs = 0x170,
0388 .sram_pdn_bits = GENMASK(8, 8),
0389 .sram_pdn_ack_bits = GENMASK(12, 12),
0390 .bp_infracfg = {
0391 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDEC0,
0392 MT8195_TOP_AXI_PROT_EN_MM_SET,
0393 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0394 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0395 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDEC0,
0396 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0397 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0398 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0399 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDEC0_2ND,
0400 MT8195_TOP_AXI_PROT_EN_MM_SET,
0401 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0402 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0403 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDEC0_2ND,
0404 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0405 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0406 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0407 },
0408 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0409 },
0410 [MT8195_POWER_DOMAIN_VDEC1] = {
0411 .name = "vdec1",
0412 .sta_mask = BIT(21),
0413 .ctl_offs = 0x38C,
0414 .pwr_sta_offs = 0x16c,
0415 .pwr_sta2nd_offs = 0x170,
0416 .sram_pdn_bits = GENMASK(8, 8),
0417 .sram_pdn_ack_bits = GENMASK(12, 12),
0418 .bp_infracfg = {
0419 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDEC1,
0420 MT8195_TOP_AXI_PROT_EN_MM_SET,
0421 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0422 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0423 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VDEC1_2ND,
0424 MT8195_TOP_AXI_PROT_EN_MM_SET,
0425 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0426 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0427 },
0428 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0429 },
0430 [MT8195_POWER_DOMAIN_VDEC2] = {
0431 .name = "vdec2",
0432 .sta_mask = BIT(22),
0433 .ctl_offs = 0x390,
0434 .pwr_sta_offs = 0x16c,
0435 .pwr_sta2nd_offs = 0x170,
0436 .sram_pdn_bits = GENMASK(8, 8),
0437 .sram_pdn_ack_bits = GENMASK(12, 12),
0438 .bp_infracfg = {
0439 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDEC2,
0440 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0441 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0442 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0443 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VDEC2_2ND,
0444 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0445 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0446 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0447 },
0448 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0449 },
0450 [MT8195_POWER_DOMAIN_VENC] = {
0451 .name = "venc",
0452 .sta_mask = BIT(23),
0453 .ctl_offs = 0x394,
0454 .pwr_sta_offs = 0x16c,
0455 .pwr_sta2nd_offs = 0x170,
0456 .sram_pdn_bits = GENMASK(8, 8),
0457 .sram_pdn_ack_bits = GENMASK(12, 12),
0458 .bp_infracfg = {
0459 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VENC,
0460 MT8195_TOP_AXI_PROT_EN_MM_SET,
0461 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0462 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0463 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VENC_2ND,
0464 MT8195_TOP_AXI_PROT_EN_MM_SET,
0465 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0466 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0467 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VENC,
0468 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0469 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0470 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0471 },
0472 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0473 },
0474 [MT8195_POWER_DOMAIN_VENC_CORE1] = {
0475 .name = "venc_core1",
0476 .sta_mask = BIT(24),
0477 .ctl_offs = 0x398,
0478 .pwr_sta_offs = 0x16c,
0479 .pwr_sta2nd_offs = 0x170,
0480 .sram_pdn_bits = GENMASK(8, 8),
0481 .sram_pdn_ack_bits = GENMASK(12, 12),
0482 .bp_infracfg = {
0483 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_VENC_CORE1,
0484 MT8195_TOP_AXI_PROT_EN_MM_SET,
0485 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0486 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0487 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_VENC_CORE1,
0488 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0489 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0490 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0491 },
0492 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0493 },
0494 [MT8195_POWER_DOMAIN_IMG] = {
0495 .name = "img",
0496 .sta_mask = BIT(29),
0497 .ctl_offs = 0x3AC,
0498 .pwr_sta_offs = 0x16c,
0499 .pwr_sta2nd_offs = 0x170,
0500 .sram_pdn_bits = GENMASK(8, 8),
0501 .sram_pdn_ack_bits = GENMASK(12, 12),
0502 .bp_infracfg = {
0503 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_IMG,
0504 MT8195_TOP_AXI_PROT_EN_MM_SET,
0505 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0506 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0507 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_IMG_2ND,
0508 MT8195_TOP_AXI_PROT_EN_MM_SET,
0509 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0510 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0511 },
0512 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0513 },
0514 [MT8195_POWER_DOMAIN_DIP] = {
0515 .name = "dip",
0516 .sta_mask = BIT(30),
0517 .ctl_offs = 0x3B0,
0518 .pwr_sta_offs = 0x16c,
0519 .pwr_sta2nd_offs = 0x170,
0520 .sram_pdn_bits = GENMASK(8, 8),
0521 .sram_pdn_ack_bits = GENMASK(12, 12),
0522 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0523 },
0524 [MT8195_POWER_DOMAIN_IPE] = {
0525 .name = "ipe",
0526 .sta_mask = BIT(31),
0527 .ctl_offs = 0x3B4,
0528 .pwr_sta_offs = 0x16c,
0529 .pwr_sta2nd_offs = 0x170,
0530 .sram_pdn_bits = GENMASK(8, 8),
0531 .sram_pdn_ack_bits = GENMASK(12, 12),
0532 .bp_infracfg = {
0533 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_IPE,
0534 MT8195_TOP_AXI_PROT_EN_MM_SET,
0535 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0536 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0537 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_IPE,
0538 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0539 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0540 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0541 },
0542 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0543 },
0544 [MT8195_POWER_DOMAIN_CAM] = {
0545 .name = "cam",
0546 .sta_mask = BIT(25),
0547 .ctl_offs = 0x39C,
0548 .pwr_sta_offs = 0x16c,
0549 .pwr_sta2nd_offs = 0x170,
0550 .sram_pdn_bits = GENMASK(8, 8),
0551 .sram_pdn_ack_bits = GENMASK(12, 12),
0552 .bp_infracfg = {
0553 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_2_CAM,
0554 MT8195_TOP_AXI_PROT_EN_2_SET,
0555 MT8195_TOP_AXI_PROT_EN_2_CLR,
0556 MT8195_TOP_AXI_PROT_EN_2_STA1),
0557 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_CAM,
0558 MT8195_TOP_AXI_PROT_EN_MM_SET,
0559 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0560 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0561 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_1_CAM,
0562 MT8195_TOP_AXI_PROT_EN_1_SET,
0563 MT8195_TOP_AXI_PROT_EN_1_CLR,
0564 MT8195_TOP_AXI_PROT_EN_1_STA1),
0565 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_CAM_2ND,
0566 MT8195_TOP_AXI_PROT_EN_MM_SET,
0567 MT8195_TOP_AXI_PROT_EN_MM_CLR,
0568 MT8195_TOP_AXI_PROT_EN_MM_STA1),
0569 BUS_PROT_WR(MT8195_TOP_AXI_PROT_EN_MM_2_CAM,
0570 MT8195_TOP_AXI_PROT_EN_MM_2_SET,
0571 MT8195_TOP_AXI_PROT_EN_MM_2_CLR,
0572 MT8195_TOP_AXI_PROT_EN_MM_2_STA1),
0573 },
0574 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0575 },
0576 [MT8195_POWER_DOMAIN_CAM_RAWA] = {
0577 .name = "cam_rawa",
0578 .sta_mask = BIT(26),
0579 .ctl_offs = 0x3A0,
0580 .pwr_sta_offs = 0x16c,
0581 .pwr_sta2nd_offs = 0x170,
0582 .sram_pdn_bits = GENMASK(8, 8),
0583 .sram_pdn_ack_bits = GENMASK(12, 12),
0584 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0585 },
0586 [MT8195_POWER_DOMAIN_CAM_RAWB] = {
0587 .name = "cam_rawb",
0588 .sta_mask = BIT(27),
0589 .ctl_offs = 0x3A4,
0590 .pwr_sta_offs = 0x16c,
0591 .pwr_sta2nd_offs = 0x170,
0592 .sram_pdn_bits = GENMASK(8, 8),
0593 .sram_pdn_ack_bits = GENMASK(12, 12),
0594 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0595 },
0596 [MT8195_POWER_DOMAIN_CAM_MRAW] = {
0597 .name = "cam_mraw",
0598 .sta_mask = BIT(28),
0599 .ctl_offs = 0x3A8,
0600 .pwr_sta_offs = 0x16c,
0601 .pwr_sta2nd_offs = 0x170,
0602 .sram_pdn_bits = GENMASK(8, 8),
0603 .sram_pdn_ack_bits = GENMASK(12, 12),
0604 .caps = MTK_SCPD_KEEP_DEFAULT_OFF,
0605 },
0606 };
0607
0608 static const struct scpsys_soc_data mt8195_scpsys_data = {
0609 .domains_data = scpsys_domain_data_mt8195,
0610 .num_domains = ARRAY_SIZE(scpsys_domain_data_mt8195),
0611 };
0612
0613 #endif