|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
| 2 | + |
| 3 | +#ifndef __SOC_MEDIATEK_MT8365_PM_DOMAINS_H |
| 4 | +#define __SOC_MEDIATEK_MT8365_PM_DOMAINS_H |
| 5 | + |
| 6 | +#include "mtk-pm-domains.h" |
| 7 | +#include <dt-bindings/power/mediatek,mt8365-power.h> |
| 8 | + |
| 9 | +/* |
| 10 | + * MT8365 power domain support |
| 11 | + */ |
| 12 | + |
| 13 | +#define MT8365_BUS_PROT_INFRA_WR_TOPAXI(_mask) \ |
| 14 | + BUS_PROT_WR(INFRA, _mask, \ |
| 15 | + MT8365_INFRA_TOPAXI_PROTECTEN_SET, \ |
| 16 | + MT8365_INFRA_TOPAXI_PROTECTEN_CLR, \ |
| 17 | + MT8365_INFRA_TOPAXI_PROTECTEN_STA1) |
| 18 | + |
| 19 | +#define MT8365_BUS_PROT_INFRA_WR_TOPAXI_1(_mask) \ |
| 20 | + BUS_PROT_WR(INFRA, _mask, \ |
| 21 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_SET, \ |
| 22 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_CLR, \ |
| 23 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_STA1) |
| 24 | + |
| 25 | +#define MT8365_BUS_PROT_SMI_WR_CLAMP_EN_PORT(port) \ |
| 26 | + BUS_PROT_WR(SMI, BIT(port), \ |
| 27 | + MT8365_SMI_COMMON_CLAMP_EN_SET, \ |
| 28 | + MT8365_SMI_COMMON_CLAMP_EN_CLR, \ |
| 29 | + MT8365_SMI_COMMON_CLAMP_EN) |
| 30 | + |
| 31 | +#define MT8365_BUS_PROT_WAY_EN(_set_mask, _set, _sta_mask, _sta) \ |
| 32 | + _BUS_PROT(_set_mask, _set, _set, _sta_mask, _sta, \ |
| 33 | + BUS_PROT_COMPONENT_INFRA | \ |
| 34 | + BUS_PROT_STA_COMPONENT_INFRA_NAO | \ |
| 35 | + BUS_PROT_INVERTED | \ |
| 36 | + BUS_PROT_REG_UPDATE) |
| 37 | + |
| 38 | +static const struct scpsys_domain_data scpsys_domain_data_mt8365[] = { |
| 39 | + [MT8365_POWER_DOMAIN_MM] = { |
| 40 | + .name = "mm", |
| 41 | + .sta_mask = PWR_STATUS_DISP, |
| 42 | + .ctl_offs = 0x30c, |
| 43 | + .pwr_sta_offs = 0x0180, |
| 44 | + .pwr_sta2nd_offs = 0x0184, |
| 45 | + .sram_pdn_bits = GENMASK(8, 8), |
| 46 | + .sram_pdn_ack_bits = GENMASK(12, 12), |
| 47 | + .bp_cfg = { |
| 48 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI_1( |
| 49 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_MM2INFRA_AXI_GALS_MST_0 | |
| 50 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_MM2INFRA_AXI_GALS_MST_1), |
| 51 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI( |
| 52 | + MT8365_INFRA_TOPAXI_PROTECTEN_MM_M0 | |
| 53 | + MT8365_INFRA_TOPAXI_PROTECTEN_MDMCU_M1 | |
| 54 | + MT8365_INFRA_TOPAXI_PROTECTEN_MM2INFRA_AXI_GALS_SLV_0 | |
| 55 | + MT8365_INFRA_TOPAXI_PROTECTEN_MM2INFRA_AXI_GALS_SLV_1), |
| 56 | + MT8365_BUS_PROT_WAY_EN( |
| 57 | + MT8365_INFRA_TOPAXI_SI0_WAY_EN_MMAPB_S, |
| 58 | + MT8365_INFRA_TOPAXI_SI0_CTL, |
| 59 | + MT8365_INFRA_NAO_TOPAXI_SI0_CTRL_UPDATED, |
| 60 | + MT8365_INFRA_NAO_TOPAXI_SI0_STA), |
| 61 | + MT8365_BUS_PROT_WAY_EN( |
| 62 | + MT8365_INFRA_TOPAXI_SI2_WAY_EN_PERI_M1, |
| 63 | + MT8365_INFRA_TOPAXI_SI2_CTL, |
| 64 | + MT8365_INFRA_NAO_TOPAXI_SI2_CTRL_UPDATED, |
| 65 | + MT8365_INFRA_NAO_TOPAXI_SI2_STA), |
| 66 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI( |
| 67 | + MT8365_INFRA_TOPAXI_PROTECTEN_MMAPB_S), |
| 68 | + }, |
| 69 | + .caps = MTK_SCPD_STRICT_BUS_PROTECTION | MTK_SCPD_HAS_INFRA_NAO, |
| 70 | + }, |
| 71 | + [MT8365_POWER_DOMAIN_VENC] = { |
| 72 | + .name = "venc", |
| 73 | + .sta_mask = PWR_STATUS_VENC, |
| 74 | + .ctl_offs = 0x0304, |
| 75 | + .pwr_sta_offs = 0x0180, |
| 76 | + .pwr_sta2nd_offs = 0x0184, |
| 77 | + .sram_pdn_bits = GENMASK(8, 8), |
| 78 | + .sram_pdn_ack_bits = GENMASK(12, 12), |
| 79 | + .bp_cfg = { |
| 80 | + MT8365_BUS_PROT_SMI_WR_CLAMP_EN_PORT(1), |
| 81 | + }, |
| 82 | + }, |
| 83 | + [MT8365_POWER_DOMAIN_AUDIO] = { |
| 84 | + .name = "audio", |
| 85 | + .sta_mask = PWR_STATUS_AUDIO, |
| 86 | + .ctl_offs = 0x0314, |
| 87 | + .pwr_sta_offs = 0x0180, |
| 88 | + .pwr_sta2nd_offs = 0x0184, |
| 89 | + .sram_pdn_bits = GENMASK(12, 8), |
| 90 | + .sram_pdn_ack_bits = GENMASK(17, 13), |
| 91 | + .bp_cfg = { |
| 92 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI_1( |
| 93 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_PWRDNREQ_MP1_L2C_AFIFO | |
| 94 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_AUDIO_BUS_AUDIO_M), |
| 95 | + }, |
| 96 | + .caps = MTK_SCPD_ACTIVE_WAKEUP, |
| 97 | + }, |
| 98 | + [MT8365_POWER_DOMAIN_CONN] = { |
| 99 | + .name = "conn", |
| 100 | + .sta_mask = PWR_STATUS_CONN, |
| 101 | + .ctl_offs = 0x032c, |
| 102 | + .pwr_sta_offs = 0x0180, |
| 103 | + .pwr_sta2nd_offs = 0x0184, |
| 104 | + .sram_pdn_bits = 0, |
| 105 | + .sram_pdn_ack_bits = 0, |
| 106 | + .bp_cfg = { |
| 107 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI( |
| 108 | + MT8365_INFRA_TOPAXI_PROTECTEN_AP2CONN_AHB), |
| 109 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI_1( |
| 110 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_CONN2INFRA_AXI_GALS_MST), |
| 111 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI( |
| 112 | + MT8365_INFRA_TOPAXI_PROTECTEN_CONN2INFRA_AHB), |
| 113 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI_1( |
| 114 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_INFRA2CONN_AHB_GALS_SLV), |
| 115 | + }, |
| 116 | + .caps = MTK_SCPD_ACTIVE_WAKEUP | MTK_SCPD_KEEP_DEFAULT_OFF, |
| 117 | + }, |
| 118 | + [MT8365_POWER_DOMAIN_MFG] = { |
| 119 | + .name = "mfg", |
| 120 | + .sta_mask = PWR_STATUS_MFG, |
| 121 | + .ctl_offs = 0x0338, |
| 122 | + .pwr_sta_offs = 0x0180, |
| 123 | + .pwr_sta2nd_offs = 0x0184, |
| 124 | + .sram_pdn_bits = GENMASK(9, 8), |
| 125 | + .sram_pdn_ack_bits = GENMASK(13, 12), |
| 126 | + .bp_cfg = { |
| 127 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI(BIT(25)), |
| 128 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI( |
| 129 | + MT8365_INFRA_TOPAXI_PROTECTEN_MFG_M0 | |
| 130 | + MT8365_INFRA_TOPAXI_PROTECTEN_INFRA2MFG), |
| 131 | + }, |
| 132 | + }, |
| 133 | + [MT8365_POWER_DOMAIN_CAM] = { |
| 134 | + .name = "cam", |
| 135 | + .sta_mask = BIT(25), |
| 136 | + .ctl_offs = 0x0344, |
| 137 | + .pwr_sta_offs = 0x0180, |
| 138 | + .pwr_sta2nd_offs = 0x0184, |
| 139 | + .sram_pdn_bits = GENMASK(9, 8), |
| 140 | + .sram_pdn_ack_bits = GENMASK(13, 12), |
| 141 | + .bp_cfg = { |
| 142 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI_1( |
| 143 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_CAM2MM_AXI_GALS_MST), |
| 144 | + MT8365_BUS_PROT_SMI_WR_CLAMP_EN_PORT(2), |
| 145 | + }, |
| 146 | + }, |
| 147 | + [MT8365_POWER_DOMAIN_VDEC] = { |
| 148 | + .name = "vdec", |
| 149 | + .sta_mask = BIT(31), |
| 150 | + .ctl_offs = 0x0370, |
| 151 | + .pwr_sta_offs = 0x0180, |
| 152 | + .pwr_sta2nd_offs = 0x0184, |
| 153 | + .sram_pdn_bits = GENMASK(8, 8), |
| 154 | + .sram_pdn_ack_bits = GENMASK(12, 12), |
| 155 | + .bp_cfg = { |
| 156 | + MT8365_BUS_PROT_SMI_WR_CLAMP_EN_PORT(3), |
| 157 | + }, |
| 158 | + }, |
| 159 | + [MT8365_POWER_DOMAIN_APU] = { |
| 160 | + .name = "apu", |
| 161 | + .sta_mask = BIT(16), |
| 162 | + .ctl_offs = 0x0378, |
| 163 | + .pwr_sta_offs = 0x0180, |
| 164 | + .pwr_sta2nd_offs = 0x0184, |
| 165 | + .sram_pdn_bits = GENMASK(14, 8), |
| 166 | + .sram_pdn_ack_bits = GENMASK(21, 15), |
| 167 | + .bp_cfg = { |
| 168 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI_1( |
| 169 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_APU2AP | |
| 170 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_APU_CBIP_GALS_MST), |
| 171 | + MT8365_BUS_PROT_SMI_WR_CLAMP_EN_PORT(4), |
| 172 | + }, |
| 173 | + }, |
| 174 | + [MT8365_POWER_DOMAIN_DSP] = { |
| 175 | + .name = "dsp", |
| 176 | + .sta_mask = BIT(17), |
| 177 | + .ctl_offs = 0x037C, |
| 178 | + .pwr_sta_offs = 0x0180, |
| 179 | + .pwr_sta2nd_offs = 0x0184, |
| 180 | + .sram_pdn_bits = GENMASK(11, 8), |
| 181 | + .sram_pdn_ack_bits = GENMASK(15, 12), |
| 182 | + .bp_cfg = { |
| 183 | + MT8365_BUS_PROT_INFRA_WR_TOPAXI_1( |
| 184 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_PWRDNREQ_INFRA_GALS_ADB | |
| 185 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_AUDIO_BUS_DSP_M | |
| 186 | + MT8365_INFRA_TOPAXI_PROTECTEN_1_AUDIO_BUS_DSP_S), |
| 187 | + }, |
| 188 | + .caps = MTK_SCPD_ACTIVE_WAKEUP, |
| 189 | + }, |
| 190 | +}; |
| 191 | + |
| 192 | +static const struct scpsys_soc_data mt8365_scpsys_data = { |
| 193 | + .domains_data = scpsys_domain_data_mt8365, |
| 194 | + .num_domains = ARRAY_SIZE(scpsys_domain_data_mt8365), |
| 195 | +}; |
| 196 | + |
| 197 | +#endif /* __SOC_MEDIATEK_MT8365_PM_DOMAINS_H */ |
0 commit comments