xref: /rk3399_ARM-atf/plat/rockchip/rk3399/drivers/pmu/pmu.h (revision 9c68748eafa683e1356316276de2e82f4353ccee)
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