cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mt8195-pm-domains.h (19146B)


      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
     17static 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,
     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,
    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
    608static 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 */