1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2016, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef PMU_H 8*91f16700Schasinglulu #define PMU_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu /* Allocate sp reginon in pmusram */ 11*91f16700Schasinglulu #define PSRAM_SP_SIZE 0x80 12*91f16700Schasinglulu #define PSRAM_SP_BOTTOM (PSRAM_SP_TOP - PSRAM_SP_SIZE) 13*91f16700Schasinglulu 14*91f16700Schasinglulu /***************************************************************************** 15*91f16700Schasinglulu * pmu con,reg 16*91f16700Schasinglulu *****************************************************************************/ 17*91f16700Schasinglulu #define PMU_WKUP_CFG0 0x0 18*91f16700Schasinglulu #define PMU_WKUP_CFG1 0x4 19*91f16700Schasinglulu #define PMU_WKUP_CFG2 0x8 20*91f16700Schasinglulu #define PMU_TIMEOUT_CNT 0x7c 21*91f16700Schasinglulu #define PMU_PWRDN_CON 0xc 22*91f16700Schasinglulu #define PMU_PWRDN_ST 0x10 23*91f16700Schasinglulu #define PMU_CORE_PWR_ST 0x38 24*91f16700Schasinglulu 25*91f16700Schasinglulu #define PMU_PWRMD_CORE 0x14 26*91f16700Schasinglulu #define PMU_PWRMD_COM 0x18 27*91f16700Schasinglulu #define PMU_SFT_CON 0x1c 28*91f16700Schasinglulu #define PMU_BUS_IDE_REQ 0x3c 29*91f16700Schasinglulu #define PMU_BUS_IDE_ST 0x40 30*91f16700Schasinglulu #define PMU_OSC_CNT 0x48 31*91f16700Schasinglulu #define PMU_PLLLOCK_CNT 0x4c 32*91f16700Schasinglulu #define PMU_PLLRST_CNT 0x50 33*91f16700Schasinglulu #define PMU_STABLE_CNT 0x54 34*91f16700Schasinglulu #define PMU_DDRIO_PWR_CNT 0x58 35*91f16700Schasinglulu #define PMU_WKUPRST_CNT 0x5c 36*91f16700Schasinglulu 37*91f16700Schasinglulu enum pmu_powermode_core { 38*91f16700Schasinglulu pmu_mdcr_global_int_dis = 0, 39*91f16700Schasinglulu pmu_mdcr_core_src_gt, 40*91f16700Schasinglulu pmu_mdcr_clr_cci, 41*91f16700Schasinglulu pmu_mdcr_cpu0_pd, 42*91f16700Schasinglulu pmu_mdcr_clr_clst_l = 4, 43*91f16700Schasinglulu pmu_mdcr_clr_core, 44*91f16700Schasinglulu pmu_mdcr_scu_l_pd, 45*91f16700Schasinglulu pmu_mdcr_core_pd, 46*91f16700Schasinglulu pmu_mdcr_l2_idle = 8, 47*91f16700Schasinglulu pmu_mdcr_l2_flush 48*91f16700Schasinglulu }; 49*91f16700Schasinglulu 50*91f16700Schasinglulu /* 51*91f16700Schasinglulu * the shift of bits for cores status 52*91f16700Schasinglulu */ 53*91f16700Schasinglulu enum pmu_core_pwrst_shift { 54*91f16700Schasinglulu clstl_cpu_wfe = 2, 55*91f16700Schasinglulu clstl_cpu_wfi = 6, 56*91f16700Schasinglulu clstb_cpu_wfe = 12, 57*91f16700Schasinglulu clstb_cpu_wfi = 16 58*91f16700Schasinglulu }; 59*91f16700Schasinglulu 60*91f16700Schasinglulu enum pmu_pdid { 61*91f16700Schasinglulu PD_CPUL0 = 0, 62*91f16700Schasinglulu PD_CPUL1, 63*91f16700Schasinglulu PD_CPUL2, 64*91f16700Schasinglulu PD_CPUL3, 65*91f16700Schasinglulu PD_SCUL, 66*91f16700Schasinglulu PD_CPUB0 = 5, 67*91f16700Schasinglulu PD_CPUB1, 68*91f16700Schasinglulu PD_CPUB2, 69*91f16700Schasinglulu PD_CPUB3, 70*91f16700Schasinglulu PD_SCUB = 9, 71*91f16700Schasinglulu PD_PERI = 13, 72*91f16700Schasinglulu PD_VIDEO, 73*91f16700Schasinglulu PD_VIO, 74*91f16700Schasinglulu PD_GPU0, 75*91f16700Schasinglulu PD_GPU1, 76*91f16700Schasinglulu PD_END 77*91f16700Schasinglulu }; 78*91f16700Schasinglulu 79*91f16700Schasinglulu enum pmu_bus_ide { 80*91f16700Schasinglulu bus_ide_req_clst_l = 0, 81*91f16700Schasinglulu bus_ide_req_clst_b, 82*91f16700Schasinglulu bus_ide_req_gpu, 83*91f16700Schasinglulu bus_ide_req_core, 84*91f16700Schasinglulu bus_ide_req_bus = 4, 85*91f16700Schasinglulu bus_ide_req_dma, 86*91f16700Schasinglulu bus_ide_req_peri, 87*91f16700Schasinglulu bus_ide_req_video, 88*91f16700Schasinglulu bus_ide_req_vio = 8, 89*91f16700Schasinglulu bus_ide_req_res0, 90*91f16700Schasinglulu bus_ide_req_cxcs, 91*91f16700Schasinglulu bus_ide_req_alive, 92*91f16700Schasinglulu bus_ide_req_pmu = 12, 93*91f16700Schasinglulu bus_ide_req_msch, 94*91f16700Schasinglulu bus_ide_req_cci, 95*91f16700Schasinglulu bus_ide_req_cci400 = 15, 96*91f16700Schasinglulu bus_ide_req_end 97*91f16700Schasinglulu }; 98*91f16700Schasinglulu 99*91f16700Schasinglulu enum pmu_powermode_common { 100*91f16700Schasinglulu pmu_mode_en = 0, 101*91f16700Schasinglulu pmu_mode_res0, 102*91f16700Schasinglulu pmu_mode_bus_pd, 103*91f16700Schasinglulu pmu_mode_wkup_rst, 104*91f16700Schasinglulu pmu_mode_pll_pd = 4, 105*91f16700Schasinglulu pmu_mode_pwr_off, 106*91f16700Schasinglulu pmu_mode_pmu_use_if, 107*91f16700Schasinglulu pmu_mode_pmu_alive_use_if, 108*91f16700Schasinglulu pmu_mode_osc_dis = 8, 109*91f16700Schasinglulu pmu_mode_input_clamp, 110*91f16700Schasinglulu pmu_mode_sref_enter, 111*91f16700Schasinglulu pmu_mode_ddrc_gt, 112*91f16700Schasinglulu pmu_mode_ddrio_ret = 12, 113*91f16700Schasinglulu pmu_mode_ddrio_ret_deq, 114*91f16700Schasinglulu pmu_mode_clr_pmu, 115*91f16700Schasinglulu pmu_mode_clr_alive, 116*91f16700Schasinglulu pmu_mode_clr_bus = 16, 117*91f16700Schasinglulu pmu_mode_clr_dma, 118*91f16700Schasinglulu pmu_mode_clr_msch, 119*91f16700Schasinglulu pmu_mode_clr_peri, 120*91f16700Schasinglulu pmu_mode_clr_video = 20, 121*91f16700Schasinglulu pmu_mode_clr_vio, 122*91f16700Schasinglulu pmu_mode_clr_gpu, 123*91f16700Schasinglulu pmu_mode_clr_mcu, 124*91f16700Schasinglulu pmu_mode_clr_cxcs = 24, 125*91f16700Schasinglulu pmu_mode_clr_cci400, 126*91f16700Schasinglulu pmu_mode_res1, 127*91f16700Schasinglulu pmu_mode_res2, 128*91f16700Schasinglulu pmu_mode_res3 = 28, 129*91f16700Schasinglulu pmu_mode_mclst 130*91f16700Schasinglulu }; 131*91f16700Schasinglulu 132*91f16700Schasinglulu enum pmu_core_power_st { 133*91f16700Schasinglulu clst_l_cpu_wfe = 2, 134*91f16700Schasinglulu clst_l_cpu_wfi = 6, 135*91f16700Schasinglulu clst_b_l2_flsh_done = 10, 136*91f16700Schasinglulu clst_b_l2_wfi = 11, 137*91f16700Schasinglulu clst_b_cpu_wfe = 12, 138*91f16700Schasinglulu clst_b_cpu_wfi = 16, 139*91f16700Schasinglulu mcu_sleeping = 20, 140*91f16700Schasinglulu }; 141*91f16700Schasinglulu 142*91f16700Schasinglulu enum pmu_sft_con { 143*91f16700Schasinglulu pmu_sft_acinactm_clst_b = 5, 144*91f16700Schasinglulu pmu_sft_l2flsh_clst_b, 145*91f16700Schasinglulu pmu_sft_glbl_int_dis_b = 9, 146*91f16700Schasinglulu pmu_sft_ddrio_ret_cfg = 11, 147*91f16700Schasinglulu }; 148*91f16700Schasinglulu 149*91f16700Schasinglulu enum pmu_wkup_cfg2 { 150*91f16700Schasinglulu pmu_cluster_l_wkup_en = 0, 151*91f16700Schasinglulu pmu_cluster_b_wkup_en, 152*91f16700Schasinglulu pmu_gpio_wkup_en, 153*91f16700Schasinglulu pmu_sdio_wkup_en, 154*91f16700Schasinglulu pmu_sdmmc_wkup_en, 155*91f16700Schasinglulu pmu_sim_wkup_en, 156*91f16700Schasinglulu pmu_timer_wkup_en, 157*91f16700Schasinglulu pmu_usbdev_wkup_en, 158*91f16700Schasinglulu pmu_sft_wkup_en, 159*91f16700Schasinglulu pmu_wdt_mcu_wkup_en, 160*91f16700Schasinglulu pmu_timeout_wkup_en, 161*91f16700Schasinglulu }; 162*91f16700Schasinglulu 163*91f16700Schasinglulu enum pmu_bus_idle_st { 164*91f16700Schasinglulu pmu_idle_ack_cluster_l = 0, 165*91f16700Schasinglulu pmu_idle_ack_cluster_b, 166*91f16700Schasinglulu pmu_idle_ack_gpu, 167*91f16700Schasinglulu pmu_idle_ack_core, 168*91f16700Schasinglulu pmu_idle_ack_bus, 169*91f16700Schasinglulu pmu_idle_ack_dma, 170*91f16700Schasinglulu pmu_idle_ack_peri, 171*91f16700Schasinglulu pmu_idle_ack_video, 172*91f16700Schasinglulu pmu_idle_ack_vio, 173*91f16700Schasinglulu pmu_idle_ack_cci = 10, 174*91f16700Schasinglulu pmu_idle_ack_msch, 175*91f16700Schasinglulu pmu_idle_ack_alive, 176*91f16700Schasinglulu pmu_idle_ack_pmu, 177*91f16700Schasinglulu pmu_idle_ack_cxcs, 178*91f16700Schasinglulu pmu_idle_ack_cci400, 179*91f16700Schasinglulu pmu_inactive_cluster_l, 180*91f16700Schasinglulu pmu_inactive_cluster_b, 181*91f16700Schasinglulu pmu_idle_gpu, 182*91f16700Schasinglulu pmu_idle_core, 183*91f16700Schasinglulu pmu_idle_bus, 184*91f16700Schasinglulu pmu_idle_dma, 185*91f16700Schasinglulu pmu_idle_peri, 186*91f16700Schasinglulu pmu_idle_video, 187*91f16700Schasinglulu pmu_idle_vio, 188*91f16700Schasinglulu pmu_idle_cci = 26, 189*91f16700Schasinglulu pmu_idle_msch, 190*91f16700Schasinglulu pmu_idle_alive, 191*91f16700Schasinglulu pmu_idle_pmu, 192*91f16700Schasinglulu pmu_active_cxcs, 193*91f16700Schasinglulu pmu_active_cci, 194*91f16700Schasinglulu }; 195*91f16700Schasinglulu 196*91f16700Schasinglulu #define PM_PWRDM_CPUSB_MSK (0xf << 5) 197*91f16700Schasinglulu 198*91f16700Schasinglulu #define CKECK_WFE_MSK 0x1 199*91f16700Schasinglulu #define CKECK_WFI_MSK 0x10 200*91f16700Schasinglulu #define CKECK_WFEI_MSK 0x11 201*91f16700Schasinglulu 202*91f16700Schasinglulu #define PD_CTR_LOOP 500 203*91f16700Schasinglulu #define CHK_CPU_LOOP 500 204*91f16700Schasinglulu 205*91f16700Schasinglulu #define MAX_WAIT_CONUT 1000 206*91f16700Schasinglulu 207*91f16700Schasinglulu #endif /* PMU_H */ 208