1*20b68457SNikolai Burov /* SPDX-License-Identifier: GPL-2.0-only */ 2*20b68457SNikolai Burov /* 3*20b68457SNikolai Burov * Copyright (c) 2025 MediaTek Inc. 4*20b68457SNikolai Burov * KY Liu <ky.liu@mediatek.com> 5*20b68457SNikolai Burov * Copyright (c) 2026 Jolla Mobile Ltd 6*20b68457SNikolai Burov * Nikolai Burov <nikolai.burov@jolla.com> 7*20b68457SNikolai Burov */ 8*20b68457SNikolai Burov 9*20b68457SNikolai Burov #ifndef __SOC_MEDIATEK_MT6858_PM_DOMAINS_H 10*20b68457SNikolai Burov #define __SOC_MEDIATEK_MT6858_PM_DOMAINS_H 11*20b68457SNikolai Burov 12*20b68457SNikolai Burov #include "mtk-pm-domains.h" 13*20b68457SNikolai Burov #include <dt-bindings/power/mediatek,mt6858-power.h> 14*20b68457SNikolai Burov 15*20b68457SNikolai Burov /* TOP_AXI registers */ 16*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_SET 0x0c14 17*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CLR 0x0c18 18*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_RDY 0x0c1c 19*20b68457SNikolai Burov 20*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_DIS0 (BIT(0) | BIT(1) | BIT(18)) 21*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_ISP_IPE BIT(2) 22*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_ISP_IMG1 BIT(3) 23*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_VEN0 BIT(12) 24*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_VDE0 BIT(20) 25*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CAM_MAIN (BIT(30) | BIT(31)) 26*20b68457SNikolai Burov 27*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_SET 0x0c24 28*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CLR 0x0c28 29*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_RDY 0x0c2c 30*20b68457SNikolai Burov 31*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_ISP_IMG1 BIT(7) 32*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_ISP_IPE BIT(8) 33*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CAM_MAIN (BIT(9) | BIT(10)) 34*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_VEN0 BIT(12) 35*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_VDE0 BIT(13) 36*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_MM_INFRA (GENMASK(3, 1) | BIT(6)) 37*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_MM_INFRA_2ND (BIT(0) | BIT(5) | GENMASK(15, 7)) 38*20b68457SNikolai Burov 39*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_SET 0x0c44 40*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_CLR 0x0c48 41*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_RDY 0x0c4c 42*20b68457SNikolai Burov 43*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_CONN BIT(8) 44*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_MM_INFRA BIT(16) 45*20b68457SNikolai Burov 46*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_SET 0x0c54 47*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_CLR 0x0c58 48*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_RDY 0x0c5c 49*20b68457SNikolai Burov 50*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_MM_INFRA BIT(11) 51*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_CONN BIT(12) 52*20b68457SNikolai Burov 53*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_EMISYS_STA_0_SET 0x0c64 54*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_EMISYS_STA_0_CLR 0x0c68 55*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_EMISYS_STA_0_RDY 0x0c6c 56*20b68457SNikolai Burov 57*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_EMISYS_STA_0_MM_INFRA (BIT(20) | BIT(21)) 58*20b68457SNikolai Burov 59*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_SET 0x0c84 60*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_CLR 0x0c88 61*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_RDY 0x0c8c 62*20b68457SNikolai Burov 63*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_AUDIO BIT(6) 64*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_SSUSB BIT(7) 65*20b68457SNikolai Burov 66*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MCU_STA_0_SET 0x0c94 67*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MCU_STA_0_CLR 0x0c98 68*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MCU_STA_0_RDY 0x0c9c 69*20b68457SNikolai Burov 70*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MCU_STA_0_CONN BIT(1) 71*20b68457SNikolai Burov #define MT6858_TOP_AXI_PROT_EN_MCU_STA_0_CONN_2ND BIT(0) 72*20b68457SNikolai Burov 73*20b68457SNikolai Burov /* {IMG,IPE,CAM}_SUBx registers */ 74*20b68457SNikolai Burov #define MT6858_SUBx_PROT_EN_SET 0x03c4 75*20b68457SNikolai Burov #define MT6858_SUBx_PROT_EN_CLR 0x03c8 76*20b68457SNikolai Burov #define MT6858_SUBx_PROT_EN_STA 0x03cc 77*20b68457SNikolai Burov 78*20b68457SNikolai Burov #define MT6858_IMG_SUB0_PROT_EN_SMI_ISP_IMG1 (BIT(0) | BIT(1)) 79*20b68457SNikolai Burov 80*20b68457SNikolai Burov #define MT6858_IPE_SUB0_PROT_EN_SMI_ISP_IPE (BIT(0) | BIT(1)) 81*20b68457SNikolai Burov 82*20b68457SNikolai Burov #define MT6858_CAM_SUB0_PROT_EN_SMI_CAM_MAIN BIT(0) 83*20b68457SNikolai Burov #define MT6858_CAM_SUB0_PROT_EN_SMI_CAM_SUBB BIT(1) 84*20b68457SNikolai Burov 85*20b68457SNikolai Burov #define MT6858_CAM_SUB1_PROT_EN_SMI_CAM_MAIN BIT(0) 86*20b68457SNikolai Burov #define MT6858_CAM_SUB1_PROT_EN_SMI_CAM_SUBA BIT(1) 87*20b68457SNikolai Burov 88*20b68457SNikolai Burov /* VLP_AXI registers */ 89*20b68457SNikolai Burov #define MT6858_VLP_AXI_PROT_EN_SET 0x0214 90*20b68457SNikolai Burov #define MT6858_VLP_AXI_PROT_EN_CLR 0x0218 91*20b68457SNikolai Burov #define MT6858_VLP_AXI_PROT_EN_STA 0x021c 92*20b68457SNikolai Burov 93*20b68457SNikolai Burov #define MT6858_VLP_AXI_PROT_EN_MM_PROC BIT(8) 94*20b68457SNikolai Burov #define MT6858_VLP_AXI_PROT_EN_MM_PROC_2ND (BIT(9) | BIT(10)) 95*20b68457SNikolai Burov 96*20b68457SNikolai Burov /* PWR_CON registers */ 97*20b68457SNikolai Burov #define MT6858_PWR_ACK BIT(30) 98*20b68457SNikolai Burov #define MT6858_PWR_ACK_2ND BIT(31) 99*20b68457SNikolai Burov 100*20b68457SNikolai Burov static enum scpsys_bus_prot_block scpsys_bus_prot_blocks_mt6858[] = { 101*20b68457SNikolai Burov BUS_PROT_BLOCK_INFRA, 102*20b68457SNikolai Burov BUS_PROT_BLOCK_IMG_SUB0, 103*20b68457SNikolai Burov BUS_PROT_BLOCK_CAM_SUB1, 104*20b68457SNikolai Burov BUS_PROT_BLOCK_CAM_SUB0, 105*20b68457SNikolai Burov BUS_PROT_BLOCK_IPE_SUB0, 106*20b68457SNikolai Burov BUS_PROT_BLOCK_VLP, 107*20b68457SNikolai Burov }; 108*20b68457SNikolai Burov 109*20b68457SNikolai Burov static const struct scpsys_domain_data scpsys_domain_data_mt6858[] = { 110*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_MD] = { 111*20b68457SNikolai Burov .name = "md", 112*20b68457SNikolai Burov /* 113*20b68457SNikolai Burov * Note: the PWR_ACK_2ND bit is not used for the modem domain. 114*20b68457SNikolai Burov * Skip it and fall back to checking the 1st bit twice. 115*20b68457SNikolai Burov */ 116*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 117*20b68457SNikolai Burov .ctl_offs = 0xe00, 118*20b68457SNikolai Burov .pwr_sta_offs = 0xe00, 119*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe00, 120*20b68457SNikolai Burov .ext_buck_iso_offs = 0xf20, 121*20b68457SNikolai Burov .ext_buck_iso_mask = GENMASK(1, 0), 122*20b68457SNikolai Burov .caps = MTK_SCPD_MODEM_SECURE_PWRSEQ | MTK_SCPD_EXT_BUCK_ISO | 123*20b68457SNikolai Burov MTK_SCPD_KEEP_DEFAULT_OFF, 124*20b68457SNikolai Burov }, 125*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_CONN] = { 126*20b68457SNikolai Burov .name = "conn", 127*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 128*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 129*20b68457SNikolai Burov .ctl_offs = 0xe04, 130*20b68457SNikolai Burov .pwr_sta_offs = 0xe04, 131*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe04, 132*20b68457SNikolai Burov .bp_cfg = { 133*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 134*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MCU_STA_0_CONN, 135*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MCU_STA_0_SET, 136*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MCU_STA_0_CLR, 137*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MCU_STA_0_RDY), 138*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 139*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_CONN, 140*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_SET, 141*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_CLR, 142*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_RDY), 143*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 144*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MCU_STA_0_CONN_2ND, 145*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MCU_STA_0_SET, 146*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MCU_STA_0_CLR, 147*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MCU_STA_0_RDY), 148*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 149*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_CONN, 150*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_SET, 151*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_CLR, 152*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_RDY), 153*20b68457SNikolai Burov }, 154*20b68457SNikolai Burov .caps = MTK_SCPD_KEEP_DEFAULT_OFF, 155*20b68457SNikolai Burov }, 156*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_AUDIO] = { 157*20b68457SNikolai Burov .name = "audio", 158*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 159*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 160*20b68457SNikolai Burov .ctl_offs = 0xe18, 161*20b68457SNikolai Burov .pwr_sta_offs = 0xe18, 162*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe18, 163*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 164*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 165*20b68457SNikolai Burov .bp_cfg = { 166*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 167*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_AUDIO, 168*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_SET, 169*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_CLR, 170*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_RDY), 171*20b68457SNikolai Burov }, 172*20b68457SNikolai Burov }, 173*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_ISP_IMG1] = { 174*20b68457SNikolai Burov .name = "isp-img1", 175*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 176*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 177*20b68457SNikolai Burov .ctl_offs = 0xe28, 178*20b68457SNikolai Burov .pwr_sta_offs = 0xe28, 179*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe28, 180*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 181*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 182*20b68457SNikolai Burov .bp_cfg = { 183*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 184*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_ISP_IMG1, 185*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_SET, 186*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CLR, 187*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_RDY), 188*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 189*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_ISP_IMG1, 190*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_SET, 191*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CLR, 192*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_RDY), 193*20b68457SNikolai Burov BUS_PROT_WR_IGN(IMG_SUB0, 194*20b68457SNikolai Burov MT6858_IMG_SUB0_PROT_EN_SMI_ISP_IMG1, 195*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_SET, 196*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_CLR, 197*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_STA), 198*20b68457SNikolai Burov }, 199*20b68457SNikolai Burov .caps = MTK_SCPD_KEEP_DEFAULT_OFF, 200*20b68457SNikolai Burov }, 201*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_ISP_IMG2] = { 202*20b68457SNikolai Burov .name = "isp-img2", 203*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 204*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 205*20b68457SNikolai Burov .ctl_offs = 0xe2c, 206*20b68457SNikolai Burov .pwr_sta_offs = 0xe2c, 207*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe2c, 208*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 209*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 210*20b68457SNikolai Burov .caps = MTK_SCPD_KEEP_DEFAULT_OFF, 211*20b68457SNikolai Burov }, 212*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_ISP_IPE] = { 213*20b68457SNikolai Burov .name = "isp-ipe", 214*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 215*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 216*20b68457SNikolai Burov .ctl_offs = 0xe30, 217*20b68457SNikolai Burov .pwr_sta_offs = 0xe30, 218*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe30, 219*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 220*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 221*20b68457SNikolai Burov .bp_cfg = { 222*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 223*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_ISP_IPE, 224*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_SET, 225*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CLR, 226*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_RDY), 227*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 228*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_ISP_IPE, 229*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_SET, 230*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CLR, 231*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_RDY), 232*20b68457SNikolai Burov BUS_PROT_WR_IGN(IPE_SUB0, 233*20b68457SNikolai Burov MT6858_IPE_SUB0_PROT_EN_SMI_ISP_IPE, 234*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_SET, 235*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_CLR, 236*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_STA), 237*20b68457SNikolai Burov }, 238*20b68457SNikolai Burov .caps = MTK_SCPD_KEEP_DEFAULT_OFF, 239*20b68457SNikolai Burov }, 240*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_VDE0] = { 241*20b68457SNikolai Burov .name = "vde0", 242*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 243*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 244*20b68457SNikolai Burov .ctl_offs = 0xe34, 245*20b68457SNikolai Burov .pwr_sta_offs = 0xe34, 246*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe34, 247*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 248*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 249*20b68457SNikolai Burov .bp_cfg = { 250*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 251*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_VDE0, 252*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_SET, 253*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CLR, 254*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_RDY), 255*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 256*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_VDE0, 257*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_SET, 258*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CLR, 259*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_RDY), 260*20b68457SNikolai Burov }, 261*20b68457SNikolai Burov }, 262*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_VEN0] = { 263*20b68457SNikolai Burov .name = "ven0", 264*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 265*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 266*20b68457SNikolai Burov .ctl_offs = 0xe3c, 267*20b68457SNikolai Burov .pwr_sta_offs = 0xe3c, 268*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe3c, 269*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 270*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 271*20b68457SNikolai Burov .bp_cfg = { 272*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 273*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_VEN0, 274*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_SET, 275*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CLR, 276*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_RDY), 277*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 278*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_VEN0, 279*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_SET, 280*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CLR, 281*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_RDY), 282*20b68457SNikolai Burov }, 283*20b68457SNikolai Burov }, 284*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_CAM_MAIN] = { 285*20b68457SNikolai Burov .name = "cam-main", 286*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 287*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 288*20b68457SNikolai Burov .ctl_offs = 0xe44, 289*20b68457SNikolai Burov .pwr_sta_offs = 0xe44, 290*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe44, 291*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 292*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 293*20b68457SNikolai Burov .bp_cfg = { 294*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 295*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CAM_MAIN, 296*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_SET, 297*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CLR, 298*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_RDY), 299*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 300*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CAM_MAIN, 301*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_SET, 302*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CLR, 303*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_RDY), 304*20b68457SNikolai Burov BUS_PROT_WR_IGN(CAM_SUB0, 305*20b68457SNikolai Burov MT6858_CAM_SUB0_PROT_EN_SMI_CAM_MAIN, 306*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_SET, 307*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_CLR, 308*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_STA), 309*20b68457SNikolai Burov BUS_PROT_WR_IGN(CAM_SUB1, 310*20b68457SNikolai Burov MT6858_CAM_SUB1_PROT_EN_SMI_CAM_MAIN, 311*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_SET, 312*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_CLR, 313*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_STA), 314*20b68457SNikolai Burov }, 315*20b68457SNikolai Burov .caps = MTK_SCPD_KEEP_DEFAULT_OFF, 316*20b68457SNikolai Burov }, 317*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_CAM_SUBA] = { 318*20b68457SNikolai Burov .name = "cam-suba", 319*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 320*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 321*20b68457SNikolai Burov .ctl_offs = 0xe4c, 322*20b68457SNikolai Burov .pwr_sta_offs = 0xe4c, 323*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe4c, 324*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 325*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 326*20b68457SNikolai Burov .bp_cfg = { 327*20b68457SNikolai Burov BUS_PROT_WR_IGN(CAM_SUB1, 328*20b68457SNikolai Burov MT6858_CAM_SUB1_PROT_EN_SMI_CAM_SUBA, 329*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_SET, 330*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_CLR, 331*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_STA), 332*20b68457SNikolai Burov }, 333*20b68457SNikolai Burov .caps = MTK_SCPD_KEEP_DEFAULT_OFF, 334*20b68457SNikolai Burov }, 335*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_CAM_SUBB] = { 336*20b68457SNikolai Burov .name = "cam-subb", 337*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 338*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 339*20b68457SNikolai Burov .ctl_offs = 0xe50, 340*20b68457SNikolai Burov .pwr_sta_offs = 0xe50, 341*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe50, 342*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 343*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 344*20b68457SNikolai Burov .bp_cfg = { 345*20b68457SNikolai Burov BUS_PROT_WR_IGN(CAM_SUB0, 346*20b68457SNikolai Burov MT6858_CAM_SUB0_PROT_EN_SMI_CAM_SUBB, 347*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_SET, 348*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_CLR, 349*20b68457SNikolai Burov MT6858_SUBx_PROT_EN_STA), 350*20b68457SNikolai Burov }, 351*20b68457SNikolai Burov .caps = MTK_SCPD_KEEP_DEFAULT_OFF, 352*20b68457SNikolai Burov }, 353*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_DIS0] = { 354*20b68457SNikolai Burov .name = "dis0", 355*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 356*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 357*20b68457SNikolai Burov .ctl_offs = 0xe6c, 358*20b68457SNikolai Burov .pwr_sta_offs = 0xe6c, 359*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe6c, 360*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 361*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 362*20b68457SNikolai Burov .bp_cfg = { 363*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 364*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_DIS0, 365*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_SET, 366*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_CLR, 367*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_0_RDY), 368*20b68457SNikolai Burov }, 369*20b68457SNikolai Burov }, 370*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_MM_INFRA] = { 371*20b68457SNikolai Burov .name = "mm-infra", 372*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 373*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 374*20b68457SNikolai Burov .ctl_offs = 0xe74, 375*20b68457SNikolai Burov .pwr_sta_offs = 0xe74, 376*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe74, 377*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 378*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 379*20b68457SNikolai Burov .bp_cfg = { 380*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 381*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_MM_INFRA, 382*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_SET, 383*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CLR, 384*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_RDY), 385*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 386*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_MM_INFRA, 387*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_SET, 388*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_CLR, 389*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_1_RDY), 390*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 391*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_MM_INFRA_2ND, 392*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_SET, 393*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_CLR, 394*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_MMSYS_STA_1_RDY), 395*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 396*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_MM_INFRA, 397*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_SET, 398*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_CLR, 399*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_INFRASYS_STA_0_RDY), 400*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 401*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_EMISYS_STA_0_MM_INFRA, 402*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_EMISYS_STA_0_SET, 403*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_EMISYS_STA_0_CLR, 404*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_EMISYS_STA_0_RDY), 405*20b68457SNikolai Burov }, 406*20b68457SNikolai Burov }, 407*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_MM_PROC_DORMANT] = { 408*20b68457SNikolai Burov .name = "mm-proc-dormant", 409*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 410*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 411*20b68457SNikolai Burov .ctl_offs = 0xe78, 412*20b68457SNikolai Burov .pwr_sta_offs = 0xe78, 413*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe78, 414*20b68457SNikolai Burov .sram_pdn_bits = BIT(9), 415*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(13), 416*20b68457SNikolai Burov .bp_cfg = { 417*20b68457SNikolai Burov BUS_PROT_WR_IGN(VLP, 418*20b68457SNikolai Burov MT6858_VLP_AXI_PROT_EN_MM_PROC, 419*20b68457SNikolai Burov MT6858_VLP_AXI_PROT_EN_SET, 420*20b68457SNikolai Burov MT6858_VLP_AXI_PROT_EN_CLR, 421*20b68457SNikolai Burov MT6858_VLP_AXI_PROT_EN_STA), 422*20b68457SNikolai Burov BUS_PROT_WR_IGN(VLP, 423*20b68457SNikolai Burov MT6858_VLP_AXI_PROT_EN_MM_PROC_2ND, 424*20b68457SNikolai Burov MT6858_VLP_AXI_PROT_EN_SET, 425*20b68457SNikolai Burov MT6858_VLP_AXI_PROT_EN_CLR, 426*20b68457SNikolai Burov MT6858_VLP_AXI_PROT_EN_STA), 427*20b68457SNikolai Burov }, 428*20b68457SNikolai Burov .caps = MTK_SCPD_SRAM_ISO | MTK_SCPD_SRAM_PDN_INVERTED, 429*20b68457SNikolai Burov }, 430*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_CSI_RX] = { 431*20b68457SNikolai Burov .name = "csi-rx", 432*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 433*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 434*20b68457SNikolai Burov .ctl_offs = 0xe98, 435*20b68457SNikolai Burov .pwr_sta_offs = 0xe98, 436*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xe98, 437*20b68457SNikolai Burov .caps = MTK_SCPD_KEEP_DEFAULT_OFF, 438*20b68457SNikolai Burov }, 439*20b68457SNikolai Burov [MT6858_POWER_DOMAIN_SSUSB] = { 440*20b68457SNikolai Burov .name = "ssusb", 441*20b68457SNikolai Burov .sta_mask = MT6858_PWR_ACK, 442*20b68457SNikolai Burov .sta2nd_mask = MT6858_PWR_ACK_2ND, 443*20b68457SNikolai Burov .ctl_offs = 0xea4, 444*20b68457SNikolai Burov .pwr_sta_offs = 0xea4, 445*20b68457SNikolai Burov .pwr_sta2nd_offs = 0xea4, 446*20b68457SNikolai Burov .sram_pdn_bits = BIT(8), 447*20b68457SNikolai Burov .sram_pdn_ack_bits = BIT(12), 448*20b68457SNikolai Burov .bp_cfg = { 449*20b68457SNikolai Burov BUS_PROT_WR_IGN(INFRA, 450*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_SSUSB, 451*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_SET, 452*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_CLR, 453*20b68457SNikolai Burov MT6858_TOP_AXI_PROT_EN_PERISYS_STA_0_RDY), 454*20b68457SNikolai Burov }, 455*20b68457SNikolai Burov }, 456*20b68457SNikolai Burov }; 457*20b68457SNikolai Burov 458*20b68457SNikolai Burov static const struct scpsys_soc_data mt6858_scpsys_data = { 459*20b68457SNikolai Burov .domains_data = scpsys_domain_data_mt6858, 460*20b68457SNikolai Burov .num_domains = ARRAY_SIZE(scpsys_domain_data_mt6858), 461*20b68457SNikolai Burov .bus_prot_blocks = scpsys_bus_prot_blocks_mt6858, 462*20b68457SNikolai Burov .num_bus_prot_blocks = ARRAY_SIZE(scpsys_bus_prot_blocks_mt6858), 463*20b68457SNikolai Burov .type = SCPSYS_MTCMOS_TYPE_DIRECT_CTL, 464*20b68457SNikolai Burov }; 465*20b68457SNikolai Burov 466*20b68457SNikolai Burov #endif /* __SOC_MEDIATEK_MT6858_PM_DOMAINS_H */ 467