1*0781f780SKarl Li /* 2*0781f780SKarl Li * Copyright (c) 2024, MediaTek Inc. All rights reserved. 3*0781f780SKarl Li * 4*0781f780SKarl Li * SPDX-License-Identifier: BSD-3-Clause 5*0781f780SKarl Li */ 6*0781f780SKarl Li 7*0781f780SKarl Li #ifndef APUSYS_POWER_H 8*0781f780SKarl Li #define APUSYS_POWER_H 9*0781f780SKarl Li 10*0781f780SKarl Li #include <platform_def.h> 11*0781f780SKarl Li 12*0781f780SKarl Li #define CFG_APU_ARDCM_ENABLE (0) 13*0781f780SKarl Li #define CFG_CTL_RPC_BY_CE (1) 14*0781f780SKarl Li 15*0781f780SKarl Li #define APUPLL0_DEFAULT_FREQ (800) 16*0781f780SKarl Li #define APUPLL1_DEFAULT_FREQ (960) 17*0781f780SKarl Li #define APUPLL2_DEFAULT_FREQ (1200) 18*0781f780SKarl Li #define APUPLL3_DEFAULT_FREQ (1230) 19*0781f780SKarl Li 20*0781f780SKarl Li enum t_acx_id { 21*0781f780SKarl Li D_ACX0 = 0, 22*0781f780SKarl Li ACX0, 23*0781f780SKarl Li ACX1, 24*0781f780SKarl Li ACX2, 25*0781f780SKarl Li CLUSTER_NUM, 26*0781f780SKarl Li RCX, 27*0781f780SKarl Li }; 28*0781f780SKarl Li 29*0781f780SKarl Li enum rcx_ao_range { 30*0781f780SKarl Li RCX_AO_BEGIN = 0, 31*0781f780SKarl Li PLL_ENTRY_BEGIN = 0, 32*0781f780SKarl Li PLL_ENTRY_END = 27, 33*0781f780SKarl Li ACC_ENTRY_BEGIN = 28, 34*0781f780SKarl Li ACC_ENTRY_END = 37, 35*0781f780SKarl Li RCX_AO_END = 37, 36*0781f780SKarl Li }; 37*0781f780SKarl Li 38*0781f780SKarl Li #define SYS_VLP (0x000000) 39*0781f780SKarl Li #define SYS_SPM (0x000000) 40*0781f780SKarl Li #define APU_RCX (0x020000) 41*0781f780SKarl Li #define APU_RCX_DLA (0x040000) 42*0781f780SKarl Li #define APU_ARE (0x0a0000) 43*0781f780SKarl Li #define APU_ARE_REG (0x0b0000) 44*0781f780SKarl Li #define APU_VCORE (0x0e0000) 45*0781f780SKarl Li #define APU_MD32_MBOX (0x0e1000) 46*0781f780SKarl Li #define APU_RPC (0x0f0000) 47*0781f780SKarl Li #define APU_PCU (0x0f1000) 48*0781f780SKarl Li #define APU_AO_CTL (0x0f2000) 49*0781f780SKarl Li #define APU_ACC (0x0f3000) 50*0781f780SKarl Li #define APU_PLL (0x0f6000) 51*0781f780SKarl Li #define APU_RPCTOP_MDLA (0x0F7400) 52*0781f780SKarl Li #define APU_ACX0 (0x100000) 53*0781f780SKarl Li #define APU_ACX0_RPC_LITE (0x140000) 54*0781f780SKarl Li #define APU_ACX1 (0x200000) 55*0781f780SKarl Li #define APU_ACX1_RPC_LITE (0x240000) 56*0781f780SKarl Li #define APU_ACX2 (0x300000) 57*0781f780SKarl Li #define APU_ACX2_RPC_LITE (0x340000) 58*0781f780SKarl Li 59*0781f780SKarl Li /* APU GRP offset define */ 60*0781f780SKarl Li #define APU_GRP_0_BASE (0x0000) 61*0781f780SKarl Li #define APU_GRP_1_BASE (0x0400) 62*0781f780SKarl Li #define APU_GRP_2_BASE (0x0800) 63*0781f780SKarl Li #define APU_GRP_3_BASE (0x0C00) 64*0781f780SKarl Li 65*0781f780SKarl Li #define MDLA_PLL_BASE APU_GRP_0_BASE 66*0781f780SKarl Li #define MVPU_PLL_BASE APU_GRP_1_BASE 67*0781f780SKarl Li #define MNOC_PLL_BASE APU_GRP_2_BASE 68*0781f780SKarl Li #define UP_PLL_BASE APU_GRP_3_BASE 69*0781f780SKarl Li 70*0781f780SKarl Li #define MDLA_ACC_BASE APU_GRP_0_BASE 71*0781f780SKarl Li #define MVPU_ACC_BASE APU_GRP_1_BASE 72*0781f780SKarl Li #define MNOC_ACC_BASE APU_GRP_2_BASE 73*0781f780SKarl Li #define UP_ACC_BASE APU_GRP_3_BASE 74*0781f780SKarl Li 75*0781f780SKarl Li /* RPC / RPC_LITE control */ 76*0781f780SKarl Li #define APU_RPC_SW_TYPE0_OFF (0x200) 77*0781f780SKarl Li #define APU_RPC_SW_TYPE1_OFF (0x204) 78*0781f780SKarl Li #define APU_RPC_SW_TYPE2_OFF (0x208) 79*0781f780SKarl Li #define APU_RPC_SW_TYPE3_OFF (0x20C) 80*0781f780SKarl Li #define APU_RPC_SW_TYPE4_OFF (0x210) 81*0781f780SKarl Li #define SW_TYPE_MVPU_MDLA_RV BIT(0) 82*0781f780SKarl Li #define CE_ENABLE BIT(10) 83*0781f780SKarl Li #define BUCK_PROT_SEL BIT(20) 84*0781f780SKarl Li #define RPC_TYPE_INIT_VAL (0x18) 85*0781f780SKarl Li #define TOP_SEL_VAL (0xB2) 86*0781f780SKarl Li #define RPC_TOP_SEL_VAL (0xB800D50F) 87*0781f780SKarl Li 88*0781f780SKarl Li #define APUSYS_AO_CTL (APUSYS_BASE + APU_AO_CTL) 89*0781f780SKarl Li #define APUSYS_RPC (APUSYS_BASE + APU_RPC) 90*0781f780SKarl Li #define APUSYS_ACC (APUSYS_BASE + APU_ACC) 91*0781f780SKarl Li #define APUSYS_PLL (APUSYS_BASE + APU_PLL) 92*0781f780SKarl Li #define APUSYS_PCU (APUSYS_BASE + APU_PCU) 93*0781f780SKarl Li 94*0781f780SKarl Li /* ARE control */ 95*0781f780SKarl Li #define ARE_VCORE_EN BIT(20) 96*0781f780SKarl Li #define ARE_RCX_AO_EN BIT(21) 97*0781f780SKarl Li #define ARE_VCORE_OFF (20) 98*0781f780SKarl Li #define ARE_CONF_START (0x04) 99*0781f780SKarl Li #define ARE_CONF_END (0x6C) 100*0781f780SKarl Li #define ARE_REG_SIZE (4) 101*0781f780SKarl Li 102*0781f780SKarl Li /* ACC offset */ 103*0781f780SKarl Li #define APU_ACC_CONFG_SET0 (0x000) 104*0781f780SKarl Li #define APU_ACC_CONFG_CLR0 (0x010) 105*0781f780SKarl Li #define APU_ACC_AUTO_CTRL_SET0 (0x084) 106*0781f780SKarl Li #define APU_ARDCM_CTRL0 (0x100) 107*0781f780SKarl Li #define APU_ARDCM_CTRL1 (0x104) 108*0781f780SKarl Li 109*0781f780SKarl Li /* ACC control */ 110*0781f780SKarl Li #define APU_ARDCM_CTRL0_VAL_0 (0x00000016) 111*0781f780SKarl Li #define APU_ARDCM_CTRL0_VAL_1 (0x00000036) 112*0781f780SKarl Li #define APU_ARDCM_CTRL1_VAL_0 (0x00001006) 113*0781f780SKarl Li #define APU_ARDCM_CTRL1_VAL_1 (0x07F0F006) 114*0781f780SKarl Li #define CGEN_SOC BIT(2) 115*0781f780SKarl Li #define CLK_REQ_SW_EN BIT(8) 116*0781f780SKarl Li #define HW_CTRL_EN BIT(15) 117*0781f780SKarl Li 118*0781f780SKarl Li /* APU PLL1C offset */ 119*0781f780SKarl Li #define RG_PLLGP_LVR_REFSEL (0x204) 120*0781f780SKarl Li #define PLL1C_PLL1_CON1 (0x20C) 121*0781f780SKarl Li #define PLL1CPLL_FHCTL_HP_EN (0x300) 122*0781f780SKarl Li #define PLL1CPLL_FHCTL_CLK_CON (0x308) 123*0781f780SKarl Li #define PLL1CPLL_FHCTL_RST_CON (0x30C) 124*0781f780SKarl Li #define PLL1CPLL_FHCTL0_CFG (0x314) 125*0781f780SKarl Li #define PLL1CPLL_FHCTL0_DDS (0x31C) 126*0781f780SKarl Li 127*0781f780SKarl Li /* PLL control */ 128*0781f780SKarl Li #define RG_PLLGP_LVR_REFSEL_VAL (0x3) 129*0781f780SKarl Li #define FHCTL_CTRL (0x1) 130*0781f780SKarl Li #define FHCTL_NO_RESET (0x1) 131*0781f780SKarl Li #define FHCTL_CLKEN (0x1) 132*0781f780SKarl Li #define FHCTL_HOPPING_EN BIT(0) 133*0781f780SKarl Li #define FHCTL_SFSTR0_EN BIT(2) 134*0781f780SKarl Li #define RG_PLL_SDM_PCW_CHG_OFF (31) 135*0781f780SKarl Li #define RG_PLL_POSDIV_OFF (24) 136*0781f780SKarl Li #define FHCTL0_PLL_TGL_ORG (31) 137*0781f780SKarl Li 138*0781f780SKarl Li /* RPC offset define */ 139*0781f780SKarl Li #define APU_RPC_TOP_SEL (0x0004) 140*0781f780SKarl Li #define APU_RPC_TOP_SEL_1 (0x0018) 141*0781f780SKarl Li #define APU_RPC_HW_CON (0x001C) 142*0781f780SKarl Li #define APU_RPC_STATUS_1 (0x0034) 143*0781f780SKarl Li #define APU_RPC_INTF_PWR_RDY (0x0044) 144*0781f780SKarl Li 145*0781f780SKarl Li /* RPC control */ 146*0781f780SKarl Li #define SRAM_AOC_LHENB_SET BIT(4) 147*0781f780SKarl Li #define SRAM_AOC_ISO_SET BIT(6) 148*0781f780SKarl Li #define SRAM_AOC_ISO_CLR BIT(7) 149*0781f780SKarl Li #define PLL_AOC_ISO_EN_SET BIT(8) 150*0781f780SKarl Li #define PLL_AOC_ISO_EN_CLR BIT(9) 151*0781f780SKarl Li #define BUCK_ELS_EN_SET BIT(10) 152*0781f780SKarl Li #define BUCK_ELS_EN_CLR BIT(11) 153*0781f780SKarl Li #define BUCK_AO_RST_B_SET BIT(12) 154*0781f780SKarl Li #define BUCK_AO_RST_B_CLR BIT(13) 155*0781f780SKarl Li #define BUCK_PROT_REQ_SET BIT(14) 156*0781f780SKarl Li #define BUCK_PROT_REQ_CLR BIT(15) 157*0781f780SKarl Li 158*0781f780SKarl Li /* mt6373_vbuck2 */ 159*0781f780SKarl Li #define MT6373_SLAVE_ID (0x5) 160*0781f780SKarl Li #define MT6373_RG_BUCK_VBUCK2_SET (0x241) 161*0781f780SKarl Li #define MT6373_RG_BUCK_VBUCK2_CLR (0x242) 162*0781f780SKarl Li #define MT6373_RG_BUCK_VBUCK2_EN_SHIFT (2) 163*0781f780SKarl Li #define MT6373_RG_BUCK_VBUCK2_VOSEL_ADDR (0x24e) 164*0781f780SKarl Li 165*0781f780SKarl Li /* PCU initial data */ 166*0781f780SKarl Li #define APU_PCUTOP_CTRL_SET (0x0) 167*0781f780SKarl Li #define APU_PCU_BUCK_STEP_SEL (0x0030) 168*0781f780SKarl Li #define APU_PCU_BUCK_ON_DAT0_L (0x0080) 169*0781f780SKarl Li #define APU_PCU_BUCK_ON_DAT0_H (0x0084) 170*0781f780SKarl Li #define APU_PCU_BUCK_ON_DAT1_L (0x0088) 171*0781f780SKarl Li #define APU_PCU_BUCK_ON_DAT1_H (0x008C) 172*0781f780SKarl Li #define APU_PCU_BUCK_OFF_DAT0_L (0x00A0) 173*0781f780SKarl Li #define APU_PCU_BUCK_OFF_DAT0_H (0x00A4) 174*0781f780SKarl Li #define APU_PCU_BUCK_ON_SLE0 (0x00C0) 175*0781f780SKarl Li #define APU_PCU_BUCK_ON_SLE1 (0x00C4) 176*0781f780SKarl Li #define VAPU_BUCK_ON_SETTLE_TIME (0x00C8) 177*0781f780SKarl Li #define APU_PCU_PMIC_TAR_BUF1 (0x0190) 178*0781f780SKarl Li #define APU_PCU_PMIC_TAR_BUF2 (0x0194) 179*0781f780SKarl Li #define APU_PCU_PMIC_CMD (0x0184) 180*0781f780SKarl Li #define APU_PCU_PMIC_IRQ (0x0180) 181*0781f780SKarl Li 182*0781f780SKarl Li /* PCU control */ 183*0781f780SKarl Li #define PMIC_CMD_IRQ BIT(0) 184*0781f780SKarl Li #define PMIC_IRQ_EN BIT(2) 185*0781f780SKarl Li #define AUTO_BUCK_EN BIT(3) 186*0781f780SKarl Li #define PMIC_PMIFID_OFF (3) 187*0781f780SKarl Li #define PMIC_SLVID_OFF (4) 188*0781f780SKarl Li #define PCU_CMD_OP_W (0x7) 189*0781f780SKarl Li #define PMIC_OFF_ADDR_OFF (16) 190*0781f780SKarl Li #define PMIC_CMD_EN (0x1) 191*0781f780SKarl Li #define BUCK_STEP_SEL_VAL (0x13) 192*0781f780SKarl Li #define PCU_BUCK_OFF_CMD (0x7) 193*0781f780SKarl Li 194*0781f780SKarl Li /* sram_core: mt6363_vbuck4 */ 195*0781f780SKarl Li #define MT6363_RG_BUCK_VBUCK4_VOSEL_ADDR (0x250) 196*0781f780SKarl Li 197*0781f780SKarl Li /* sub_pmic */ 198*0781f780SKarl Li #define BUCK_VAPU_PMIC_ID MT6373_SLAVE_ID 199*0781f780SKarl Li #define BUCK_VAPU_PMIC_REG_VOSEL_ADDR MT6373_RG_BUCK_VBUCK2_VOSEL_ADDR 200*0781f780SKarl Li #define BUCK_VAPU_PMIC_REG_EN_SET_ADDR MT6373_RG_BUCK_VBUCK2_SET 201*0781f780SKarl Li #define BUCK_VAPU_PMIC_REG_EN_CLR_ADDR MT6373_RG_BUCK_VBUCK2_CLR 202*0781f780SKarl Li #define BUCK_VAPU_PMIC_REG_EN_SHIFT MT6373_RG_BUCK_VBUCK2_EN_SHIFT 203*0781f780SKarl Li 204*0781f780SKarl Li /* vlp offset define */ 205*0781f780SKarl Li #define APUSYS_AO_SRAM_CONFIG (0x70) 206*0781f780SKarl Li #define APUSYS_AO_SRAM_SET (0x74) 207*0781f780SKarl Li #define APUSYS_AO_SRAM_CLR (0x78) 208*0781f780SKarl Li 209*0781f780SKarl Li #define APUSYS_AO_SRAM_EN (0x1) 210*0781f780SKarl Li 211*0781f780SKarl Li #define ARE_ENTRIES(x, y) ((((y) - (x)) + 1) * 2) 212*0781f780SKarl Li #define ARE_ENTRY(x) (((x) * 2) + 36) 213*0781f780SKarl Li #define ARE_RCX_AO_CONFIG (0x0014) 214*0781f780SKarl Li #define ARE_RCX_AO_CONFIG_HIGH_OFF (16) 215*0781f780SKarl Li 216*0781f780SKarl Li #define APU_ACE_HW_FLAG_DIS (APUSYS_CE_BASE + 0x05D4) 217*0781f780SKarl Li #define APU_ACE_DIS_FLAG_VAL (0xffff7ff8) 218*0781f780SKarl Li 219*0781f780SKarl Li #define OUT_CLK_FREQ_MIN (1500) 220*0781f780SKarl Li #define DDS_SHIFT (14) 221*0781f780SKarl Li #define BASIC_CLK_FREQ (26) 222*0781f780SKarl Li 223*0781f780SKarl Li int apusys_power_init(void); 224*0781f780SKarl Li 225*0781f780SKarl Li #endif /* APUSYS_POWER_H */ 226