1 /* 2 * Copyright (c) 2025, MediaTek Inc. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <common/debug.h> 8 #include <lib/mmio.h> 9 #include <mtk_dcm_utils.h> 10 #include <mtk_mmap_pool.h> 11 12 static const mmap_region_t dcm_mmap[] = { 13 MAP_REGION_FLAT(MCUSYS_PAR_WRAP_BASE, MCUSYS_PAR_WRAP_SIZE, 14 MT_DEVICE | MT_RW | MT_SECURE), 15 MAP_REGION_FLAT(APINFRA_IO_CTRL_AO, APINFRA_IO_CTRL_AO_SIZE, 16 MT_DEVICE | MT_RW | MT_SECURE), 17 MAP_REGION_FLAT(APINFRA_IO_NOC_AO, APINFRA_IO_NOC_AO_SIZE, 18 MT_DEVICE | MT_RW | MT_SECURE), 19 MAP_REGION_FLAT(APINFRA_MEM_INTF_NOC_AO, APINFRA_MEM_INTF_NOC_AO_SIZE, 20 MT_DEVICE | MT_RW | MT_SECURE), 21 MAP_REGION_FLAT(APINFRA_MEM_CTRL_AO, APINFRA_MEM_CTRL_AO_SIZE, 22 MT_DEVICE | MT_RW | MT_SECURE), 23 MAP_REGION_FLAT(PERI_AO_BCRM_BASE, PERI_AO_BCRM_BASE_SIZE, 24 MT_DEVICE | MT_RW | MT_SECURE), 25 MAP_REGION_FLAT(VLP_AO_BCRM_BASE, VLP_AO_BCRM_BASE_SIZE, 26 MT_DEVICE | MT_RW | MT_SECURE), 27 { 0 } 28 }; 29 DECLARE_MTK_MMAP_REGIONS(dcm_mmap); 30 31 static bool dcm_check_state(uintptr_t addr, unsigned int mask, unsigned int state) 32 { 33 return ((mmio_read_32(addr) & mask) == state); 34 } 35 36 bool dcm_mcusys_par_wrap_mcu_l3c_dcm_is_on(void) 37 { 38 return dcm_check_state(MCUSYS_PAR_WRAP_L3_SHARE_DCM_CTRL, 39 MCUSYS_PAR_WRAP_MCU_L3C_DCM_REG0_MASK, 40 MCUSYS_PAR_WRAP_MCU_L3C_DCM_REG0_ON); 41 } 42 43 void dcm_mcusys_par_wrap_mcu_l3c_dcm(bool on) 44 { 45 if (on) 46 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_L3_SHARE_DCM_CTRL, 47 MCUSYS_PAR_WRAP_MCU_L3C_DCM_REG0_MASK, 48 MCUSYS_PAR_WRAP_MCU_L3C_DCM_REG0_ON); 49 else 50 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_L3_SHARE_DCM_CTRL, 51 MCUSYS_PAR_WRAP_MCU_L3C_DCM_REG0_MASK, 52 MCUSYS_PAR_WRAP_MCU_L3C_DCM_REG0_OFF); 53 } 54 55 bool dcm_mcusys_par_wrap_mcu_acp_dcm_is_on(void) 56 { 57 return dcm_check_state(MCUSYS_PAR_WRAP_MP_ADB_DCM_CFG0, 58 MCUSYS_PAR_WRAP_MCU_ACP_DCM_REG0_MASK, 59 MCUSYS_PAR_WRAP_MCU_ACP_DCM_REG0_ON); 60 61 } 62 63 void dcm_mcusys_par_wrap_mcu_acp_dcm(bool on) 64 { 65 if (on) 66 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_MP_ADB_DCM_CFG0, 67 MCUSYS_PAR_WRAP_MCU_ACP_DCM_REG0_MASK, 68 MCUSYS_PAR_WRAP_MCU_ACP_DCM_REG0_ON); 69 else 70 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_MP_ADB_DCM_CFG0, 71 MCUSYS_PAR_WRAP_MCU_ACP_DCM_REG0_MASK, 72 MCUSYS_PAR_WRAP_MCU_ACP_DCM_REG0_OFF); 73 } 74 75 bool dcm_mcusys_par_wrap_mcu_adb_dcm_is_on(void) 76 { 77 return dcm_check_state(MCUSYS_PAR_WRAP_ADB_FIFO_DCM_EN, 78 MCUSYS_PAR_WRAP_MCU_ADB_DCM_REG0_MASK, 79 MCUSYS_PAR_WRAP_MCU_ADB_DCM_REG0_ON); 80 } 81 82 void dcm_mcusys_par_wrap_mcu_adb_dcm(bool on) 83 { 84 if (on) 85 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_ADB_FIFO_DCM_EN, 86 MCUSYS_PAR_WRAP_MCU_ADB_DCM_REG0_MASK, 87 MCUSYS_PAR_WRAP_MCU_ADB_DCM_REG0_ON); 88 else 89 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_ADB_FIFO_DCM_EN, 90 MCUSYS_PAR_WRAP_MCU_ADB_DCM_REG0_MASK, 91 MCUSYS_PAR_WRAP_MCU_ADB_DCM_REG0_OFF); 92 } 93 94 bool dcm_mcusys_par_wrap_mcu_stalldcm_is_on(void) 95 { 96 return dcm_check_state(MCUSYS_PAR_WRAP_MP0_DCM_CFG0, 97 MCUSYS_PAR_WRAP_MCU_STALLDCM_REG0_MASK, 98 MCUSYS_PAR_WRAP_MCU_STALLDCM_REG0_ON); 99 100 } 101 102 void dcm_mcusys_par_wrap_mcu_stalldcm(bool on) 103 { 104 if (on) 105 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_MP0_DCM_CFG0, 106 MCUSYS_PAR_WRAP_MCU_STALLDCM_REG0_MASK, 107 MCUSYS_PAR_WRAP_MCU_STALLDCM_REG0_ON); 108 else 109 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_MP0_DCM_CFG0, 110 MCUSYS_PAR_WRAP_MCU_STALLDCM_REG0_MASK, 111 MCUSYS_PAR_WRAP_MCU_STALLDCM_REG0_OFF); 112 } 113 114 bool dcm_mcusys_par_wrap_mcu_apb_dcm_is_on(void) 115 { 116 return dcm_check_state(MCUSYS_PAR_WRAP_MP0_DCM_CFG0, 117 MCUSYS_PAR_WRAP_MCU_APB_DCM_REG0_MASK, 118 MCUSYS_PAR_WRAP_MCU_APB_DCM_REG0_ON); 119 } 120 121 void dcm_mcusys_par_wrap_mcu_apb_dcm(bool on) 122 { 123 if (on) 124 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_MP0_DCM_CFG0, 125 MCUSYS_PAR_WRAP_MCU_APB_DCM_REG0_MASK, 126 MCUSYS_PAR_WRAP_MCU_APB_DCM_REG0_ON); 127 else 128 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_MP0_DCM_CFG0, 129 MCUSYS_PAR_WRAP_MCU_APB_DCM_REG0_MASK, 130 MCUSYS_PAR_WRAP_MCU_APB_DCM_REG0_OFF); 131 } 132 133 bool dcm_mcusys_par_wrap_mcu_io_dcm_is_on(void) 134 { 135 bool ret = true; 136 137 ret &= dcm_check_state(MCUSYS_PAR_WRAP_QDCM_CONFIG0, 138 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG0_MASK, 139 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG0_ON); 140 ret &= dcm_check_state(MCUSYS_PAR_WRAP_L3GIC_ARCH_CG_CONFIG, 141 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG1_MASK, 142 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG1_ON); 143 144 return ret; 145 } 146 147 void dcm_mcusys_par_wrap_mcu_io_dcm(bool on) 148 { 149 if (on) { 150 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG0, 151 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG0_MASK, 152 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG0_ON); 153 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_L3GIC_ARCH_CG_CONFIG, 154 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG1_MASK, 155 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG1_ON); 156 } else { 157 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG0, 158 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG0_MASK, 159 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG0_OFF); 160 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_L3GIC_ARCH_CG_CONFIG, 161 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG1_MASK, 162 MCUSYS_PAR_WRAP_MCU_IO_DCM_REG1_OFF); 163 } 164 } 165 166 bool dcm_mcusys_par_wrap_mcu_bus_qdcm_is_on(void) 167 { 168 bool ret = true; 169 170 ret &= dcm_check_state(MCUSYS_PAR_WRAP_QDCM_CONFIG0, 171 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG0_MASK, 172 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG0_ON); 173 ret &= dcm_check_state(MCUSYS_PAR_WRAP_QDCM_CONFIG1, 174 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG1_MASK, 175 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG1_ON); 176 177 return ret; 178 } 179 180 void dcm_mcusys_par_wrap_mcu_bus_qdcm(bool on) 181 { 182 if (on) { 183 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG0, 184 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG0_MASK, 185 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG0_ON); 186 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG1, 187 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG1_MASK, 188 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG1_ON); 189 } else { 190 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG0, 191 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG0_MASK, 192 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG0_OFF); 193 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG1, 194 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG1_MASK, 195 MCUSYS_PAR_WRAP_MCU_BUS_QDCM_REG1_OFF); 196 } 197 } 198 199 bool dcm_mcusys_par_wrap_mcu_core_qdcm_is_on(void) 200 { 201 bool ret = true; 202 203 ret &= dcm_check_state(MCUSYS_PAR_WRAP_QDCM_CONFIG2, 204 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG0_MASK, 205 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG0_ON); 206 ret &= dcm_check_state(MCUSYS_PAR_WRAP_QDCM_CONFIG3, 207 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG1_MASK, 208 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG1_ON); 209 210 return ret; 211 } 212 213 void dcm_mcusys_par_wrap_mcu_core_qdcm(bool on) 214 { 215 if (on) { 216 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG2, 217 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG0_MASK, 218 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG0_ON); 219 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG3, 220 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG1_MASK, 221 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG1_ON); 222 } else { 223 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG2, 224 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG0_MASK, 225 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG0_OFF); 226 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_QDCM_CONFIG3, 227 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG1_MASK, 228 MCUSYS_PAR_WRAP_MCU_CORE_QDCM_REG1_OFF); 229 } 230 } 231 232 bool dcm_mcusys_par_wrap_mcu_bkr_ldcm1_is_on(void) 233 { 234 return dcm_check_state(MCUSYS_PAR_WRAP_CI700_DCM_CTRL, 235 MCUSYS_PAR_WRAP_MCU_BKR_LDCM1_REG0_MASK, 236 MCUSYS_PAR_WRAP_MCU_BKR_LDCM1_REG0_ON); 237 238 } 239 240 void dcm_mcusys_par_wrap_mcu_bkr_ldcm1(bool on) 241 { 242 if (on) 243 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CI700_DCM_CTRL, 244 MCUSYS_PAR_WRAP_MCU_BKR_LDCM1_REG0_MASK, 245 MCUSYS_PAR_WRAP_MCU_BKR_LDCM1_REG0_ON); 246 else 247 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CI700_DCM_CTRL, 248 MCUSYS_PAR_WRAP_MCU_BKR_LDCM1_REG0_MASK, 249 MCUSYS_PAR_WRAP_MCU_BKR_LDCM1_REG0_OFF); 250 } 251 252 bool dcm_mcusys_par_wrap_mcu_bkr_ldcm2_is_on(void) 253 { 254 return dcm_check_state(MCUSYS_PAR_WRAP_CI700_DCM_CTRL, 255 MCUSYS_PAR_WRAP_MCU_BKR_LDCM2_REG0_MASK, 256 MCUSYS_PAR_WRAP_MCU_BKR_LDCM2_REG0_ON); 257 258 } 259 260 void dcm_mcusys_par_wrap_mcu_bkr_ldcm2(bool on) 261 { 262 if (on) 263 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CI700_DCM_CTRL, 264 MCUSYS_PAR_WRAP_MCU_BKR_LDCM2_REG0_MASK, 265 MCUSYS_PAR_WRAP_MCU_BKR_LDCM2_REG0_ON); 266 else 267 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CI700_DCM_CTRL, 268 MCUSYS_PAR_WRAP_MCU_BKR_LDCM2_REG0_MASK, 269 MCUSYS_PAR_WRAP_MCU_BKR_LDCM2_REG0_OFF); 270 } 271 272 bool dcm_mcusys_par_wrap_mcu_cbip_dcm_is_on(void) 273 { 274 bool ret = true; 275 276 ret &= dcm_check_state(MCUSYS_PAR_WRAP_CBIP_CABGEN_3TO1_CONFIG, 277 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG0_MASK, 278 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG0_ON); 279 ret &= dcm_check_state(MCUSYS_PAR_WRAP_CBIP_CABGEN_2TO1_CONFIG, 280 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG1_MASK, 281 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG1_ON); 282 ret &= dcm_check_state(MCUSYS_PAR_WRAP_CBIP_CABGEN_4TO2_CONFIG, 283 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG2_MASK, 284 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG2_ON); 285 ret &= dcm_check_state(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_CONFIG, 286 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG3_MASK, 287 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG3_ON); 288 ret &= dcm_check_state(MCUSYS_PAR_WRAP_CBIP_CABGEN_2TO5_CONFIG, 289 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG4_MASK, 290 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG4_ON); 291 ret &= dcm_check_state(MCUSYS_PAR_WRAP_CBIP_P2P_CONFIG0, 292 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG5_MASK, 293 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG5_ON); 294 ret &= dcm_check_state(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_L3GIC_CONFIG, 295 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG6_MASK, 296 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG6_ON); 297 ret &= dcm_check_state(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_INFRA_CONFIG, 298 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG7_MASK, 299 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG7_ON); 300 301 return ret; 302 } 303 304 void dcm_mcusys_par_wrap_mcu_cbip_dcm(bool on) 305 { 306 if (on) { 307 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_3TO1_CONFIG, 308 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG0_MASK, 309 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG0_ON); 310 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_2TO1_CONFIG, 311 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG1_MASK, 312 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG1_ON); 313 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_4TO2_CONFIG, 314 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG2_MASK, 315 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG2_ON); 316 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_CONFIG, 317 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG3_MASK, 318 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG3_ON); 319 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_2TO5_CONFIG, 320 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG4_MASK, 321 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG4_ON); 322 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_P2P_CONFIG0, 323 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG5_MASK, 324 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG5_ON); 325 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_L3GIC_CONFIG, 326 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG6_MASK, 327 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG6_ON); 328 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_INFRA_CONFIG, 329 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG7_MASK, 330 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG7_ON); 331 } else { 332 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_3TO1_CONFIG, 333 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG0_MASK, 334 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG0_OFF); 335 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_2TO1_CONFIG, 336 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG1_MASK, 337 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG1_OFF); 338 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_4TO2_CONFIG, 339 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG2_MASK, 340 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG2_OFF); 341 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_CONFIG, 342 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG3_MASK, 343 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG3_OFF); 344 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_2TO5_CONFIG, 345 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG4_MASK, 346 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG4_OFF); 347 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_P2P_CONFIG0, 348 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG5_MASK, 349 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG5_OFF); 350 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_L3GIC_CONFIG, 351 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG6_MASK, 352 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG6_OFF); 353 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_CBIP_CABGEN_1TO2_INFRA_CONFIG, 354 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG7_MASK, 355 MCUSYS_PAR_WRAP_MCU_CBIP_DCM_REG7_OFF); 356 } 357 } 358 359 bool dcm_mcusys_par_wrap_mcu_misc_dcm_is_on(void) 360 { 361 return dcm_check_state(MCUSYS_PAR_WRAP_MP_CENTRAL_FABRIC_SUB_CHANNEL_CG, 362 MCUSYS_PAR_WRAP_MCU_MISC_DCM_REG0_MASK, 363 MCUSYS_PAR_WRAP_MCU_MISC_DCM_REG0_ON); 364 } 365 366 void dcm_mcusys_par_wrap_mcu_misc_dcm(bool on) 367 { 368 if (on) 369 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_MP_CENTRAL_FABRIC_SUB_CHANNEL_CG, 370 MCUSYS_PAR_WRAP_MCU_MISC_DCM_REG0_MASK, 371 MCUSYS_PAR_WRAP_MCU_MISC_DCM_REG0_ON); 372 else 373 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_MP_CENTRAL_FABRIC_SUB_CHANNEL_CG, 374 MCUSYS_PAR_WRAP_MCU_MISC_DCM_REG0_MASK, 375 MCUSYS_PAR_WRAP_MCU_MISC_DCM_REG0_OFF); 376 } 377 378 bool dcm_mcusys_par_wrap_mcu_dsu_acp_dcm_is_on(void) 379 { 380 return dcm_check_state(MCUSYS_PAR_WRAP_ACP_SLAVE_DCM_EN, 381 MCUSYS_PAR_WRAP_MCU_DSU_ACP_DCM_REG0_MASK, 382 MCUSYS_PAR_WRAP_MCU_DSU_ACP_DCM_REG0_ON); 383 } 384 385 void dcm_mcusys_par_wrap_mcu_dsu_acp_dcm(bool on) 386 { 387 if (on) 388 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_ACP_SLAVE_DCM_EN, 389 MCUSYS_PAR_WRAP_MCU_DSU_ACP_DCM_REG0_MASK, 390 MCUSYS_PAR_WRAP_MCU_DSU_ACP_DCM_REG0_ON); 391 else 392 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_ACP_SLAVE_DCM_EN, 393 MCUSYS_PAR_WRAP_MCU_DSU_ACP_DCM_REG0_MASK, 394 MCUSYS_PAR_WRAP_MCU_DSU_ACP_DCM_REG0_OFF); 395 } 396 397 bool dcm_mcusys_par_wrap_mcu_chi_mon_dcm_is_on(void) 398 { 399 return dcm_check_state(MCUSYS_PAR_WRAP_ACP_SLAVE_DCM_EN, 400 MCUSYS_PAR_WRAP_MCU_CHI_MON_DCM_REG0_MASK, 401 MCUSYS_PAR_WRAP_MCU_CHI_MON_DCM_REG0_ON); 402 } 403 404 void dcm_mcusys_par_wrap_mcu_chi_mon_dcm(bool on) 405 { 406 if (on) 407 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_ACP_SLAVE_DCM_EN, 408 MCUSYS_PAR_WRAP_MCU_CHI_MON_DCM_REG0_MASK, 409 MCUSYS_PAR_WRAP_MCU_CHI_MON_DCM_REG0_ON); 410 else 411 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_ACP_SLAVE_DCM_EN, 412 MCUSYS_PAR_WRAP_MCU_CHI_MON_DCM_REG0_MASK, 413 MCUSYS_PAR_WRAP_MCU_CHI_MON_DCM_REG0_OFF); 414 } 415 416 bool dcm_mcusys_par_wrap_mcu_gic_spi_dcm_is_on(void) 417 { 418 return dcm_check_state(MCUSYS_PAR_WRAP_GIC_SPI_SLOW_CK_CFG, 419 MCUSYS_PAR_WRAP_MCU_GIC_SPI_DCM_REG0_MASK, 420 MCUSYS_PAR_WRAP_MCU_GIC_SPI_DCM_REG0_ON); 421 } 422 423 void dcm_mcusys_par_wrap_mcu_gic_spi_dcm(bool on) 424 { 425 if (on) 426 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_GIC_SPI_SLOW_CK_CFG, 427 MCUSYS_PAR_WRAP_MCU_GIC_SPI_DCM_REG0_MASK, 428 MCUSYS_PAR_WRAP_MCU_GIC_SPI_DCM_REG0_ON); 429 else 430 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_GIC_SPI_SLOW_CK_CFG, 431 MCUSYS_PAR_WRAP_MCU_GIC_SPI_DCM_REG0_MASK, 432 MCUSYS_PAR_WRAP_MCU_GIC_SPI_DCM_REG0_OFF); 433 } 434 435 bool dcm_mcusys_par_wrap_mcu_ebg_dcm_is_on(void) 436 { 437 return dcm_check_state(MCUSYS_PAR_WRAP_EBG_CKE_WRAP_FIFO_CFG, 438 MCUSYS_PAR_WRAP_MCU_EBG_DCM_REG0_MASK, 439 MCUSYS_PAR_WRAP_MCU_EBG_DCM_REG0_ON); 440 } 441 442 void dcm_mcusys_par_wrap_mcu_ebg_dcm(bool on) 443 { 444 if (on) 445 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_EBG_CKE_WRAP_FIFO_CFG, 446 MCUSYS_PAR_WRAP_MCU_EBG_DCM_REG0_MASK, 447 MCUSYS_PAR_WRAP_MCU_EBG_DCM_REG0_ON); 448 else 449 mmio_clrsetbits_32(MCUSYS_PAR_WRAP_EBG_CKE_WRAP_FIFO_CFG, 450 MCUSYS_PAR_WRAP_MCU_EBG_DCM_REG0_MASK, 451 MCUSYS_PAR_WRAP_MCU_EBG_DCM_REG0_OFF); 452 } 453 454 bool dcm_bcrm_apinfra_io_ctrl_ao_infra_bus_dcm_is_on(void) 455 { 456 return dcm_check_state(CLK_AXI_VDNR_DCM_TOP_APINFRA_IO_INTX_BUS_CTRL_0, 457 APINFRA_IO_CTRL_AO_INFRA_BUS_DCM_REG0_MASK, 458 APINFRA_IO_CTRL_AO_INFRA_BUS_DCM_REG0_ON); 459 } 460 461 void dcm_bcrm_apinfra_io_ctrl_ao_infra_bus_dcm(bool on) 462 { 463 if (on) 464 mmio_clrsetbits_32(CLK_AXI_VDNR_DCM_TOP_APINFRA_IO_INTX_BUS_CTRL_0, 465 APINFRA_IO_CTRL_AO_INFRA_BUS_DCM_REG0_MASK, 466 APINFRA_IO_CTRL_AO_INFRA_BUS_DCM_REG0_ON); 467 else 468 mmio_clrsetbits_32(CLK_AXI_VDNR_DCM_TOP_APINFRA_IO_INTX_BUS_CTRL_0, 469 APINFRA_IO_CTRL_AO_INFRA_BUS_DCM_REG0_MASK, 470 APINFRA_IO_CTRL_AO_INFRA_BUS_DCM_REG0_OFF); 471 } 472 473 bool dcm_bcrm_apinfra_io_noc_ao_infra_bus_dcm_is_on(void) 474 { 475 return dcm_check_state(CLK_IO_NOC_VDNR_DCM_TOP_APINFRA_IO_INTF_PAR_BUS_CTRL_0, 476 APINFRA_IO_NOC_AO_INFRA_BUS_DCM_REG0_MASK, 477 APINFRA_IO_NOC_AO_INFRA_BUS_DCM_REG0_ON); 478 } 479 480 void dcm_bcrm_apinfra_io_noc_ao_infra_bus_dcm(bool on) 481 { 482 if (on) 483 mmio_clrsetbits_32(CLK_IO_NOC_VDNR_DCM_TOP_APINFRA_IO_INTF_PAR_BUS_CTRL_0, 484 APINFRA_IO_NOC_AO_INFRA_BUS_DCM_REG0_MASK, 485 APINFRA_IO_NOC_AO_INFRA_BUS_DCM_REG0_ON); 486 else 487 mmio_clrsetbits_32(CLK_IO_NOC_VDNR_DCM_TOP_APINFRA_IO_INTF_PAR_BUS_CTRL_0, 488 APINFRA_IO_NOC_AO_INFRA_BUS_DCM_REG0_MASK, 489 APINFRA_IO_NOC_AO_INFRA_BUS_DCM_REG0_OFF); 490 } 491 492 bool dcm_bcrm_apinfra_mem_intf_noc_ao_infra_bus_dcm_is_on(void) 493 { 494 return dcm_check_state(VDNR_DCM_TOP_APINFRA_MEM_INTF_PAR_BUS_CTRL_0, 495 APINFRA_MEM_INTF_NOC_AO_INFRA_BUS_DCM_REG0_MASK, 496 APINFRA_MEM_INTF_NOC_AO_INFRA_BUS_DCM_REG0_ON); 497 } 498 499 void dcm_bcrm_apinfra_mem_intf_noc_ao_infra_bus_dcm(bool on) 500 { 501 if (on) 502 mmio_clrsetbits_32(VDNR_DCM_TOP_APINFRA_MEM_INTF_PAR_BUS_CTRL_0, 503 APINFRA_MEM_INTF_NOC_AO_INFRA_BUS_DCM_REG0_MASK, 504 APINFRA_MEM_INTF_NOC_AO_INFRA_BUS_DCM_REG0_ON); 505 else 506 mmio_clrsetbits_32(VDNR_DCM_TOP_APINFRA_MEM_INTF_PAR_BUS_CTRL_0, 507 APINFRA_MEM_INTF_NOC_AO_INFRA_BUS_DCM_REG0_MASK, 508 APINFRA_MEM_INTF_NOC_AO_INFRA_BUS_DCM_REG0_OFF); 509 } 510 511 bool dcm_bcrm_apinfra_mem_ctrl_ao_infra_bus_dcm_is_on(void) 512 { 513 bool ret = true; 514 515 ret &= dcm_check_state(CLK_FMEM_SUB_CFG_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_0, 516 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG0_MASK, 517 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG0_ON); 518 ret &= dcm_check_state(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_0, 519 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG1_MASK, 520 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG1_ON); 521 ret &= dcm_check_state(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_1, 522 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG2_MASK, 523 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG2_ON); 524 ret &= dcm_check_state(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_2, 525 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG3_MASK, 526 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG3_ON); 527 ret &= dcm_check_state(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_3, 528 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG4_MASK, 529 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG4_ON); 530 ret &= dcm_check_state(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_4, 531 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG5_MASK, 532 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG5_ON); 533 ret &= dcm_check_state(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_5, 534 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG6_MASK, 535 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG6_ON); 536 537 return ret; 538 } 539 540 void dcm_bcrm_apinfra_mem_ctrl_ao_infra_bus_dcm(bool on) 541 { 542 if (on) { 543 mmio_clrsetbits_32(CLK_FMEM_SUB_CFG_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_0, 544 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG0_MASK, 545 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG0_ON); 546 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_0, 547 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG1_MASK, 548 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG1_ON); 549 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_1, 550 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG2_MASK, 551 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG2_ON); 552 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_2, 553 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG3_MASK, 554 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG3_ON); 555 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_3, 556 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG4_MASK, 557 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG4_ON); 558 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_4, 559 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG5_MASK, 560 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG5_ON); 561 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_5, 562 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG6_MASK, 563 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG6_ON); 564 } else { 565 mmio_clrsetbits_32(CLK_FMEM_SUB_CFG_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_0, 566 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG0_MASK, 567 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG0_OFF); 568 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_0, 569 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG1_MASK, 570 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG1_OFF); 571 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_1, 572 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG2_MASK, 573 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG2_OFF); 574 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_2, 575 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG3_MASK, 576 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG3_OFF); 577 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_3, 578 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG4_MASK, 579 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG4_OFF); 580 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_4, 581 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG5_MASK, 582 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG5_OFF); 583 mmio_clrsetbits_32(CLK_FMEM_SUB_VDNR_DCM_TOP_APINFRA_MEM_INTX_BUS_CTRL_5, 584 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG6_MASK, 585 APINFRA_MEM_CTRL_AO_INFRA_BUS_DCM_REG6_OFF); 586 } 587 } 588 589 bool dcm_peri_ao_bcrm_peri_bus1_dcm_is_on(void) 590 { 591 bool ret = true; 592 593 ret &= dcm_check_state(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_0, 594 PERI_AO_BCRM_PERI_BUS_DCM_REG0_MASK, 595 PERI_AO_BCRM_PERI_BUS_DCM_REG0_ON); 596 ret &= dcm_check_state(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_1, 597 PERI_AO_BCRM_PERI_BUS_DCM_REG1_MASK, 598 PERI_AO_BCRM_PERI_BUS_DCM_REG1_ON); 599 ret &= dcm_check_state(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_2, 600 PERI_AO_BCRM_PERI_BUS_DCM_REG2_MASK, 601 PERI_AO_BCRM_PERI_BUS_DCM_REG2_ON); 602 ret &= dcm_check_state(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_3, 603 PERI_AO_BCRM_PERI_BUS_DCM_REG3_MASK, 604 PERI_AO_BCRM_PERI_BUS_DCM_REG3_ON); 605 606 return ret; 607 } 608 609 void dcm_peri_ao_bcrm_peri_bus1_dcm(bool on) 610 { 611 if (on) { 612 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_0, 613 PERI_AO_BCRM_PERI_BUS_DCM_REG0_MASK, 614 PERI_AO_BCRM_PERI_BUS_DCM_REG0_ON); 615 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_1, 616 PERI_AO_BCRM_PERI_BUS_DCM_REG1_MASK, 617 PERI_AO_BCRM_PERI_BUS_DCM_REG1_ON); 618 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_2, 619 PERI_AO_BCRM_PERI_BUS_DCM_REG2_MASK, 620 PERI_AO_BCRM_PERI_BUS_DCM_REG2_ON); 621 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_3, 622 PERI_AO_BCRM_PERI_BUS_DCM_REG3_MASK, 623 PERI_AO_BCRM_PERI_BUS_DCM_REG3_ON); 624 } else { 625 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_0, 626 PERI_AO_BCRM_PERI_BUS_DCM_REG0_MASK, 627 PERI_AO_BCRM_PERI_BUS_DCM_REG0_OFF); 628 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_1, 629 PERI_AO_BCRM_PERI_BUS_DCM_REG1_MASK, 630 PERI_AO_BCRM_PERI_BUS_DCM_REG1_OFF); 631 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_2, 632 PERI_AO_BCRM_PERI_BUS_DCM_REG2_MASK, 633 PERI_AO_BCRM_PERI_BUS_DCM_REG2_OFF); 634 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL1_3, 635 PERI_AO_BCRM_PERI_BUS_DCM_REG3_MASK, 636 PERI_AO_BCRM_PERI_BUS_DCM_REG3_OFF); 637 } 638 } 639 640 bool dcm_peri_ao_bcrm_peri_bus2_dcm_is_on(void) 641 { 642 bool ret = true; 643 644 ret &= dcm_check_state(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_0, 645 PERI_AO_BCRM_PERI_BUS_DCM_REG0_MASK, 646 PERI_AO_BCRM_PERI_BUS_DCM_REG0_ON); 647 ret &= dcm_check_state(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_1, 648 PERI_AO_BCRM_PERI_BUS_DCM_REG1_MASK, 649 PERI_AO_BCRM_PERI_BUS_DCM_REG1_ON); 650 ret &= dcm_check_state(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_2, 651 PERI_AO_BCRM_PERI_BUS_DCM_REG2_MASK, 652 PERI_AO_BCRM_PERI_BUS_DCM_REG2_ON); 653 ret &= dcm_check_state(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_3, 654 PERI_AO_BCRM_PERI_BUS_DCM_REG3_MASK, 655 PERI_AO_BCRM_PERI_BUS_DCM_REG3_ON); 656 657 return ret; 658 } 659 660 void dcm_peri_ao_bcrm_peri_bus2_dcm(bool on) 661 { 662 if (on) { 663 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_0, 664 PERI_AO_BCRM_PERI_BUS_DCM_REG0_MASK, 665 PERI_AO_BCRM_PERI_BUS_DCM_REG0_ON); 666 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_1, 667 PERI_AO_BCRM_PERI_BUS_DCM_REG1_MASK, 668 PERI_AO_BCRM_PERI_BUS_DCM_REG1_ON); 669 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_2, 670 PERI_AO_BCRM_PERI_BUS_DCM_REG2_MASK, 671 PERI_AO_BCRM_PERI_BUS_DCM_REG2_ON); 672 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_3, 673 PERI_AO_BCRM_PERI_BUS_DCM_REG3_MASK, 674 PERI_AO_BCRM_PERI_BUS_DCM_REG3_ON); 675 } else { 676 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_0, 677 PERI_AO_BCRM_PERI_BUS_DCM_REG0_MASK, 678 PERI_AO_BCRM_PERI_BUS_DCM_REG0_OFF); 679 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_1, 680 PERI_AO_BCRM_PERI_BUS_DCM_REG1_MASK, 681 PERI_AO_BCRM_PERI_BUS_DCM_REG1_OFF); 682 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_2, 683 PERI_AO_BCRM_PERI_BUS_DCM_REG2_MASK, 684 PERI_AO_BCRM_PERI_BUS_DCM_REG2_OFF); 685 mmio_clrsetbits_32(VDNR_DCM_TOP_PERI_PAR_BUS_CTRL2_3, 686 PERI_AO_BCRM_PERI_BUS_DCM_REG3_MASK, 687 PERI_AO_BCRM_PERI_BUS_DCM_REG3_OFF); 688 } 689 } 690 691 bool dcm_vlp_ao_bcrm_vlp_bus_dcm_is_on(void) 692 { 693 return dcm_check_state(VDNR_DCM_TOP_VLP_PAR_BUS_TOP_CTRL_0, 694 VLP_AO_BCRM_VLP_BUS_DCM_REG0_MASK, 695 VLP_AO_BCRM_VLP_BUS_DCM_REG0_ON); 696 } 697 698 void dcm_vlp_ao_bcrm_vlp_bus_dcm(bool on) 699 { 700 if (on) 701 mmio_clrsetbits_32(VDNR_DCM_TOP_VLP_PAR_BUS_TOP_CTRL_0, 702 VLP_AO_BCRM_VLP_BUS_DCM_REG0_MASK, 703 VLP_AO_BCRM_VLP_BUS_DCM_REG0_ON); 704 else 705 mmio_clrsetbits_32(VDNR_DCM_TOP_VLP_PAR_BUS_TOP_CTRL_0, 706 VLP_AO_BCRM_VLP_BUS_DCM_REG0_MASK, 707 VLP_AO_BCRM_VLP_BUS_DCM_REG0_OFF); 708 } 709