16fba6e04STony Xie /* 26fba6e04STony Xie * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 36fba6e04STony Xie * 46fba6e04STony Xie * Redistribution and use in source and binary forms, with or without 56fba6e04STony Xie * modification, are permitted provided that the following conditions are met: 66fba6e04STony Xie * 76fba6e04STony Xie * Redistributions of source code must retain the above copyright notice, this 86fba6e04STony Xie * list of conditions and the following disclaimer. 96fba6e04STony Xie * 106fba6e04STony Xie * Redistributions in binary form must reproduce the above copyright notice, 116fba6e04STony Xie * this list of conditions and the following disclaimer in the documentation 126fba6e04STony Xie * and/or other materials provided with the distribution. 136fba6e04STony Xie * 146fba6e04STony Xie * Neither the name of ARM nor the names of its contributors may be used 156fba6e04STony Xie * to endorse or promote products derived from this software without specific 166fba6e04STony Xie * prior written permission. 176fba6e04STony Xie * 186fba6e04STony Xie * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 196fba6e04STony Xie * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 206fba6e04STony Xie * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 216fba6e04STony Xie * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 226fba6e04STony Xie * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 236fba6e04STony Xie * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 246fba6e04STony Xie * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 256fba6e04STony Xie * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 266fba6e04STony Xie * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 276fba6e04STony Xie * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 286fba6e04STony Xie * POSSIBILITY OF SUCH DAMAGE. 296fba6e04STony Xie */ 306fba6e04STony Xie 316fba6e04STony Xie #ifndef __PMU_H__ 326fba6e04STony Xie #define __PMU_H__ 336fba6e04STony Xie 34*9c68748eSCaesar Wang #include <pmu_regs.h> 35*9c68748eSCaesar Wang 366fba6e04STony Xie /* Allocate sp reginon in pmusram */ 376fba6e04STony Xie #define PSRAM_SP_SIZE 0x80 386fba6e04STony Xie #define PSRAM_SP_BOTTOM (PSRAM_SP_TOP - PSRAM_SP_SIZE) 396fba6e04STony Xie 406fba6e04STony Xie /***************************************************************************** 416fba6e04STony Xie * Common define for per soc pmu.h 426fba6e04STony Xie *****************************************************************************/ 436fba6e04STony Xie /* The ways of cores power domain contorlling */ 446fba6e04STony Xie enum cores_pm_ctr_mode { 456fba6e04STony Xie core_pwr_pd = 0, 466fba6e04STony Xie core_pwr_wfi = 1, 476fba6e04STony Xie core_pwr_wfi_int = 2 486fba6e04STony Xie }; 496fba6e04STony Xie 506fba6e04STony Xie /***************************************************************************** 516fba6e04STony Xie * pmu con,reg 526fba6e04STony Xie *****************************************************************************/ 536fba6e04STony Xie #define PMU_WKUP_CFG(n) ((n) * 4) 546fba6e04STony Xie 556fba6e04STony Xie #define PMU_CORE_PM_CON(cpu) (0xc0 + (cpu * 4)) 566fba6e04STony Xie 576fba6e04STony Xie /* the shift of bits for cores status */ 586fba6e04STony Xie enum pmu_core_pwrst_shift { 596fba6e04STony Xie clstl_cpu_wfe = 2, 606fba6e04STony Xie clstl_cpu_wfi = 6, 616fba6e04STony Xie clstb_cpu_wfe = 12, 626fba6e04STony Xie clstb_cpu_wfi = 16 636fba6e04STony Xie }; 646fba6e04STony Xie 656fba6e04STony Xie #define CKECK_WFE_MSK 0x1 666fba6e04STony Xie #define CKECK_WFI_MSK 0x10 676fba6e04STony Xie #define CKECK_WFEI_MSK 0x11 686fba6e04STony Xie 696fba6e04STony Xie enum pmu_powerdomain_id { 706fba6e04STony Xie PD_CPUL0 = 0, 716fba6e04STony Xie PD_CPUL1, 726fba6e04STony Xie PD_CPUL2, 736fba6e04STony Xie PD_CPUL3, 746fba6e04STony Xie PD_CPUB0, 756fba6e04STony Xie PD_CPUB1, 766fba6e04STony Xie PD_SCUL, 776fba6e04STony Xie PD_SCUB, 786fba6e04STony Xie PD_TCPD0, 796fba6e04STony Xie PD_TCPD1, 806fba6e04STony Xie PD_CCI, 816fba6e04STony Xie PD_PERILP, 826fba6e04STony Xie PD_PERIHP, 836fba6e04STony Xie PD_CENTER, 846fba6e04STony Xie PD_VIO, 856fba6e04STony Xie PD_GPU, 866fba6e04STony Xie PD_VCODEC, 876fba6e04STony Xie PD_VDU, 886fba6e04STony Xie PD_RGA, 896fba6e04STony Xie PD_IEP, 906fba6e04STony Xie PD_VO, 916fba6e04STony Xie PD_ISP0 = 22, 926fba6e04STony Xie PD_ISP1, 936fba6e04STony Xie PD_HDCP, 946fba6e04STony Xie PD_GMAC, 956fba6e04STony Xie PD_EMMC, 966fba6e04STony Xie PD_USB3, 976fba6e04STony Xie PD_EDP, 986fba6e04STony Xie PD_GIC, 996fba6e04STony Xie PD_SD, 1006fba6e04STony Xie PD_SDIOAUDIO, 1016fba6e04STony Xie PD_END 1026fba6e04STony Xie }; 1036fba6e04STony Xie 1046fba6e04STony Xie enum powerdomain_state { 1056fba6e04STony Xie PMU_POWER_ON = 0, 1066fba6e04STony Xie PMU_POWER_OFF, 1076fba6e04STony Xie }; 1086fba6e04STony Xie 1096fba6e04STony Xie enum pmu_bus_id { 1106fba6e04STony Xie BUS_ID_GPU = 0, 1116fba6e04STony Xie BUS_ID_PERILP, 1126fba6e04STony Xie BUS_ID_PERIHP, 1136fba6e04STony Xie BUS_ID_VCODEC, 1146fba6e04STony Xie BUS_ID_VDU, 1156fba6e04STony Xie BUS_ID_RGA, 1166fba6e04STony Xie BUS_ID_IEP, 1176fba6e04STony Xie BUS_ID_VOPB, 1186fba6e04STony Xie BUS_ID_VOPL, 1196fba6e04STony Xie BUS_ID_ISP0, 1206fba6e04STony Xie BUS_ID_ISP1, 1216fba6e04STony Xie BUS_ID_HDCP, 1226fba6e04STony Xie BUS_ID_USB3, 1236fba6e04STony Xie BUS_ID_PERILPM0, 1246fba6e04STony Xie BUS_ID_CENTER, 1256fba6e04STony Xie BUS_ID_CCIM0, 1266fba6e04STony Xie BUS_ID_CCIM1, 1276fba6e04STony Xie BUS_ID_VIO, 1286fba6e04STony Xie BUS_ID_MSCH0, 1296fba6e04STony Xie BUS_ID_MSCH1, 1306fba6e04STony Xie BUS_ID_ALIVE, 1316fba6e04STony Xie BUS_ID_PMU, 1326fba6e04STony Xie BUS_ID_EDP, 1336fba6e04STony Xie BUS_ID_GMAC, 1346fba6e04STony Xie BUS_ID_EMMC, 1356fba6e04STony Xie BUS_ID_CENTER1, 1366fba6e04STony Xie BUS_ID_PMUM0, 1376fba6e04STony Xie BUS_ID_GIC, 1386fba6e04STony Xie BUS_ID_SD, 1396fba6e04STony Xie BUS_ID_SDIOAUDIO, 1406fba6e04STony Xie }; 1416fba6e04STony Xie 1426fba6e04STony Xie enum pmu_bus_state { 1436fba6e04STony Xie BUS_ACTIVE, 1446fba6e04STony Xie BUS_IDLE, 1456fba6e04STony Xie }; 1466fba6e04STony Xie 1476fba6e04STony Xie /* pmu_cpuapm bit */ 1486fba6e04STony Xie enum pmu_cores_pm_by_wfi { 1496fba6e04STony Xie core_pm_en = 0, 1506fba6e04STony Xie core_pm_int_wakeup_en, 1516fba6e04STony Xie core_pm_resv, 1526fba6e04STony Xie core_pm_sft_wakeup_en 1536fba6e04STony Xie }; 1546fba6e04STony Xie 1556fba6e04STony Xie enum pmu_wkup_cfg0 { 1566fba6e04STony Xie PMU_GPIO0A_POSE_WKUP_EN = 0, 1576fba6e04STony Xie PMU_GPIO0B_POSE_WKUP_EN = 8, 1586fba6e04STony Xie PMU_GPIO0C_POSE_WKUP_EN = 16, 1596fba6e04STony Xie PMU_GPIO0D_POSE_WKUP_EN = 24, 1606fba6e04STony Xie }; 1616fba6e04STony Xie 1626fba6e04STony Xie enum pmu_wkup_cfg1 { 1636fba6e04STony Xie PMU_GPIO0A_NEGEDGE_WKUP_EN = 0, 1646fba6e04STony Xie PMU_GPIO0B_NEGEDGE_WKUP_EN = 7, 1656fba6e04STony Xie PMU_GPIO0C_NEGEDGE_WKUP_EN = 16, 1666fba6e04STony Xie PMU_GPIO0D_NEGEDGE_WKUP_EN = 24, 1676fba6e04STony Xie }; 1686fba6e04STony Xie 1696fba6e04STony Xie enum pmu_wkup_cfg2 { 1706fba6e04STony Xie PMU_GPIO1A_POSE_WKUP_EN = 0, 1716fba6e04STony Xie PMU_GPIO1B_POSE_WKUP_EN = 7, 1726fba6e04STony Xie PMU_GPIO1C_POSE_WKUP_EN = 16, 1736fba6e04STony Xie PMU_GPIO1D_POSE_WKUP_EN = 24, 1746fba6e04STony Xie }; 1756fba6e04STony Xie 1766fba6e04STony Xie enum pmu_wkup_cfg3 { 1776fba6e04STony Xie PMU_GPIO1A_NEGEDGE_WKUP_EN = 0, 1786fba6e04STony Xie PMU_GPIO1B_NEGEDGE_WKUP_EN = 7, 1796fba6e04STony Xie PMU_GPIO1C_NEGEDGE_WKUP_EN = 16, 1806fba6e04STony Xie PMU_GPIO1D_NEGEDGE_WKUP_EN = 24, 1816fba6e04STony Xie }; 1826fba6e04STony Xie 1836fba6e04STony Xie /* pmu_wkup_cfg4 */ 1846fba6e04STony Xie enum pmu_wkup_cfg4 { 1856fba6e04STony Xie PMU_CLUSTER_L_WKUP_EN = 0, 1866fba6e04STony Xie PMU_CLUSTER_B_WKUP_EN, 1876fba6e04STony Xie PMU_GPIO_WKUP_EN, 1886fba6e04STony Xie PMU_SDIO_WKUP_EN, 1896fba6e04STony Xie 1906fba6e04STony Xie PMU_SDMMC_WKUP_EN, 1916fba6e04STony Xie PMU_TIMER_WKUP_EN = 6, 1926fba6e04STony Xie PMU_USBDEV_WKUP_EN, 1936fba6e04STony Xie 1946fba6e04STony Xie PMU_SFT_WKUP_EN, 1956fba6e04STony Xie PMU_M0_WDT_WKUP_EN, 1966fba6e04STony Xie PMU_TIMEOUT_WKUP_EN, 1976fba6e04STony Xie PMU_PWM_WKUP_EN, 1986fba6e04STony Xie 1996fba6e04STony Xie PMU_PCIE_WKUP_EN = 13, 2006fba6e04STony Xie }; 2016fba6e04STony Xie 2026fba6e04STony Xie enum pmu_pwrdn_con { 2036fba6e04STony Xie PMU_A53_L0_PWRDWN_EN = 0, 2046fba6e04STony Xie PMU_A53_L1_PWRDWN_EN, 2056fba6e04STony Xie PMU_A53_L2_PWRDWN_EN, 2066fba6e04STony Xie PMU_A53_L3_PWRDWN_EN, 2076fba6e04STony Xie 2086fba6e04STony Xie PMU_A72_B0_PWRDWN_EN, 2096fba6e04STony Xie PMU_A72_B1_PWRDWN_EN, 2106fba6e04STony Xie PMU_SCU_L_PWRDWN_EN, 2116fba6e04STony Xie PMU_SCU_B_PWRDWN_EN, 2126fba6e04STony Xie 2136fba6e04STony Xie PMU_TCPD0_PWRDWN_EN, 2146fba6e04STony Xie PMU_TCPD1_PWRDWN_EN, 2156fba6e04STony Xie PMU_CCI_PWRDWN_EN, 2166fba6e04STony Xie PMU_PERILP_PWRDWN_EN, 2176fba6e04STony Xie 2186fba6e04STony Xie PMU_PERIHP_PWRDWN_EN, 2196fba6e04STony Xie PMU_CENTER_PWRDWN_EN, 2206fba6e04STony Xie PMU_VIO_PWRDWN_EN, 2216fba6e04STony Xie PMU_GPU_PWRDWN_EN, 2226fba6e04STony Xie 2236fba6e04STony Xie PMU_VCODEC_PWRDWN_EN, 2246fba6e04STony Xie PMU_VDU_PWRDWN_EN, 2256fba6e04STony Xie PMU_RGA_PWRDWN_EN, 2266fba6e04STony Xie PMU_IEP_PWRDWN_EN, 2276fba6e04STony Xie 2286fba6e04STony Xie PMU_VO_PWRDWN_EN, 2296fba6e04STony Xie PMU_ISP0_PWRDWN_EN = 22, 2306fba6e04STony Xie PMU_ISP1_PWRDWN_EN, 2316fba6e04STony Xie 2326fba6e04STony Xie PMU_HDCP_PWRDWN_EN, 2336fba6e04STony Xie PMU_GMAC_PWRDWN_EN, 2346fba6e04STony Xie PMU_EMMC_PWRDWN_EN, 2356fba6e04STony Xie PMU_USB3_PWRDWN_EN, 2366fba6e04STony Xie 2376fba6e04STony Xie PMU_EDP_PWRDWN_EN, 2386fba6e04STony Xie PMU_GIC_PWRDWN_EN, 2396fba6e04STony Xie PMU_SD_PWRDWN_EN, 2406fba6e04STony Xie PMU_SDIOAUDIO_PWRDWN_EN, 2416fba6e04STony Xie }; 2426fba6e04STony Xie 2436fba6e04STony Xie enum pmu_pwrdn_st { 2446fba6e04STony Xie PMU_A53_L0_PWRDWN_ST = 0, 2456fba6e04STony Xie PMU_A53_L1_PWRDWN_ST, 2466fba6e04STony Xie PMU_A53_L2_PWRDWN_ST, 2476fba6e04STony Xie PMU_A53_L3_PWRDWN_ST, 2486fba6e04STony Xie 2496fba6e04STony Xie PMU_A72_B0_PWRDWN_ST, 2506fba6e04STony Xie PMU_A72_B1_PWRDWN_ST, 2516fba6e04STony Xie PMU_SCU_L_PWRDWN_ST, 2526fba6e04STony Xie PMU_SCU_B_PWRDWN_ST, 2536fba6e04STony Xie 2546fba6e04STony Xie PMU_TCPD0_PWRDWN_ST, 2556fba6e04STony Xie PMU_TCPD1_PWRDWN_ST, 2566fba6e04STony Xie PMU_CCI_PWRDWN_ST, 2576fba6e04STony Xie PMU_PERILP_PWRDWN_ST, 2586fba6e04STony Xie 2596fba6e04STony Xie PMU_PERIHP_PWRDWN_ST, 2606fba6e04STony Xie PMU_CENTER_PWRDWN_ST, 2616fba6e04STony Xie PMU_VIO_PWRDWN_ST, 2626fba6e04STony Xie PMU_GPU_PWRDWN_ST, 2636fba6e04STony Xie 2646fba6e04STony Xie PMU_VCODEC_PWRDWN_ST, 2656fba6e04STony Xie PMU_VDU_PWRDWN_ST, 2666fba6e04STony Xie PMU_RGA_PWRDWN_ST, 2676fba6e04STony Xie PMU_IEP_PWRDWN_ST, 2686fba6e04STony Xie 2696fba6e04STony Xie PMU_VO_PWRDWN_ST, 2706fba6e04STony Xie PMU_ISP0_PWRDWN_ST = 22, 2716fba6e04STony Xie PMU_ISP1_PWRDWN_ST, 2726fba6e04STony Xie 2736fba6e04STony Xie PMU_HDCP_PWRDWN_ST, 2746fba6e04STony Xie PMU_GMAC_PWRDWN_ST, 2756fba6e04STony Xie PMU_EMMC_PWRDWN_ST, 2766fba6e04STony Xie PMU_USB3_PWRDWN_ST, 2776fba6e04STony Xie 2786fba6e04STony Xie PMU_EDP_PWRDWN_ST, 2796fba6e04STony Xie PMU_GIC_PWRDWN_ST, 2806fba6e04STony Xie PMU_SD_PWRDWN_ST, 2816fba6e04STony Xie PMU_SDIOAUDIO_PWRDWN_ST, 2826fba6e04STony Xie 2836fba6e04STony Xie }; 2846fba6e04STony Xie 2856fba6e04STony Xie enum pmu_pll_con { 2866fba6e04STony Xie PMU_PLL_PD_CFG = 0, 2876fba6e04STony Xie PMU_SFT_PLL_PD = 8, 2886fba6e04STony Xie }; 2896fba6e04STony Xie 2906fba6e04STony Xie enum pmu_pwermode_con { 2916fba6e04STony Xie PMU_PWR_MODE_EN = 0, 2926fba6e04STony Xie PMU_WKUP_RST_EN, 2936fba6e04STony Xie PMU_INPUT_CLAMP_EN, 2946fba6e04STony Xie PMU_OSC_DIS, 2956fba6e04STony Xie 2966fba6e04STony Xie PMU_ALIVE_USE_LF, 2976fba6e04STony Xie PMU_PMU_USE_LF, 2986fba6e04STony Xie PMU_POWER_OFF_REQ_CFG, 2996fba6e04STony Xie PMU_CHIP_PD_EN, 3006fba6e04STony Xie 3016fba6e04STony Xie PMU_PLL_PD_EN, 3026fba6e04STony Xie PMU_CPU0_PD_EN, 3036fba6e04STony Xie PMU_L2_FLUSH_EN, 3046fba6e04STony Xie PMU_L2_IDLE_EN, 3056fba6e04STony Xie 3066fba6e04STony Xie PMU_SCU_PD_EN, 3076fba6e04STony Xie PMU_CCI_PD_EN, 3086fba6e04STony Xie PMU_PERILP_PD_EN, 3096fba6e04STony Xie PMU_CENTER_PD_EN, 3106fba6e04STony Xie 3116fba6e04STony Xie PMU_SREF0_ENTER_EN, 3126fba6e04STony Xie PMU_DDRC0_GATING_EN, 3136fba6e04STony Xie PMU_DDRIO0_RET_EN, 3146fba6e04STony Xie PMU_DDRIO0_RET_DE_REQ, 3156fba6e04STony Xie 3166fba6e04STony Xie PMU_SREF1_ENTER_EN, 3176fba6e04STony Xie PMU_DDRC1_GATING_EN, 3186fba6e04STony Xie PMU_DDRIO1_RET_EN, 3196fba6e04STony Xie PMU_DDRIO1_RET_DE_REQ, 3206fba6e04STony Xie 3216fba6e04STony Xie PMU_CLK_CENTER_SRC_GATE_EN = 26, 3226fba6e04STony Xie PMU_CLK_PERILP_SRC_GATE_EN, 3236fba6e04STony Xie 3246fba6e04STony Xie PMU_CLK_CORE_SRC_GATE_EN, 3256fba6e04STony Xie PMU_DDRIO_RET_HW_DE_REQ, 3266fba6e04STony Xie PMU_SLP_OUTPUT_CFG, 3276fba6e04STony Xie PMU_MAIN_CLUSTER, 3286fba6e04STony Xie }; 3296fba6e04STony Xie 3306fba6e04STony Xie enum pmu_sft_con { 3316fba6e04STony Xie PMU_WKUP_SFT = 0, 3326fba6e04STony Xie PMU_INPUT_CLAMP_CFG, 3336fba6e04STony Xie PMU_OSC_DIS_CFG, 3346fba6e04STony Xie PMU_PMU_LF_EN_CFG, 3356fba6e04STony Xie 3366fba6e04STony Xie PMU_ALIVE_LF_EN_CFG, 3376fba6e04STony Xie PMU_24M_EN_CFG, 3386fba6e04STony Xie PMU_DBG_PWRUP_L0_CFG, 3396fba6e04STony Xie PMU_WKUP_SFT_M0, 3406fba6e04STony Xie 3416fba6e04STony Xie PMU_DDRCTL0_C_SYSREQ_CFG, 3426fba6e04STony Xie PMU_DDR0_IO_RET_CFG, 3436fba6e04STony Xie 3446fba6e04STony Xie PMU_DDRCTL1_C_SYSREQ_CFG = 12, 3456fba6e04STony Xie PMU_DDR1_IO_RET_CFG, 346f47a25ddSCaesar Wang DBG_PWRUP_B0_CFG = 15, 347f47a25ddSCaesar Wang 348f47a25ddSCaesar Wang DBG_NOPWERDWN_L0_EN, 349f47a25ddSCaesar Wang DBG_NOPWERDWN_L1_EN, 350f47a25ddSCaesar Wang DBG_NOPWERDWN_L2_EN, 351f47a25ddSCaesar Wang DBG_NOPWERDWN_L3_EN, 352f47a25ddSCaesar Wang 353f47a25ddSCaesar Wang DBG_PWRUP_REQ_L_EN = 20, 354f47a25ddSCaesar Wang CLUSTER_L_CLK_SRC_GATING_CFG, 355f47a25ddSCaesar Wang L2_FLUSH_REQ_CLUSTER_L, 356f47a25ddSCaesar Wang ACINACTM_CLUSTER_L_CFG, 357f47a25ddSCaesar Wang 358f47a25ddSCaesar Wang DBG_NO_PWERDWN_B0_EN, 359f47a25ddSCaesar Wang DBG_NO_PWERDWN_B1_EN, 360f47a25ddSCaesar Wang 361f47a25ddSCaesar Wang DBG_PWRUP_REQ_B_EN = 28, 362f47a25ddSCaesar Wang CLUSTER_B_CLK_SRC_GATING_CFG, 363f47a25ddSCaesar Wang L2_FLUSH_REQ_CLUSTER_B, 364f47a25ddSCaesar Wang ACINACTM_CLUSTER_B_CFG, 3656fba6e04STony Xie }; 3666fba6e04STony Xie 3676fba6e04STony Xie enum pmu_int_con { 3686fba6e04STony Xie PMU_PMU_INT_EN = 0, 3696fba6e04STony Xie PMU_PWRMD_WKUP_INT_EN, 3706fba6e04STony Xie PMU_WKUP_GPIO0_NEG_INT_EN, 3716fba6e04STony Xie PMU_WKUP_GPIO0_POS_INT_EN, 3726fba6e04STony Xie PMU_WKUP_GPIO1_NEG_INT_EN, 3736fba6e04STony Xie PMU_WKUP_GPIO1_POS_INT_EN, 3746fba6e04STony Xie }; 3756fba6e04STony Xie 3766fba6e04STony Xie enum pmu_int_st { 3776fba6e04STony Xie PMU_PWRMD_WKUP_INT_ST = 1, 3786fba6e04STony Xie PMU_WKUP_GPIO0_NEG_INT_ST, 3796fba6e04STony Xie PMU_WKUP_GPIO0_POS_INT_ST, 3806fba6e04STony Xie PMU_WKUP_GPIO1_NEG_INT_ST, 3816fba6e04STony Xie PMU_WKUP_GPIO1_POS_INT_ST, 3826fba6e04STony Xie }; 3836fba6e04STony Xie 3846fba6e04STony Xie enum pmu_gpio0_pos_int_con { 3856fba6e04STony Xie PMU_GPIO0A_POS_INT_EN = 0, 3866fba6e04STony Xie PMU_GPIO0B_POS_INT_EN = 8, 3876fba6e04STony Xie PMU_GPIO0C_POS_INT_EN = 16, 3886fba6e04STony Xie PMU_GPIO0D_POS_INT_EN = 24, 3896fba6e04STony Xie }; 3906fba6e04STony Xie 3916fba6e04STony Xie enum pmu_gpio0_neg_int_con { 3926fba6e04STony Xie PMU_GPIO0A_NEG_INT_EN = 0, 3936fba6e04STony Xie PMU_GPIO0B_NEG_INT_EN = 8, 3946fba6e04STony Xie PMU_GPIO0C_NEG_INT_EN = 16, 3956fba6e04STony Xie PMU_GPIO0D_NEG_INT_EN = 24, 3966fba6e04STony Xie }; 3976fba6e04STony Xie 3986fba6e04STony Xie enum pmu_gpio1_pos_int_con { 3996fba6e04STony Xie PMU_GPIO1A_POS_INT_EN = 0, 4006fba6e04STony Xie PMU_GPIO1B_POS_INT_EN = 8, 4016fba6e04STony Xie PMU_GPIO1C_POS_INT_EN = 16, 4026fba6e04STony Xie PMU_GPIO1D_POS_INT_EN = 24, 4036fba6e04STony Xie }; 4046fba6e04STony Xie 4056fba6e04STony Xie enum pmu_gpio1_neg_int_con { 4066fba6e04STony Xie PMU_GPIO1A_NEG_INT_EN = 0, 4076fba6e04STony Xie PMU_GPIO1B_NEG_INT_EN = 8, 4086fba6e04STony Xie PMU_GPIO1C_NEG_INT_EN = 16, 4096fba6e04STony Xie PMU_GPIO1D_NEG_INT_EN = 24, 4106fba6e04STony Xie }; 4116fba6e04STony Xie 4126fba6e04STony Xie enum pmu_gpio0_pos_int_st { 4136fba6e04STony Xie PMU_GPIO0A_POS_INT_ST = 0, 4146fba6e04STony Xie PMU_GPIO0B_POS_INT_ST = 8, 4156fba6e04STony Xie PMU_GPIO0C_POS_INT_ST = 16, 4166fba6e04STony Xie PMU_GPIO0D_POS_INT_ST = 24, 4176fba6e04STony Xie }; 4186fba6e04STony Xie 4196fba6e04STony Xie enum pmu_gpio0_neg_int_st { 4206fba6e04STony Xie PMU_GPIO0A_NEG_INT_ST = 0, 4216fba6e04STony Xie PMU_GPIO0B_NEG_INT_ST = 8, 4226fba6e04STony Xie PMU_GPIO0C_NEG_INT_ST = 16, 4236fba6e04STony Xie PMU_GPIO0D_NEG_INT_ST = 24, 4246fba6e04STony Xie }; 4256fba6e04STony Xie 4266fba6e04STony Xie enum pmu_gpio1_pos_int_st { 4276fba6e04STony Xie PMU_GPIO1A_POS_INT_ST = 0, 4286fba6e04STony Xie PMU_GPIO1B_POS_INT_ST = 8, 4296fba6e04STony Xie PMU_GPIO1C_POS_INT_ST = 16, 4306fba6e04STony Xie PMU_GPIO1D_POS_INT_ST = 24, 4316fba6e04STony Xie }; 4326fba6e04STony Xie 4336fba6e04STony Xie enum pmu_gpio1_neg_int_st { 4346fba6e04STony Xie PMU_GPIO1A_NEG_INT_ST = 0, 4356fba6e04STony Xie PMU_GPIO1B_NEG_INT_ST = 8, 4366fba6e04STony Xie PMU_GPIO1C_NEG_INT_ST = 16, 4376fba6e04STony Xie PMU_GPIO1D_NEG_INT_ST = 24, 4386fba6e04STony Xie }; 4396fba6e04STony Xie 4406fba6e04STony Xie /* pmu power down configure register 0x0050 */ 4416fba6e04STony Xie enum pmu_pwrdn_inten { 4426fba6e04STony Xie PMU_A53_L0_PWR_SWITCH_INT_EN = 0, 4436fba6e04STony Xie PMU_A53_L1_PWR_SWITCH_INT_EN, 4446fba6e04STony Xie PMU_A53_L2_PWR_SWITCH_INT_EN, 4456fba6e04STony Xie PMU_A53_L3_PWR_SWITCH_INT_EN, 4466fba6e04STony Xie 4476fba6e04STony Xie PMU_A72_B0_PWR_SWITCH_INT_EN, 4486fba6e04STony Xie PMU_A72_B1_PWR_SWITCH_INT_EN, 4496fba6e04STony Xie PMU_SCU_L_PWR_SWITCH_INT_EN, 4506fba6e04STony Xie PMU_SCU_B_PWR_SWITCH_INT_EN, 4516fba6e04STony Xie 4526fba6e04STony Xie PMU_TCPD0_PWR_SWITCH_INT_EN, 4536fba6e04STony Xie PMU_TCPD1_PWR_SWITCH_INT_EN, 4546fba6e04STony Xie PMU_CCI_PWR_SWITCH_INT_EN, 4556fba6e04STony Xie PMU_PERILP_PWR_SWITCH_INT_EN, 4566fba6e04STony Xie 4576fba6e04STony Xie PMU_PERIHP_PWR_SWITCH_INT_EN, 4586fba6e04STony Xie PMU_CENTER_PWR_SWITCH_INT_EN, 4596fba6e04STony Xie PMU_VIO_PWR_SWITCH_INT_EN, 4606fba6e04STony Xie PMU_GPU_PWR_SWITCH_INT_EN, 4616fba6e04STony Xie 4626fba6e04STony Xie PMU_VCODEC_PWR_SWITCH_INT_EN, 4636fba6e04STony Xie PMU_VDU_PWR_SWITCH_INT_EN, 4646fba6e04STony Xie PMU_RGA_PWR_SWITCH_INT_EN, 4656fba6e04STony Xie PMU_IEP_PWR_SWITCH_INT_EN, 4666fba6e04STony Xie 4676fba6e04STony Xie PMU_VO_PWR_SWITCH_INT_EN, 4686fba6e04STony Xie PMU_ISP0_PWR_SWITCH_INT_EN = 22, 4696fba6e04STony Xie PMU_ISP1_PWR_SWITCH_INT_EN, 4706fba6e04STony Xie 4716fba6e04STony Xie PMU_HDCP_PWR_SWITCH_INT_EN, 4726fba6e04STony Xie PMU_GMAC_PWR_SWITCH_INT_EN, 4736fba6e04STony Xie PMU_EMMC_PWR_SWITCH_INT_EN, 4746fba6e04STony Xie PMU_USB3_PWR_SWITCH_INT_EN, 4756fba6e04STony Xie 4766fba6e04STony Xie PMU_EDP_PWR_SWITCH_INT_EN, 4776fba6e04STony Xie PMU_GIC_PWR_SWITCH_INT_EN, 4786fba6e04STony Xie PMU_SD_PWR_SWITCH_INT_EN, 4796fba6e04STony Xie PMU_SDIOAUDIO_PWR_SWITCH_INT_EN, 4806fba6e04STony Xie }; 4816fba6e04STony Xie 4826fba6e04STony Xie enum pmu_wkup_status { 4836fba6e04STony Xie PMU_WKUP_BY_CLSTER_L_INT = 0, 4846fba6e04STony Xie PMU_WKUP_BY_CLSTER_b_INT, 4856fba6e04STony Xie PMU_WKUP_BY_GPIO_INT, 4866fba6e04STony Xie PMU_WKUP_BY_SDIO_DET, 4876fba6e04STony Xie 4886fba6e04STony Xie PMU_WKUP_BY_SDMMC_DET, 4896fba6e04STony Xie PMU_WKUP_BY_TIMER = 6, 4906fba6e04STony Xie PMU_WKUP_BY_USBDEV_DET, 4916fba6e04STony Xie 4926fba6e04STony Xie PMU_WKUP_BY_M0_SFT, 4936fba6e04STony Xie PMU_WKUP_BY_M0_WDT_INT, 4946fba6e04STony Xie PMU_WKUP_BY_TIMEOUT, 4956fba6e04STony Xie PMU_WKUP_BY_PWM, 4966fba6e04STony Xie 4976fba6e04STony Xie PMU_WKUP_BY_PCIE = 13, 4986fba6e04STony Xie }; 4996fba6e04STony Xie 5006fba6e04STony Xie enum pmu_bus_clr { 5016fba6e04STony Xie PMU_CLR_GPU = 0, 5026fba6e04STony Xie PMU_CLR_PERILP, 5036fba6e04STony Xie PMU_CLR_PERIHP, 5046fba6e04STony Xie PMU_CLR_VCODEC, 5056fba6e04STony Xie 5066fba6e04STony Xie PMU_CLR_VDU, 5076fba6e04STony Xie PMU_CLR_RGA, 5086fba6e04STony Xie PMU_CLR_IEP, 5096fba6e04STony Xie PMU_CLR_VOPB, 5106fba6e04STony Xie 5116fba6e04STony Xie PMU_CLR_VOPL, 5126fba6e04STony Xie PMU_CLR_ISP0, 5136fba6e04STony Xie PMU_CLR_ISP1, 5146fba6e04STony Xie PMU_CLR_HDCP, 5156fba6e04STony Xie 5166fba6e04STony Xie PMU_CLR_USB3, 5176fba6e04STony Xie PMU_CLR_PERILPM0, 5186fba6e04STony Xie PMU_CLR_CENTER, 5196fba6e04STony Xie PMU_CLR_CCIM1, 5206fba6e04STony Xie 5216fba6e04STony Xie PMU_CLR_CCIM0, 5226fba6e04STony Xie PMU_CLR_VIO, 5236fba6e04STony Xie PMU_CLR_MSCH0, 5246fba6e04STony Xie PMU_CLR_MSCH1, 5256fba6e04STony Xie 5266fba6e04STony Xie PMU_CLR_ALIVE, 5276fba6e04STony Xie PMU_CLR_PMU, 5286fba6e04STony Xie PMU_CLR_EDP, 5296fba6e04STony Xie PMU_CLR_GMAC, 5306fba6e04STony Xie 5316fba6e04STony Xie PMU_CLR_EMMC, 5326fba6e04STony Xie PMU_CLR_CENTER1, 5336fba6e04STony Xie PMU_CLR_PMUM0, 5346fba6e04STony Xie PMU_CLR_GIC, 5356fba6e04STony Xie 5366fba6e04STony Xie PMU_CLR_SD, 5376fba6e04STony Xie PMU_CLR_SDIOAUDIO, 5386fba6e04STony Xie }; 5396fba6e04STony Xie 5406fba6e04STony Xie /* PMU bus idle request register */ 5416fba6e04STony Xie enum pmu_bus_idle_req { 5426fba6e04STony Xie PMU_IDLE_REQ_GPU = 0, 5436fba6e04STony Xie PMU_IDLE_REQ_PERILP, 5446fba6e04STony Xie PMU_IDLE_REQ_PERIHP, 5456fba6e04STony Xie PMU_IDLE_REQ_VCODEC, 5466fba6e04STony Xie 5476fba6e04STony Xie PMU_IDLE_REQ_VDU, 5486fba6e04STony Xie PMU_IDLE_REQ_RGA, 5496fba6e04STony Xie PMU_IDLE_REQ_IEP, 5506fba6e04STony Xie PMU_IDLE_REQ_VOPB, 5516fba6e04STony Xie 5526fba6e04STony Xie PMU_IDLE_REQ_VOPL, 5536fba6e04STony Xie PMU_IDLE_REQ_ISP0, 5546fba6e04STony Xie PMU_IDLE_REQ_ISP1, 5556fba6e04STony Xie PMU_IDLE_REQ_HDCP, 5566fba6e04STony Xie 5576fba6e04STony Xie PMU_IDLE_REQ_USB3, 5586fba6e04STony Xie PMU_IDLE_REQ_PERILPM0, 5596fba6e04STony Xie PMU_IDLE_REQ_CENTER, 5606fba6e04STony Xie PMU_IDLE_REQ_CCIM0, 5616fba6e04STony Xie 5626fba6e04STony Xie PMU_IDLE_REQ_CCIM1, 5636fba6e04STony Xie PMU_IDLE_REQ_VIO, 5646fba6e04STony Xie PMU_IDLE_REQ_MSCH0, 5656fba6e04STony Xie PMU_IDLE_REQ_MSCH1, 5666fba6e04STony Xie 5676fba6e04STony Xie PMU_IDLE_REQ_ALIVE, 5686fba6e04STony Xie PMU_IDLE_REQ_PMU, 5696fba6e04STony Xie PMU_IDLE_REQ_EDP, 5706fba6e04STony Xie PMU_IDLE_REQ_GMAC, 5716fba6e04STony Xie 5726fba6e04STony Xie PMU_IDLE_REQ_EMMC, 5736fba6e04STony Xie PMU_IDLE_REQ_CENTER1, 5746fba6e04STony Xie PMU_IDLE_REQ_PMUM0, 5756fba6e04STony Xie PMU_IDLE_REQ_GIC, 5766fba6e04STony Xie 5776fba6e04STony Xie PMU_IDLE_REQ_SD, 5786fba6e04STony Xie PMU_IDLE_REQ_SDIOAUDIO, 5796fba6e04STony Xie }; 5806fba6e04STony Xie 5816fba6e04STony Xie /* pmu bus idle status register */ 5826fba6e04STony Xie enum pmu_bus_idle_st { 5836fba6e04STony Xie PMU_IDLE_ST_GPU = 0, 5846fba6e04STony Xie PMU_IDLE_ST_PERILP, 5856fba6e04STony Xie PMU_IDLE_ST_PERIHP, 5866fba6e04STony Xie PMU_IDLE_ST_VCODEC, 5876fba6e04STony Xie 5886fba6e04STony Xie PMU_IDLE_ST_VDU, 5896fba6e04STony Xie PMU_IDLE_ST_RGA, 5906fba6e04STony Xie PMU_IDLE_ST_IEP, 5916fba6e04STony Xie PMU_IDLE_ST_VOPB, 5926fba6e04STony Xie 5936fba6e04STony Xie PMU_IDLE_ST_VOPL, 5946fba6e04STony Xie PMU_IDLE_ST_ISP0, 5956fba6e04STony Xie PMU_IDLE_ST_ISP1, 5966fba6e04STony Xie PMU_IDLE_ST_HDCP, 5976fba6e04STony Xie 5986fba6e04STony Xie PMU_IDLE_ST_USB3, 5996fba6e04STony Xie PMU_IDLE_ST_PERILPM0, 6006fba6e04STony Xie PMU_IDLE_ST_CENTER, 6016fba6e04STony Xie PMU_IDLE_ST_CCIM0, 6026fba6e04STony Xie 6036fba6e04STony Xie PMU_IDLE_ST_CCIM1, 6046fba6e04STony Xie PMU_IDLE_ST_VIO, 6056fba6e04STony Xie PMU_IDLE_ST_MSCH0, 6066fba6e04STony Xie PMU_IDLE_ST_MSCH1, 6076fba6e04STony Xie 6086fba6e04STony Xie PMU_IDLE_ST_ALIVE, 6096fba6e04STony Xie PMU_IDLE_ST_PMU, 6106fba6e04STony Xie PMU_IDLE_ST_EDP, 6116fba6e04STony Xie PMU_IDLE_ST_GMAC, 6126fba6e04STony Xie 6136fba6e04STony Xie PMU_IDLE_ST_EMMC, 6146fba6e04STony Xie PMU_IDLE_ST_CENTER1, 6156fba6e04STony Xie PMU_IDLE_ST_PMUM0, 6166fba6e04STony Xie PMU_IDLE_ST_GIC, 6176fba6e04STony Xie 6186fba6e04STony Xie PMU_IDLE_ST_SD, 6196fba6e04STony Xie PMU_IDLE_ST_SDIOAUDIO, 6206fba6e04STony Xie }; 6216fba6e04STony Xie 6226fba6e04STony Xie enum pmu_bus_idle_ack { 6236fba6e04STony Xie PMU_IDLE_ACK_GPU = 0, 6246fba6e04STony Xie PMU_IDLE_ACK_PERILP, 6256fba6e04STony Xie PMU_IDLE_ACK_PERIHP, 6266fba6e04STony Xie PMU_IDLE_ACK_VCODEC, 6276fba6e04STony Xie 6286fba6e04STony Xie PMU_IDLE_ACK_VDU, 6296fba6e04STony Xie PMU_IDLE_ACK_RGA, 6306fba6e04STony Xie PMU_IDLE_ACK_IEP, 6316fba6e04STony Xie PMU_IDLE_ACK_VOPB, 6326fba6e04STony Xie 6336fba6e04STony Xie PMU_IDLE_ACK_VOPL, 6346fba6e04STony Xie PMU_IDLE_ACK_ISP0, 6356fba6e04STony Xie PMU_IDLE_ACK_ISP1, 6366fba6e04STony Xie PMU_IDLE_ACK_HDCP, 6376fba6e04STony Xie 6386fba6e04STony Xie PMU_IDLE_ACK_USB3, 6396fba6e04STony Xie PMU_IDLE_ACK_PERILPM0, 6406fba6e04STony Xie PMU_IDLE_ACK_CENTER, 6416fba6e04STony Xie PMU_IDLE_ACK_CCIM0, 6426fba6e04STony Xie 6436fba6e04STony Xie PMU_IDLE_ACK_CCIM1, 6446fba6e04STony Xie PMU_IDLE_ACK_VIO, 6456fba6e04STony Xie PMU_IDLE_ACK_MSCH0, 6466fba6e04STony Xie PMU_IDLE_ACK_MSCH1, 6476fba6e04STony Xie 6486fba6e04STony Xie PMU_IDLE_ACK_ALIVE, 6496fba6e04STony Xie PMU_IDLE_ACK_PMU, 6506fba6e04STony Xie PMU_IDLE_ACK_EDP, 6516fba6e04STony Xie PMU_IDLE_ACK_GMAC, 6526fba6e04STony Xie 6536fba6e04STony Xie PMU_IDLE_ACK_EMMC, 6546fba6e04STony Xie PMU_IDLE_ACK_CENTER1, 6556fba6e04STony Xie PMU_IDLE_ACK_PMUM0, 6566fba6e04STony Xie PMU_IDLE_ACK_GIC, 6576fba6e04STony Xie 6586fba6e04STony Xie PMU_IDLE_ACK_SD, 6596fba6e04STony Xie PMU_IDLE_ACK_SDIOAUDIO, 6606fba6e04STony Xie }; 6616fba6e04STony Xie 662f47a25ddSCaesar Wang enum pmu_cci500_con { 663f47a25ddSCaesar Wang PMU_PREQ_CCI500_CFG_SW = 0, 664f47a25ddSCaesar Wang PMU_CLR_PREQ_CCI500_HW, 665f47a25ddSCaesar Wang PMU_PSTATE_CCI500_0, 666f47a25ddSCaesar Wang PMU_PSTATE_CCI500_1, 667f47a25ddSCaesar Wang 668f47a25ddSCaesar Wang PMU_PSTATE_CCI500_2, 669f47a25ddSCaesar Wang PMU_QREQ_CCI500_CFG_SW, 670f47a25ddSCaesar Wang PMU_CLR_QREQ_CCI500_HW, 671f47a25ddSCaesar Wang PMU_QGATING_CCI500_CFG, 672f47a25ddSCaesar Wang 673f47a25ddSCaesar Wang PMU_PREQ_CCI500_CFG_SW_WMSK = 16, 674f47a25ddSCaesar Wang PMU_CLR_PREQ_CCI500_HW_WMSK, 675f47a25ddSCaesar Wang PMU_PSTATE_CCI500_0_WMSK, 676f47a25ddSCaesar Wang PMU_PSTATE_CCI500_1_WMSK, 677f47a25ddSCaesar Wang 678f47a25ddSCaesar Wang PMU_PSTATE_CCI500_2_WMSK, 679f47a25ddSCaesar Wang PMU_QREQ_CCI500_CFG_SW_WMSK, 680f47a25ddSCaesar Wang PMU_CLR_QREQ_CCI500_HW_WMSK, 681f47a25ddSCaesar Wang PMU_QGATING_CCI500_CFG_WMSK, 682f47a25ddSCaesar Wang }; 683f47a25ddSCaesar Wang 684f47a25ddSCaesar Wang enum pmu_adb400_con { 685f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CXCS_SW = 0, 686f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_L_SW, 687f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_L_2GIC_SW, 688f47a25ddSCaesar Wang PMU_PWRDWN_REQ_GIC2_CORE_L_SW, 689f47a25ddSCaesar Wang 690f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_B_SW, 691f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_B_2GIC_SW, 692f47a25ddSCaesar Wang PMU_PWRDWN_REQ_GIC2_CORE_B_SW, 693f47a25ddSCaesar Wang 694f47a25ddSCaesar Wang PMU_CLR_CXCS_HW = 8, 695f47a25ddSCaesar Wang PMU_CLR_CORE_L_HW, 696f47a25ddSCaesar Wang PMU_CLR_CORE_L_2GIC_HW, 697f47a25ddSCaesar Wang PMU_CLR_GIC2_CORE_L_HW, 698f47a25ddSCaesar Wang 699f47a25ddSCaesar Wang PMU_CLR_CORE_B_HW, 700f47a25ddSCaesar Wang PMU_CLR_CORE_B_2GIC_HW, 701f47a25ddSCaesar Wang PMU_CLR_GIC2_CORE_B_HW, 702f47a25ddSCaesar Wang 703f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CXCS_SW_WMSK = 16, 704f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_L_SW_WMSK, 705f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_L_2GIC_SW_WMSK, 706f47a25ddSCaesar Wang PMU_PWRDWN_REQ_GIC2_CORE_L_SW_WMSK, 707f47a25ddSCaesar Wang 708f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_B_SW_WMSK, 709f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_B_2GIC_SW_WMSK, 710f47a25ddSCaesar Wang PMU_PWRDWN_REQ_GIC2_CORE_B_SW_WMSK, 711f47a25ddSCaesar Wang 712f47a25ddSCaesar Wang PMU_CLR_CXCS_HW_WMSK = 24, 713f47a25ddSCaesar Wang PMU_CLR_CORE_L_HW_WMSK, 714f47a25ddSCaesar Wang PMU_CLR_CORE_L_2GIC_HW_WMSK, 715f47a25ddSCaesar Wang PMU_CLR_GIC2_CORE_L_HW_WMSK, 716f47a25ddSCaesar Wang 717f47a25ddSCaesar Wang PMU_CLR_CORE_B_HW_WMSK, 718f47a25ddSCaesar Wang PMU_CLR_CORE_B_2GIC_HW_WMSK, 719f47a25ddSCaesar Wang PMU_CLR_GIC2_CORE_B_HW_WMSK, 720f47a25ddSCaesar Wang }; 721f47a25ddSCaesar Wang 722f47a25ddSCaesar Wang enum pmu_adb400_st { 723f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CXCS_SW_ST = 0, 724f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_L_SW_ST, 725f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_L_2GIC_SW_ST, 726f47a25ddSCaesar Wang PMU_PWRDWN_REQ_GIC2_CORE_L_SW_ST, 727f47a25ddSCaesar Wang 728f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_B_SW_ST, 729f47a25ddSCaesar Wang PMU_PWRDWN_REQ_CORE_B_2GIC_SW_ST, 730f47a25ddSCaesar Wang PMU_PWRDWN_REQ_GIC2_CORE_B_SW_ST, 731f47a25ddSCaesar Wang 732f47a25ddSCaesar Wang PMU_CLR_CXCS_HW_ST = 8, 733f47a25ddSCaesar Wang PMU_CLR_CORE_L_HW_ST, 734f47a25ddSCaesar Wang PMU_CLR_CORE_L_2GIC_HW_ST, 735f47a25ddSCaesar Wang PMU_CLR_GIC2_CORE_L_HW_ST, 736f47a25ddSCaesar Wang 737f47a25ddSCaesar Wang PMU_CLR_CORE_B_HW_ST, 738f47a25ddSCaesar Wang PMU_CLR_CORE_B_2GIC_HW_ST, 739f47a25ddSCaesar Wang PMU_CLR_GIC2_CORE_B_HW_ST, 740f47a25ddSCaesar Wang }; 741f47a25ddSCaesar Wang 7426fba6e04STony Xie enum pmu_pwrdn_con1 { 7436fba6e04STony Xie PMU_VD_SCU_L_PWRDN_EN = 0, 7446fba6e04STony Xie PMU_VD_SCU_B_PWRDN_EN, 7456fba6e04STony Xie PMU_VD_CENTER_PWRDN_EN, 7466fba6e04STony Xie }; 7476fba6e04STony Xie 748f47a25ddSCaesar Wang enum pmu_core_pwr_st { 749f47a25ddSCaesar Wang L2_FLUSHDONE_CLUSTER_L = 0, 750f47a25ddSCaesar Wang STANDBY_BY_WFIL2_CLUSTER_L, 751f47a25ddSCaesar Wang 752f47a25ddSCaesar Wang L2_FLUSHDONE_CLUSTER_B = 10, 753f47a25ddSCaesar Wang STANDBY_BY_WFIL2_CLUSTER_B, 754f47a25ddSCaesar Wang }; 755f47a25ddSCaesar Wang 756*9c68748eSCaesar Wang /* Specific features required */ 757f47a25ddSCaesar Wang #define AP_PWROFF 0x0a 758e6517abdSCaesar Wang 7599d5aee2bSCaesar Wang #define GPIO0A0_SMT_ENABLE BITS_WITH_WMASK(1, 3, 0) 76086c253e4SCaesar Wang #define GPIO1A6_IOMUX BITS_WITH_WMASK(0, 3, 12) 761e6517abdSCaesar Wang 76286c253e4SCaesar Wang #define TSADC_INT_PIN 38 7636fba6e04STony Xie #define CORES_PM_DISABLE 0x0 7646fba6e04STony Xie 7656fba6e04STony Xie #define PD_CTR_LOOP 500 7666fba6e04STony Xie #define CHK_CPU_LOOP 500 7679ec78bdfSTony Xie #define MAX_WAIT_COUNT 1000 7686fba6e04STony Xie 7699ec78bdfSTony Xie #define GRF_SOC_CON4 0x0e210 7702bff35bbSCaesar Wang 7719d5aee2bSCaesar Wang #define PMUGRF_GPIO0A_SMT 0x0120 7729ec78bdfSTony Xie #define PMUGRF_SOC_CON0 0x0180 7739ec78bdfSTony Xie 7749ec78bdfSTony Xie #define CCI_FORCE_WAKEUP WMSK_BIT(8) 7759ec78bdfSTony Xie #define EXTERNAL_32K WMSK_BIT(0) 7769ec78bdfSTony Xie 7779ec78bdfSTony Xie #define PLL_PD_HW 0xff 7789ec78bdfSTony Xie #define IOMUX_CLK_32K 0x00030002 7799ec78bdfSTony Xie #define NOC_AUTO_ENABLE 0x3fffffff 7809ec78bdfSTony Xie 7819ec78bdfSTony Xie #define SAVE_QOS(array, NAME) \ 7829ec78bdfSTony Xie RK3399_CPU_AXI_SAVE_QOS(array, CPU_AXI_##NAME##_QOS_BASE) 7839ec78bdfSTony Xie #define RESTORE_QOS(array, NAME) \ 7849ec78bdfSTony Xie RK3399_CPU_AXI_RESTORE_QOS(array, CPU_AXI_##NAME##_QOS_BASE) 7859ec78bdfSTony Xie 7869ec78bdfSTony Xie #define RK3399_CPU_AXI_SAVE_QOS(array, base) do { \ 7879ec78bdfSTony Xie array[0] = mmio_read_32(base + CPU_AXI_QOS_ID_COREID); \ 7889ec78bdfSTony Xie array[1] = mmio_read_32(base + CPU_AXI_QOS_REVISIONID); \ 7899ec78bdfSTony Xie array[2] = mmio_read_32(base + CPU_AXI_QOS_PRIORITY); \ 7909ec78bdfSTony Xie array[3] = mmio_read_32(base + CPU_AXI_QOS_MODE); \ 7919ec78bdfSTony Xie array[4] = mmio_read_32(base + CPU_AXI_QOS_BANDWIDTH); \ 7929ec78bdfSTony Xie array[5] = mmio_read_32(base + CPU_AXI_QOS_SATURATION); \ 7939ec78bdfSTony Xie array[6] = mmio_read_32(base + CPU_AXI_QOS_EXTCONTROL); \ 7949ec78bdfSTony Xie } while (0) 7959ec78bdfSTony Xie 7969ec78bdfSTony Xie #define RK3399_CPU_AXI_RESTORE_QOS(array, base) do { \ 7979ec78bdfSTony Xie mmio_write_32(base + CPU_AXI_QOS_ID_COREID, array[0]); \ 7989ec78bdfSTony Xie mmio_write_32(base + CPU_AXI_QOS_REVISIONID, array[1]); \ 7999ec78bdfSTony Xie mmio_write_32(base + CPU_AXI_QOS_PRIORITY, array[2]); \ 8009ec78bdfSTony Xie mmio_write_32(base + CPU_AXI_QOS_MODE, array[3]); \ 8019ec78bdfSTony Xie mmio_write_32(base + CPU_AXI_QOS_BANDWIDTH, array[4]); \ 8029ec78bdfSTony Xie mmio_write_32(base + CPU_AXI_QOS_SATURATION, array[5]); \ 8039ec78bdfSTony Xie mmio_write_32(base + CPU_AXI_QOS_EXTCONTROL, array[6]); \ 8049ec78bdfSTony Xie } while (0) 8059ec78bdfSTony Xie 8069ec78bdfSTony Xie struct pmu_slpdata_s { 8079ec78bdfSTony Xie uint32_t cci_m0_qos[CPU_AXI_QOS_NUM_REGS]; 8089ec78bdfSTony Xie uint32_t cci_m1_qos[CPU_AXI_QOS_NUM_REGS]; 8099ec78bdfSTony Xie uint32_t dmac0_qos[CPU_AXI_QOS_NUM_REGS]; 8109ec78bdfSTony Xie uint32_t dmac1_qos[CPU_AXI_QOS_NUM_REGS]; 8119ec78bdfSTony Xie uint32_t dcf_qos[CPU_AXI_QOS_NUM_REGS]; 8129ec78bdfSTony Xie uint32_t crypto0_qos[CPU_AXI_QOS_NUM_REGS]; 8139ec78bdfSTony Xie uint32_t crypto1_qos[CPU_AXI_QOS_NUM_REGS]; 8149ec78bdfSTony Xie uint32_t pmu_cm0_qos[CPU_AXI_QOS_NUM_REGS]; 8159ec78bdfSTony Xie uint32_t peri_cm1_qos[CPU_AXI_QOS_NUM_REGS]; 8169ec78bdfSTony Xie uint32_t gic_qos[CPU_AXI_QOS_NUM_REGS]; 8179ec78bdfSTony Xie uint32_t sdmmc_qos[CPU_AXI_QOS_NUM_REGS]; 8189ec78bdfSTony Xie uint32_t gmac_qos[CPU_AXI_QOS_NUM_REGS]; 8199ec78bdfSTony Xie uint32_t emmc_qos[CPU_AXI_QOS_NUM_REGS]; 8209ec78bdfSTony Xie uint32_t usb_otg0_qos[CPU_AXI_QOS_NUM_REGS]; 8219ec78bdfSTony Xie uint32_t usb_otg1_qos[CPU_AXI_QOS_NUM_REGS]; 8229ec78bdfSTony Xie uint32_t usb_host0_qos[CPU_AXI_QOS_NUM_REGS]; 8239ec78bdfSTony Xie uint32_t usb_host1_qos[CPU_AXI_QOS_NUM_REGS]; 8249ec78bdfSTony Xie uint32_t gpu_qos[CPU_AXI_QOS_NUM_REGS]; 8259ec78bdfSTony Xie uint32_t video_m0_qos[CPU_AXI_QOS_NUM_REGS]; 8269ec78bdfSTony Xie uint32_t video_m1_r_qos[CPU_AXI_QOS_NUM_REGS]; 8279ec78bdfSTony Xie uint32_t video_m1_w_qos[CPU_AXI_QOS_NUM_REGS]; 8289ec78bdfSTony Xie uint32_t rga_r_qos[CPU_AXI_QOS_NUM_REGS]; 8299ec78bdfSTony Xie uint32_t rga_w_qos[CPU_AXI_QOS_NUM_REGS]; 8309ec78bdfSTony Xie uint32_t vop_big_r[CPU_AXI_QOS_NUM_REGS]; 8319ec78bdfSTony Xie uint32_t vop_big_w[CPU_AXI_QOS_NUM_REGS]; 8329ec78bdfSTony Xie uint32_t vop_little[CPU_AXI_QOS_NUM_REGS]; 8339ec78bdfSTony Xie uint32_t iep_qos[CPU_AXI_QOS_NUM_REGS]; 8349ec78bdfSTony Xie uint32_t isp1_m0_qos[CPU_AXI_QOS_NUM_REGS]; 8359ec78bdfSTony Xie uint32_t isp1_m1_qos[CPU_AXI_QOS_NUM_REGS]; 8369ec78bdfSTony Xie uint32_t isp0_m0_qos[CPU_AXI_QOS_NUM_REGS]; 8379ec78bdfSTony Xie uint32_t isp0_m1_qos[CPU_AXI_QOS_NUM_REGS]; 8389ec78bdfSTony Xie uint32_t hdcp_qos[CPU_AXI_QOS_NUM_REGS]; 8399ec78bdfSTony Xie uint32_t perihp_nsp_qos[CPU_AXI_QOS_NUM_REGS]; 8409ec78bdfSTony Xie uint32_t perilp_nsp_qos[CPU_AXI_QOS_NUM_REGS]; 8419ec78bdfSTony Xie uint32_t perilpslv_nsp_qos[CPU_AXI_QOS_NUM_REGS]; 8429ec78bdfSTony Xie uint32_t sdio_qos[CPU_AXI_QOS_NUM_REGS]; 8439ec78bdfSTony Xie }; 8449ec78bdfSTony Xie 8459ec78bdfSTony Xie extern uint32_t clst_warmboot_data[PLATFORM_CLUSTER_COUNT]; 8466fba6e04STony Xie #endif /* __PMU_H__ */ 847