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