1*fb57af70SWenzhen Yu /* 2*fb57af70SWenzhen Yu * Copyright (c) 2025, Mediatek Inc. All rights reserved. 3*fb57af70SWenzhen Yu * 4*fb57af70SWenzhen Yu * SPDX-License-Identifier: BSD-3-Clause 5*fb57af70SWenzhen Yu */ 6*fb57af70SWenzhen Yu 7*fb57af70SWenzhen Yu #ifndef PCM_DEF_H 8*fb57af70SWenzhen Yu #define PCM_DEF_H 9*fb57af70SWenzhen Yu 10*fb57af70SWenzhen Yu #define CTRL0_SC_26M_CK_OFF BIT(0) 11*fb57af70SWenzhen Yu #define CTRL0_SC_VLP_BUS_CK_OFF BIT(1) 12*fb57af70SWenzhen Yu #define CTRL0_SC_PMIF_CK_OFF BIT(2) 13*fb57af70SWenzhen Yu #define CTRL0_SC_AXI_CK_OFF BIT(3) 14*fb57af70SWenzhen Yu #define CTRL0_SC_AXI_MEM_CK_OFF BIT(4) 15*fb57af70SWenzhen Yu #define CTRL0_SC_MD26M_CK_OFF BIT(5) 16*fb57af70SWenzhen Yu #define CTRL0_SC_MD32K_CK_OFF BIT(6) 17*fb57af70SWenzhen Yu #define CTRL0_SC_VLP_26M_CLK_SEL BIT(7) 18*fb57af70SWenzhen Yu #define CTRL0_SC_26M_CK_SEL BIT(8) 19*fb57af70SWenzhen Yu #define CTRL0_SC_TOP_26M_CLK_SEL BIT(9) 20*fb57af70SWenzhen Yu #define CTRL0_SC_SYS_TIMER_CLK_32K_SEL BIT(10) 21*fb57af70SWenzhen Yu #define CTRL0_SC_CIRQ_CLK_32K_SEL BIT(11) 22*fb57af70SWenzhen Yu #define CTRL0_SC_AXI_DCM_DIS BIT(12) 23*fb57af70SWenzhen Yu #define CTRL0_SC_CKSQ0_OFF BIT(13) 24*fb57af70SWenzhen Yu #define CTRL0_SC_CKSQ1_OFF BIT(14) 25*fb57af70SWenzhen Yu #define CTRL0_VCORE_PWR_ISO BIT(15) 26*fb57af70SWenzhen Yu #define CTRL0_VCORE_PWR_ISO_PRE BIT(16) 27*fb57af70SWenzhen Yu #define CTRL0_VCORE_PWR_RST_B BIT(17) 28*fb57af70SWenzhen Yu #define CTRL0_VCORE_RESTORE_ENABLE BIT(18) 29*fb57af70SWenzhen Yu #define CTRL0_SC_TOP_RESTORE_26M_CLK_SEL BIT(19) 30*fb57af70SWenzhen Yu #define CTRL0_AOC_VCORE_SRAM_ISO_DIN BIT(20) 31*fb57af70SWenzhen Yu #define CTRL0_AOC_VCORE_SRAM_LATCH_ENB BIT(21) 32*fb57af70SWenzhen Yu #define CTRL0_AOC_VCORE_ANA_ISO BIT(22) 33*fb57af70SWenzhen Yu #define CTRL0_AOC_VCORE_ANA_ISO_PRE BIT(23) 34*fb57af70SWenzhen Yu #define CTRL0_AOC_VLPTOP_SRAM_ISO_DIN BIT(24) 35*fb57af70SWenzhen Yu #define CTRL0_AOC_VLPTOP_SRAM_LATCH_ENB BIT(25) 36*fb57af70SWenzhen Yu #define CTRL0_AOC_VCORE_IO_ISO BIT(26) 37*fb57af70SWenzhen Yu #define CTRL0_AOC_VCORE_IO_LATCH_ENB BIT(27) 38*fb57af70SWenzhen Yu #define CTRL0_RTFF_VCORE_SAVE BIT(28) 39*fb57af70SWenzhen Yu #define CTRL0_RTFF_VCORE_NRESTORE BIT(29) 40*fb57af70SWenzhen Yu #define CTRL0_RTFF_VCORE_CLK_DIS BIT(30) 41*fb57af70SWenzhen Yu 42*fb57af70SWenzhen Yu #define CTRL1_PWRAP_SLEEP_REQ BIT(0) 43*fb57af70SWenzhen Yu #define CTRL1_IM_SLP_EN BIT(1) 44*fb57af70SWenzhen Yu #define CTRL1_SPM_LEAVE_VCORE_OFF_REQ BIT(2) 45*fb57af70SWenzhen Yu #define CTRL1_SPM_CK_SEL0 BIT(4) 46*fb57af70SWenzhen Yu #define CTRL1_SPM_CK_SEL1 BIT(5) 47*fb57af70SWenzhen Yu #define CTRL1_TIMER_SET BIT(6) 48*fb57af70SWenzhen Yu #define CTRL1_TIMER_CLR BIT(7) 49*fb57af70SWenzhen Yu #define CTRL1_SPM_LEAVE_DEEPIDLE_REQ BIT(8) 50*fb57af70SWenzhen Yu #define CTRL1_SPM_LEAVE_SUSPEND_REQ BIT(9) 51*fb57af70SWenzhen Yu #define CTRL1_CSYSPWRUPACK BIT(10) 52*fb57af70SWenzhen Yu #define CTRL1_SRCCLKENO0 BIT(11) 53*fb57af70SWenzhen Yu #define CTRL1_SRCCLKENO1 BIT(12) 54*fb57af70SWenzhen Yu #define CTRL1_SRCCLKENO2 BIT(13) 55*fb57af70SWenzhen Yu #define CTRL1_SPM_APSRC_INTERNAL_ACK BIT(14) 56*fb57af70SWenzhen Yu #define CTRL1_SPM_EMI_INTERNAL_ACK BIT(15) 57*fb57af70SWenzhen Yu #define CTRL1_SPM_DDREN_INTERNAL_ACK BIT(16) 58*fb57af70SWenzhen Yu #define CTRL1_SPM_INFRA_INTERNAL_ACK BIT(17) 59*fb57af70SWenzhen Yu #define CTRL1_SPM_VRF18_INTERNAL_ACK BIT(18) 60*fb57af70SWenzhen Yu #define CTRL1_SPM_VCORE_INTERNAL_ACK BIT(19) 61*fb57af70SWenzhen Yu #define CTRL1_SPM_VCORE_RESTORE_ACK BIT(20) 62*fb57af70SWenzhen Yu #define CTRL1_SPM_PMIC_INTERNAL_ACK BIT(21) 63*fb57af70SWenzhen Yu #define CTRL1_PMIC_IRQ_REQ_EN BIT(22) 64*fb57af70SWenzhen Yu #define CTRL1_WDT_KICK_P BIT(23) 65*fb57af70SWenzhen Yu #define CTRL1_FORCE_DDREN_WAKE BIT(24) 66*fb57af70SWenzhen Yu #define CTRL1_FORCE_F26M_WAKE BIT(25) 67*fb57af70SWenzhen Yu #define CTRL1_FORCE_APSRC_WAKE BIT(26) 68*fb57af70SWenzhen Yu #define CTRL1_FORCE_INFRA_WAKE BIT(27) 69*fb57af70SWenzhen Yu #define CTRL1_FORCE_VRF18_WAKE BIT(28) 70*fb57af70SWenzhen Yu #define CTRL1_FORCE_VCORE_WAKE BIT(29) 71*fb57af70SWenzhen Yu #define CTRL1_FORCE_EMI_WAKE BIT(30) 72*fb57af70SWenzhen Yu #define CTRL1_FORCE_PMIC_WAKE BIT(31) 73*fb57af70SWenzhen Yu 74*fb57af70SWenzhen Yu 75*fb57af70SWenzhen Yu #define CTRL2_MD32PCM_IRQ_TRIG_BIT BIT(31) 76*fb57af70SWenzhen Yu 77*fb57af70SWenzhen Yu #define STA0_SRCCLKENI0 BIT(0) 78*fb57af70SWenzhen Yu #define STA0_SRCCLKENI1 BIT(1) 79*fb57af70SWenzhen Yu #define STA0_MD_SRCCLKENA BIT(2) 80*fb57af70SWenzhen Yu #define STA0_MD_SRCCLKENA1 BIT(3) 81*fb57af70SWenzhen Yu #define STA0_MD_DDREN_REQ BIT(4) 82*fb57af70SWenzhen Yu #define STA0_CONN_DDREN_REQ BIT(5) 83*fb57af70SWenzhen Yu #define STA0_SSPM_SRCCLKENA BIT(6) 84*fb57af70SWenzhen Yu #define STA0_SSPM_APSRC_REQ BIT(7) 85*fb57af70SWenzhen Yu #define STA0_MD_STATE BIT(8) 86*fb57af70SWenzhen Yu #define STA0_RC2SPM_SRCCLKENO_0_ACK BIT(9) 87*fb57af70SWenzhen Yu #define STA0_MM_STATE BIT(10) 88*fb57af70SWenzhen Yu #define STA0_SSPM_STATE BIT(11) 89*fb57af70SWenzhen Yu #define STA0_CPUEB_STATE BIT(12) 90*fb57af70SWenzhen Yu #define STA0_CONN_STATE BIT(13) 91*fb57af70SWenzhen Yu #define STA0_CONN_VCORE_REQ BIT(14) 92*fb57af70SWenzhen Yu #define STA0_CONN_SRCCLKENA BIT(15) 93*fb57af70SWenzhen Yu #define STA0_CONN_SRCCLKENB BIT(16) 94*fb57af70SWenzhen Yu #define STA0_CONN_APSRC_REQ BIT(17) 95*fb57af70SWenzhen Yu #define STA0_SCP_STATE BIT(18) 96*fb57af70SWenzhen Yu #define STA0_CSYSPWRUPREQ BIT(19) 97*fb57af70SWenzhen Yu #define STA0_PWRAP_SLEEP_ACK BIT(20) 98*fb57af70SWenzhen Yu #define STA0_DPM_STATE BIT(21) 99*fb57af70SWenzhen Yu #define STA0_AUDIO_DSP_STATE BIT(22) 100*fb57af70SWenzhen Yu #define STA0_PMIC_IRQ_ACK BIT(23) 101*fb57af70SWenzhen Yu #define STA0_RESERVED_BIT_24 BIT(24) 102*fb57af70SWenzhen Yu #define STA0_RESERVED_BIT_25 BIT(25) 103*fb57af70SWenzhen Yu #define STA0_RESERVED_BIT_26 BIT(26) 104*fb57af70SWenzhen Yu #define STA0_DVFS_STATE BIT(27) 105*fb57af70SWenzhen Yu #define STA0_RESERVED_BIT_28 BIT(28) 106*fb57af70SWenzhen Yu #define STA0_RESERVED_BIT_29 BIT(29) 107*fb57af70SWenzhen Yu #define STA0_SC_HW_S1_ACK_ALL BIT(30) 108*fb57af70SWenzhen Yu #define STA0_DDREN_STATE BIT(31) 109*fb57af70SWenzhen Yu 110*fb57af70SWenzhen Yu #define R12_PCM_TIMER_B BIT(0) 111*fb57af70SWenzhen Yu #define R12_TWAM_PMSR_DVFSRC_ALCO BIT(1) 112*fb57af70SWenzhen Yu #define R12_KP_IRQ_B BIT(2) 113*fb57af70SWenzhen Yu #define R12_APWDT_EVENT_B BIT(3) 114*fb57af70SWenzhen Yu #define R12_APXGPT_EVENT_B BIT(4) 115*fb57af70SWenzhen Yu #define R12_CONN2AP_WAKEUP_B BIT(5) 116*fb57af70SWenzhen Yu #define R12_EINT_EVENT_B BIT(6) 117*fb57af70SWenzhen Yu #define R12_CONN_WDT_IRQ_B BIT(7) 118*fb57af70SWenzhen Yu #define R12_CCIF0_EVENT_B BIT(8) 119*fb57af70SWenzhen Yu #define R12_CCIF1_EVENT_B BIT(9) 120*fb57af70SWenzhen Yu #define R12_SSPM2SPM_WAKEUP_B BIT(10) 121*fb57af70SWenzhen Yu #define R12_SCP2SPM_WAKEUP_B BIT(11) 122*fb57af70SWenzhen Yu #define R12_ADSP2SPM_WAKEUP_B BIT(12) 123*fb57af70SWenzhen Yu #define R12_PCM_WDT_WAKEUP_B BIT(13) 124*fb57af70SWenzhen Yu #define R12_USB0_CDSC_B BIT(14) 125*fb57af70SWenzhen Yu #define R12_USB0_POWERDWN_B BIT(15) 126*fb57af70SWenzhen Yu #define R12_UART_EVENT_B BIT(16) 127*fb57af70SWenzhen Yu #define R12_DEBUGTOP_FLAG_IRQ_B BIT(17) 128*fb57af70SWenzhen Yu #define R12_SYS_TIMER_EVENT_B BIT(18) 129*fb57af70SWenzhen Yu #define R12_EINT_EVENT_SECURE_B BIT(19) 130*fb57af70SWenzhen Yu #define R12_AFE_IRQ_MCU_B BIT(20) 131*fb57af70SWenzhen Yu #define R12_THERM_CTRL_EVENT_B BIT(21) 132*fb57af70SWenzhen Yu #define R12_SYS_CIRQ_IRQ_B BIT(22) 133*fb57af70SWenzhen Yu #define R12_PBUS_EVENT_B BIT(23) 134*fb57af70SWenzhen Yu #define R12_CSYSPWREQ_B BIT(24) 135*fb57af70SWenzhen Yu #define R12_MD_WDT_B BIT(25) 136*fb57af70SWenzhen Yu #define R12_AP2AP_PEER_WAKEUP_B BIT(26) 137*fb57af70SWenzhen Yu #define R12_SEJ_B BIT(27) 138*fb57af70SWenzhen Yu #define R12_CPU_WAKEUP BIT(28) 139*fb57af70SWenzhen Yu #define R12_APUSYS_WAKE_HOST_B BIT(29) 140*fb57af70SWenzhen Yu #define R12_PCIE_WAKE_B BIT(30) 141*fb57af70SWenzhen Yu #define R12_MSDC_WAKE_B BIT(31) 142*fb57af70SWenzhen Yu 143*fb57af70SWenzhen Yu #define EVENT_F26M_WAKE BIT(0) 144*fb57af70SWenzhen Yu #define EVENT_F26M_SLEEP BIT(1) 145*fb57af70SWenzhen Yu #define EVENT_INFRA_WAKE BIT(2) 146*fb57af70SWenzhen Yu #define EVENT_INFRA_SLEEP BIT(3) 147*fb57af70SWenzhen Yu #define EVENT_EMI_WAKE BIT(4) 148*fb57af70SWenzhen Yu #define EVENT_EMI_SLEEP BIT(5) 149*fb57af70SWenzhen Yu #define EVENT_APSRC_WAKE BIT(6) 150*fb57af70SWenzhen Yu #define EVENT_APSRC_SLEEP BIT(7) 151*fb57af70SWenzhen Yu #define EVENT_VRF18_WAKE BIT(8) 152*fb57af70SWenzhen Yu #define EVENT_VRF18_SLEEP BIT(9) 153*fb57af70SWenzhen Yu #define EVENT_DVFS_WAKE BIT(10) 154*fb57af70SWenzhen Yu #define EVENT_DDREN_WAKE BIT(11) 155*fb57af70SWenzhen Yu #define EVENT_DDREN_SLEEP BIT(12) 156*fb57af70SWenzhen Yu #define EVENT_VCORE_WAKE BIT(13) 157*fb57af70SWenzhen Yu #define EVENT_VCORE_SLEEP BIT(14) 158*fb57af70SWenzhen Yu #define EVENT_PMIC_WAKE BIT(15) 159*fb57af70SWenzhen Yu #define EVENT_PMIC_SLEEP BIT(16) 160*fb57af70SWenzhen Yu #define EVENT_CPUEB_STATE BIT(17) 161*fb57af70SWenzhen Yu #define EVENT_SSPM_STATE BIT(18) 162*fb57af70SWenzhen Yu #define EVENT_DPM_STATE BIT(19) 163*fb57af70SWenzhen Yu #define EVENT_SPM_LEAVE_VCORE_OFF_ACK BIT(20) 164*fb57af70SWenzhen Yu #define EVENT_SW_SSPM_ADSP_SCP_MAILBOX_WAKE BIT(21) 165*fb57af70SWenzhen Yu #define EVENT_SPM_LEAVE_SUSPEND_ACK BIT(22) 166*fb57af70SWenzhen Yu #define EVENT_SPM_LEAVE_DEEPIDLE_ACK BIT(23) 167*fb57af70SWenzhen Yu #define EVENT_CROSS_REQ_APU_l3 BIT(24) 168*fb57af70SWenzhen Yu #define EVENT_DFD_SOC_MTCMOS_REQ_IPIC_WAKE BIT(25) 169*fb57af70SWenzhen Yu #define EVENT_AOVBUS_WAKE BIT(26) 170*fb57af70SWenzhen Yu #define EVENT_AOVBUS_SLEEP BIT(27) 171*fb57af70SWenzhen Yu 172*fb57af70SWenzhen Yu enum SPM_WAKE_SRC_LIST { 173*fb57af70SWenzhen Yu WAKE_SRC_STA1_PCM_TIMER = BIT(0), 174*fb57af70SWenzhen Yu WAKE_SRC_STA1_TWAM_PMSR_DVFSRC = BIT(1), 175*fb57af70SWenzhen Yu WAKE_SRC_STA1_KP_IRQ_B = BIT(2), 176*fb57af70SWenzhen Yu WAKE_SRC_STA1_APWDT_EVENT_B = BIT(3), 177*fb57af70SWenzhen Yu WAKE_SRC_STA1_APXGPT1_EVENT_B = BIT(4), 178*fb57af70SWenzhen Yu WAKE_SRC_STA1_CONN2AP_SPM_WAKEUP_B = BIT(5), 179*fb57af70SWenzhen Yu WAKE_SRC_STA1_EINT_EVENT_B = BIT(6), 180*fb57af70SWenzhen Yu WAKE_SRC_STA1_CONN_WDT_IRQ_B = BIT(7), 181*fb57af70SWenzhen Yu WAKE_SRC_STA1_CCIF0_EVENT_B = BIT(8), 182*fb57af70SWenzhen Yu WAKE_SRC_STA1_CCIF1_EVENT_B = BIT(9), 183*fb57af70SWenzhen Yu WAKE_SRC_STA1_SC_SSPM2SPM_WAKEUP_B = BIT(10), 184*fb57af70SWenzhen Yu WAKE_SRC_STA1_SC_SCP2SPM_WAKEUP_B = BIT(11), 185*fb57af70SWenzhen Yu WAKE_SRC_STA1_SC_ADSP2SPM_WAKEUP_B = BIT(12), 186*fb57af70SWenzhen Yu WAKE_SRC_STA1_PCM_WDT_WAKEUP_B = BIT(13), 187*fb57af70SWenzhen Yu WAKE_SRC_STA1_USB_CDSC_B = BIT(14), 188*fb57af70SWenzhen Yu WAKE_SRC_STA1_USB_POWERDWN_B = BIT(15), 189*fb57af70SWenzhen Yu WAKE_SRC_STA1_AP_UART_B = BIT(16), 190*fb57af70SWenzhen Yu WAKE_SRC_STA1_DEBUGTOP_FLAG_IRQ_B = BIT(17), 191*fb57af70SWenzhen Yu WAKE_SRC_STA1_SYS_TIMER_EVENT_B = BIT(18), 192*fb57af70SWenzhen Yu WAKE_SRC_STA1_EINT_EVENT_SECURE_B = BIT(19), 193*fb57af70SWenzhen Yu WAKE_SRC_STA1_AFE_IRQ_MCU_B = BIT(20), 194*fb57af70SWenzhen Yu WAKE_SRC_STA1_THERM_CTRL_EVENT_B = BIT(21), 195*fb57af70SWenzhen Yu WAKE_SRC_STA1_SYS_CIRQ_IRQ_B = BIT(22), 196*fb57af70SWenzhen Yu WAKE_SRC_STA1_PBUS_EVENT_B = BIT(23), 197*fb57af70SWenzhen Yu WAKE_SRC_STA1_CSYSPWREQ_B = BIT(24), 198*fb57af70SWenzhen Yu WAKE_SRC_STA1_MD1_WDT_B = BIT(25), 199*fb57af70SWenzhen Yu WAKE_SRC_STA1_AP2AP_PEER_WAKEUPEVENT_B = BIT(26), 200*fb57af70SWenzhen Yu WAKE_SRC_STA1_SEJ_EVENT_B = BIT(27), 201*fb57af70SWenzhen Yu WAKE_SRC_STA1_SPM_CPU_WAKEUPEVENT_B = BIT(28), 202*fb57af70SWenzhen Yu WAKE_SRC_STA1_APUSYS_WAKE_HOST_B = BIT(29), 203*fb57af70SWenzhen Yu WAKE_SRC_STA1_PCIE_B = BIT(30), 204*fb57af70SWenzhen Yu WAKE_SRC_STA1_MSDC_B = BIT(31), 205*fb57af70SWenzhen Yu }; 206*fb57af70SWenzhen Yu 207*fb57af70SWenzhen Yu extern const char *wakesrc_str[32]; 208*fb57af70SWenzhen Yu 209*fb57af70SWenzhen Yu #endif /* PCM_DEF_H */ 210