1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2021, MediaTek Inc. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef MCUCFG_H 8*91f16700Schasinglulu #define MCUCFG_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #ifndef __ASSEMBLER__ 11*91f16700Schasinglulu #include <stdint.h> 12*91f16700Schasinglulu #endif /* __ASSEMBLER__ */ 13*91f16700Schasinglulu 14*91f16700Schasinglulu #include <platform_def.h> 15*91f16700Schasinglulu 16*91f16700Schasinglulu #define MCUCFG_REG(ofs) (uint32_t)(MCUCFG_BASE + (ofs)) 17*91f16700Schasinglulu 18*91f16700Schasinglulu #define MP2_MISC_CONFIG_BOOT_ADDR_L(cpu) (MCUCFG_REG(0x2290) + ((cpu) * 8)) 19*91f16700Schasinglulu #define MP2_MISC_CONFIG_BOOT_ADDR_H(cpu) (MCUCFG_REG(0x2294) + ((cpu) * 8)) 20*91f16700Schasinglulu 21*91f16700Schasinglulu #define MP2_CPUCFG MCUCFG_REG(0x2208) 22*91f16700Schasinglulu 23*91f16700Schasinglulu #define MP2_CPU0_STANDBYWFE BIT(4) 24*91f16700Schasinglulu #define MP2_CPU1_STANDBYWFE BIT(5) 25*91f16700Schasinglulu 26*91f16700Schasinglulu #define MP0_CPUTOP_SPMC_CTL MCUCFG_REG(0x788) 27*91f16700Schasinglulu #define MP1_CPUTOP_SPMC_CTL MCUCFG_REG(0x78C) 28*91f16700Schasinglulu #define MP1_CPUTOP_SPMC_SRAM_CTL MCUCFG_REG(0x790) 29*91f16700Schasinglulu 30*91f16700Schasinglulu #define sw_spark_en BIT(0) 31*91f16700Schasinglulu #define sw_no_wait_for_q_channel BIT(1) 32*91f16700Schasinglulu #define sw_fsm_override BIT(2) 33*91f16700Schasinglulu #define sw_logic_pre1_pdb BIT(3) 34*91f16700Schasinglulu #define sw_logic_pre2_pdb BIT(4) 35*91f16700Schasinglulu #define sw_logic_pdb BIT(5) 36*91f16700Schasinglulu #define sw_iso BIT(6) 37*91f16700Schasinglulu #define sw_sram_sleepb (U(0x3F) << 7) 38*91f16700Schasinglulu #define sw_sram_isointb BIT(13) 39*91f16700Schasinglulu #define sw_clk_dis BIT(14) 40*91f16700Schasinglulu #define sw_ckiso BIT(15) 41*91f16700Schasinglulu #define sw_pd (U(0x3F) << 16) 42*91f16700Schasinglulu #define sw_hot_plug_reset BIT(22) 43*91f16700Schasinglulu #define sw_pwr_on_override_en BIT(23) 44*91f16700Schasinglulu #define sw_pwr_on BIT(24) 45*91f16700Schasinglulu #define sw_coq_dis BIT(25) 46*91f16700Schasinglulu #define logic_pdbo_all_off_ack BIT(26) 47*91f16700Schasinglulu #define logic_pdbo_all_on_ack BIT(27) 48*91f16700Schasinglulu #define logic_pre2_pdbo_all_on_ack BIT(28) 49*91f16700Schasinglulu #define logic_pre1_pdbo_all_on_ack BIT(29) 50*91f16700Schasinglulu 51*91f16700Schasinglulu 52*91f16700Schasinglulu #define CPUSYSx_CPUx_SPMC_CTL(cluster, cpu) \ 53*91f16700Schasinglulu (MCUCFG_REG(0x1c30) + cluster * 0x2000 + cpu * 4) 54*91f16700Schasinglulu 55*91f16700Schasinglulu #define CPUSYS0_CPU0_SPMC_CTL MCUCFG_REG(0x1c30) 56*91f16700Schasinglulu #define CPUSYS0_CPU1_SPMC_CTL MCUCFG_REG(0x1c34) 57*91f16700Schasinglulu #define CPUSYS0_CPU2_SPMC_CTL MCUCFG_REG(0x1c38) 58*91f16700Schasinglulu #define CPUSYS0_CPU3_SPMC_CTL MCUCFG_REG(0x1c3C) 59*91f16700Schasinglulu 60*91f16700Schasinglulu #define CPUSYS1_CPU0_SPMC_CTL MCUCFG_REG(0x3c30) 61*91f16700Schasinglulu #define CPUSYS1_CPU1_SPMC_CTL MCUCFG_REG(0x3c34) 62*91f16700Schasinglulu #define CPUSYS1_CPU2_SPMC_CTL MCUCFG_REG(0x3c38) 63*91f16700Schasinglulu #define CPUSYS1_CPU3_SPMC_CTL MCUCFG_REG(0x3c3C) 64*91f16700Schasinglulu 65*91f16700Schasinglulu #define cpu_sw_spark_en BIT(0) 66*91f16700Schasinglulu #define cpu_sw_no_wait_for_q_channel BIT(1) 67*91f16700Schasinglulu #define cpu_sw_fsm_override BIT(2) 68*91f16700Schasinglulu #define cpu_sw_logic_pre1_pdb BIT(3) 69*91f16700Schasinglulu #define cpu_sw_logic_pre2_pdb BIT(4) 70*91f16700Schasinglulu #define cpu_sw_logic_pdb BIT(5) 71*91f16700Schasinglulu #define cpu_sw_iso BIT(6) 72*91f16700Schasinglulu #define cpu_sw_sram_sleepb BIT(7) 73*91f16700Schasinglulu #define cpu_sw_sram_isointb BIT(8) 74*91f16700Schasinglulu #define cpu_sw_clk_dis BIT(9) 75*91f16700Schasinglulu #define cpu_sw_ckiso BIT(10) 76*91f16700Schasinglulu #define cpu_sw_pd (U(0x1F) << 11) 77*91f16700Schasinglulu #define cpu_sw_hot_plug_reset BIT(16) 78*91f16700Schasinglulu #define cpu_sw_powr_on_override_en BIT(17) 79*91f16700Schasinglulu #define cpu_sw_pwr_on BIT(18) 80*91f16700Schasinglulu #define cpu_spark2ldo_allswoff BIT(19) 81*91f16700Schasinglulu #define cpu_pdbo_all_on_ack BIT(20) 82*91f16700Schasinglulu #define cpu_pre2_pdbo_allon_ack BIT(21) 83*91f16700Schasinglulu #define cpu_pre1_pdbo_allon_ack BIT(22) 84*91f16700Schasinglulu 85*91f16700Schasinglulu /* CPC related registers */ 86*91f16700Schasinglulu #define CPC_MCUSYS_CPC_OFF_THRES MCUCFG_REG(0xa714) 87*91f16700Schasinglulu #define CPC_MCUSYS_PWR_CTRL MCUCFG_REG(0xa804) 88*91f16700Schasinglulu #define CPC_MCUSYS_CPC_FLOW_CTRL_CFG MCUCFG_REG(0xa814) 89*91f16700Schasinglulu #define CPC_MCUSYS_LAST_CORE_REQ MCUCFG_REG(0xa818) 90*91f16700Schasinglulu #define CPC_MCUSYS_MP_LAST_CORE_RESP MCUCFG_REG(0xa81c) 91*91f16700Schasinglulu #define CPC_MCUSYS_LAST_CORE_RESP MCUCFG_REG(0xa824) 92*91f16700Schasinglulu #define CPC_MCUSYS_PWR_ON_MASK MCUCFG_REG(0xa828) 93*91f16700Schasinglulu #define CPC_MCUSYS_CPU_ON_SW_HINT_SET MCUCFG_REG(0xa8a8) 94*91f16700Schasinglulu #define CPC_MCUSYS_CPU_ON_SW_HINT_CLR MCUCFG_REG(0xa8ac) 95*91f16700Schasinglulu #define CPC_MCUSYS_CPC_DBG_SETTING MCUCFG_REG(0xab00) 96*91f16700Schasinglulu #define CPC_MCUSYS_CPC_KERNEL_TIME_L_BASE MCUCFG_REG(0xab04) 97*91f16700Schasinglulu #define CPC_MCUSYS_CPC_KERNEL_TIME_H_BASE MCUCFG_REG(0xab08) 98*91f16700Schasinglulu #define CPC_MCUSYS_CPC_SYSTEM_TIME_L_BASE MCUCFG_REG(0xab0c) 99*91f16700Schasinglulu #define CPC_MCUSYS_CPC_SYSTEM_TIME_H_BASE MCUCFG_REG(0xab10) 100*91f16700Schasinglulu #define CPC_MCUSYS_TRACE_SEL MCUCFG_REG(0xab14) 101*91f16700Schasinglulu #define CPC_MCUSYS_TRACE_DATA MCUCFG_REG(0xab20) 102*91f16700Schasinglulu #define CPC_MCUSYS_CLUSTER_COUNTER MCUCFG_REG(0xab70) 103*91f16700Schasinglulu #define CPC_MCUSYS_CLUSTER_COUNTER_CLR MCUCFG_REG(0xab74) 104*91f16700Schasinglulu #define SPARK2LDO MCUCFG_REG(0x2700) 105*91f16700Schasinglulu /* APB module mcucfg */ 106*91f16700Schasinglulu #define MP0_CA7_CACHE_CONFIG MCUCFG_REG(0x000) 107*91f16700Schasinglulu #define MP0_AXI_CONFIG MCUCFG_REG(0x02C) 108*91f16700Schasinglulu #define MP0_MISC_CONFIG0 MCUCFG_REG(0x030) 109*91f16700Schasinglulu #define MP0_MISC_CONFIG1 MCUCFG_REG(0x034) 110*91f16700Schasinglulu #define MP0_MISC_CONFIG2 MCUCFG_REG(0x038) 111*91f16700Schasinglulu #define MP0_MISC_CONFIG_BOOT_ADDR(cpu) (MP0_MISC_CONFIG2 + ((cpu) * 8)) 112*91f16700Schasinglulu #define MP0_MISC_CONFIG3 MCUCFG_REG(0x03C) 113*91f16700Schasinglulu #define MP0_MISC_CONFIG9 MCUCFG_REG(0x054) 114*91f16700Schasinglulu #define MP0_CA7_MISC_CONFIG MCUCFG_REG(0x064) 115*91f16700Schasinglulu 116*91f16700Schasinglulu #define MP0_RW_RSVD0 MCUCFG_REG(0x06C) 117*91f16700Schasinglulu 118*91f16700Schasinglulu 119*91f16700Schasinglulu #define MP1_CA7_CACHE_CONFIG MCUCFG_REG(0x200) 120*91f16700Schasinglulu #define MP1_AXI_CONFIG MCUCFG_REG(0x22C) 121*91f16700Schasinglulu #define MP1_MISC_CONFIG0 MCUCFG_REG(0x230) 122*91f16700Schasinglulu #define MP1_MISC_CONFIG1 MCUCFG_REG(0x234) 123*91f16700Schasinglulu #define MP1_MISC_CONFIG2 MCUCFG_REG(0x238) 124*91f16700Schasinglulu #define MP1_MISC_CONFIG_BOOT_ADDR(cpu) (MP1_MISC_CONFIG2 + ((cpu) * 8)) 125*91f16700Schasinglulu #define MP1_MISC_CONFIG3 MCUCFG_REG(0x23C) 126*91f16700Schasinglulu #define MP1_MISC_CONFIG9 MCUCFG_REG(0x254) 127*91f16700Schasinglulu #define MP1_CA7_MISC_CONFIG MCUCFG_REG(0x264) 128*91f16700Schasinglulu 129*91f16700Schasinglulu #define CCI_ADB400_DCM_CONFIG MCUCFG_REG(0x740) 130*91f16700Schasinglulu #define SYNC_DCM_CONFIG MCUCFG_REG(0x744) 131*91f16700Schasinglulu 132*91f16700Schasinglulu #define MP0_CLUSTER_CFG0 MCUCFG_REG(0xC8D0) 133*91f16700Schasinglulu 134*91f16700Schasinglulu #define MP0_SPMC MCUCFG_REG(0x788) 135*91f16700Schasinglulu #define MP1_SPMC MCUCFG_REG(0x78C) 136*91f16700Schasinglulu #define MP2_AXI_CONFIG MCUCFG_REG(0x220C) 137*91f16700Schasinglulu #define MP2_AXI_CONFIG_ACINACTM BIT(0) 138*91f16700Schasinglulu #define MP2_AXI_CONFIG_AINACTS BIT(4) 139*91f16700Schasinglulu 140*91f16700Schasinglulu #define MPx_AXI_CONFIG_ACINACTM BIT(4) 141*91f16700Schasinglulu #define MPx_AXI_CONFIG_AINACTS BIT(5) 142*91f16700Schasinglulu #define MPx_CA7_MISC_CONFIG_standbywfil2 BIT(28) 143*91f16700Schasinglulu 144*91f16700Schasinglulu #define MP0_CPU0_STANDBYWFE BIT(20) 145*91f16700Schasinglulu #define MP0_CPU1_STANDBYWFE BIT(21) 146*91f16700Schasinglulu #define MP0_CPU2_STANDBYWFE BIT(22) 147*91f16700Schasinglulu #define MP0_CPU3_STANDBYWFE BIT(23) 148*91f16700Schasinglulu 149*91f16700Schasinglulu #define MP1_CPU0_STANDBYWFE BIT(20) 150*91f16700Schasinglulu #define MP1_CPU1_STANDBYWFE BIT(21) 151*91f16700Schasinglulu #define MP1_CPU2_STANDBYWFE BIT(22) 152*91f16700Schasinglulu #define MP1_CPU3_STANDBYWFE BIT(23) 153*91f16700Schasinglulu 154*91f16700Schasinglulu #define CPUSYS0_SPARKVRETCNTRL MCUCFG_REG(0x1c00) 155*91f16700Schasinglulu #define CPUSYS0_SPARKEN MCUCFG_REG(0x1c04) 156*91f16700Schasinglulu #define CPUSYS0_AMUXSEL MCUCFG_REG(0x1c08) 157*91f16700Schasinglulu #define CPUSYS1_SPARKVRETCNTRL MCUCFG_REG(0x3c00) 158*91f16700Schasinglulu #define CPUSYS1_SPARKEN MCUCFG_REG(0x3c04) 159*91f16700Schasinglulu #define CPUSYS1_AMUXSEL MCUCFG_REG(0x3c08) 160*91f16700Schasinglulu 161*91f16700Schasinglulu #define MP2_PWR_RST_CTL MCUCFG_REG(0x2008) 162*91f16700Schasinglulu #define MP2_PTP3_CPUTOP_SPMC0 MCUCFG_REG(0x22A0) 163*91f16700Schasinglulu #define MP2_PTP3_CPUTOP_SPMC1 MCUCFG_REG(0x22A4) 164*91f16700Schasinglulu 165*91f16700Schasinglulu #define MP2_COQ MCUCFG_REG(0x22BC) 166*91f16700Schasinglulu #define MP2_COQ_SW_DIS BIT(0) 167*91f16700Schasinglulu 168*91f16700Schasinglulu #define MP2_CA15M_MON_SEL MCUCFG_REG(0x2400) 169*91f16700Schasinglulu #define MP2_CA15M_MON_L MCUCFG_REG(0x2404) 170*91f16700Schasinglulu 171*91f16700Schasinglulu #define CPUSYS2_CPU0_SPMC_CTL MCUCFG_REG(0x2430) 172*91f16700Schasinglulu #define CPUSYS2_CPU1_SPMC_CTL MCUCFG_REG(0x2438) 173*91f16700Schasinglulu #define CPUSYS2_CPU0_SPMC_STA MCUCFG_REG(0x2434) 174*91f16700Schasinglulu #define CPUSYS2_CPU1_SPMC_STA MCUCFG_REG(0x243C) 175*91f16700Schasinglulu 176*91f16700Schasinglulu #define MP0_CA7L_DBG_PWR_CTRL MCUCFG_REG(0x068) 177*91f16700Schasinglulu #define MP1_CA7L_DBG_PWR_CTRL MCUCFG_REG(0x268) 178*91f16700Schasinglulu #define BIG_DBG_PWR_CTRL MCUCFG_REG(0x75C) 179*91f16700Schasinglulu 180*91f16700Schasinglulu #define MP2_SW_RST_B BIT(0) 181*91f16700Schasinglulu #define MP2_TOPAON_APB_MASK BIT(1) 182*91f16700Schasinglulu 183*91f16700Schasinglulu #define B_SW_HOT_PLUG_RESET BIT(30) 184*91f16700Schasinglulu 185*91f16700Schasinglulu #define B_SW_PD_OFFSET (18U) 186*91f16700Schasinglulu #define B_SW_PD (U(0x3f) << B_SW_PD_OFFSET) 187*91f16700Schasinglulu 188*91f16700Schasinglulu #define B_SW_SRAM_SLEEPB_OFFSET (12U) 189*91f16700Schasinglulu #define B_SW_SRAM_SLEEPB (U(0x3f) << B_SW_SRAM_SLEEPB_OFFSET) 190*91f16700Schasinglulu 191*91f16700Schasinglulu #define B_SW_SRAM_ISOINTB BIT(9) 192*91f16700Schasinglulu #define B_SW_ISO BIT(8) 193*91f16700Schasinglulu #define B_SW_LOGIC_PDB BIT(7) 194*91f16700Schasinglulu #define B_SW_LOGIC_PRE2_PDB BIT(6) 195*91f16700Schasinglulu #define B_SW_LOGIC_PRE1_PDB BIT(5) 196*91f16700Schasinglulu #define B_SW_FSM_OVERRIDE BIT(4) 197*91f16700Schasinglulu #define B_SW_PWR_ON BIT(3) 198*91f16700Schasinglulu #define B_SW_PWR_ON_OVERRIDE_EN BIT(2) 199*91f16700Schasinglulu 200*91f16700Schasinglulu #define B_FSM_STATE_OUT_OFFSET (6U) 201*91f16700Schasinglulu #define B_FSM_STATE_OUT_MASK (U(0x1f) << B_FSM_STATE_OUT_OFFSET) 202*91f16700Schasinglulu #define B_SW_LOGIC_PDBO_ALL_OFF_ACK BIT(5) 203*91f16700Schasinglulu #define B_SW_LOGIC_PDBO_ALL_ON_ACK BIT(4) 204*91f16700Schasinglulu #define B_SW_LOGIC_PRE2_PDBO_ALL_ON_ACK BIT(3) 205*91f16700Schasinglulu #define B_SW_LOGIC_PRE1_PDBO_ALL_ON_ACK BIT(2) 206*91f16700Schasinglulu 207*91f16700Schasinglulu #define B_FSM_OFF (0U << B_FSM_STATE_OUT_OFFSET) 208*91f16700Schasinglulu #define B_FSM_ON (1U << B_FSM_STATE_OUT_OFFSET) 209*91f16700Schasinglulu #define B_FSM_RET (2U << B_FSM_STATE_OUT_OFFSET) 210*91f16700Schasinglulu 211*91f16700Schasinglulu #ifndef __ASSEMBLER__ 212*91f16700Schasinglulu /* cpu boot mode */ 213*91f16700Schasinglulu enum { 214*91f16700Schasinglulu MP0_CPUCFG_64BIT_SHIFT = 12U, 215*91f16700Schasinglulu MP1_CPUCFG_64BIT_SHIFT = 28U, 216*91f16700Schasinglulu MP0_CPUCFG_64BIT = U(0xf) << MP0_CPUCFG_64BIT_SHIFT, 217*91f16700Schasinglulu MP1_CPUCFG_64BIT = U(0xf) << MP1_CPUCFG_64BIT_SHIFT 218*91f16700Schasinglulu }; 219*91f16700Schasinglulu 220*91f16700Schasinglulu enum { 221*91f16700Schasinglulu MP1_DIS_RGU0_WAIT_PD_CPUS_L1_ACK_SHIFT = 0U, 222*91f16700Schasinglulu MP1_DIS_RGU1_WAIT_PD_CPUS_L1_ACK_SHIFT = 4U, 223*91f16700Schasinglulu MP1_DIS_RGU2_WAIT_PD_CPUS_L1_ACK_SHIFT = 8U, 224*91f16700Schasinglulu MP1_DIS_RGU3_WAIT_PD_CPUS_L1_ACK_SHIFT = 12U, 225*91f16700Schasinglulu MP1_DIS_RGU_NOCPU_WAIT_PD_CPUS_L1_ACK_SHIFT = 16U, 226*91f16700Schasinglulu 227*91f16700Schasinglulu MP1_DIS_RGU0_WAIT_PD_CPUS_L1_ACK = 228*91f16700Schasinglulu U(0xf) << MP1_DIS_RGU0_WAIT_PD_CPUS_L1_ACK_SHIFT, 229*91f16700Schasinglulu MP1_DIS_RGU1_WAIT_PD_CPUS_L1_ACK = 230*91f16700Schasinglulu U(0xf) << MP1_DIS_RGU1_WAIT_PD_CPUS_L1_ACK_SHIFT, 231*91f16700Schasinglulu MP1_DIS_RGU2_WAIT_PD_CPUS_L1_ACK = 232*91f16700Schasinglulu U(0xf) << MP1_DIS_RGU2_WAIT_PD_CPUS_L1_ACK_SHIFT, 233*91f16700Schasinglulu MP1_DIS_RGU3_WAIT_PD_CPUS_L1_ACK = 234*91f16700Schasinglulu U(0xf) << MP1_DIS_RGU3_WAIT_PD_CPUS_L1_ACK_SHIFT, 235*91f16700Schasinglulu MP1_DIS_RGU_NOCPU_WAIT_PD_CPUS_L1_ACK = 236*91f16700Schasinglulu U(0xf) << MP1_DIS_RGU_NOCPU_WAIT_PD_CPUS_L1_ACK_SHIFT 237*91f16700Schasinglulu }; 238*91f16700Schasinglulu 239*91f16700Schasinglulu enum { 240*91f16700Schasinglulu MP1_AINACTS_SHIFT = 4U, 241*91f16700Schasinglulu MP1_AINACTS = 1U << MP1_AINACTS_SHIFT 242*91f16700Schasinglulu }; 243*91f16700Schasinglulu 244*91f16700Schasinglulu enum { 245*91f16700Schasinglulu MP1_SW_CG_GEN_SHIFT = 12U, 246*91f16700Schasinglulu MP1_SW_CG_GEN = 1U << MP1_SW_CG_GEN_SHIFT 247*91f16700Schasinglulu }; 248*91f16700Schasinglulu 249*91f16700Schasinglulu enum { 250*91f16700Schasinglulu MP1_L2RSTDISABLE_SHIFT = 14U, 251*91f16700Schasinglulu MP1_L2RSTDISABLE = 1U << MP1_L2RSTDISABLE_SHIFT 252*91f16700Schasinglulu }; 253*91f16700Schasinglulu #endif /* __ASSEMBLER__ */ 254*91f16700Schasinglulu 255*91f16700Schasinglulu #endif /* MCUCFG_H */ 256