123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304 |
- /*
- * Copyright (c) 2023, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #ifndef __PMU_H__
- #define __PMU_H__
- #define PMU_VERSION 0x0000
- #define PMU_PWR_CON 0x0004
- #define PMU_MAIN_PWR_STATE 0x0008
- #define PMU_INT_MASK_CON 0x000C
- #define PMU_WAKEUP_INT_CON 0x0010
- #define PMU_WAKEUP_INT_ST 0x0014
- #define PMU_WAKEUP_EDGE_CON 0x0018
- #define PMU_WAKEUP_EDGE_ST 0x001C
- #define PMU_BUS_IDLE_CON0 0x0040
- #define PMU_BUS_IDLE_CON1 0x0044
- #define PMU_BUS_IDLE_SFTCON0 0x0050
- #define PMU_BUS_IDLE_SFTCON1 0x0054
- #define PMU_BUS_IDLE_ACK 0x0060
- #define PMU_BUS_IDLE_ST 0x0068
- #define PMU_NOC_AUTO_CON0 0x0070
- #define PMU_NOC_AUTO_CON1 0x0074
- #define PMU_DDR_PWR_CON 0x0080
- #define PMU_DDR_PWR_SFTCON 0x0084
- #define PMU_DDR_PWR_STATE 0x0088
- #define PMU_DDR_PWR_ST 0x008C
- #define PMU_PWR_GATE_CON 0x0090
- #define PMU_PWR_GATE_STATE 0x0094
- #define PMU_PWR_DWN_ST 0x0098
- #define PMU_PWR_GATE_SFTCON 0x00A0
- #define PMU_VOL_GATE_SFTCON 0x00A8
- #define PMU_CRU_PWR_CON 0x00B0
- #define PMU_CRU_PWR_SFTCON 0x00B4
- #define PMU_CRU_PWR_STATE 0x00B8
- #define PMU_PLLPD_CON 0x00C0
- #define PMU_PLLPD_SFTCON 0x00C4
- #define PMU_INFO_TX_CON 0x00D0
- #define PMU_DSU_STABLE_CNT 0x0100
- #define PMU_PMIC_STABLE_CNT 0x0104
- #define PMU_OSC_STABLE_CNT 0x0108
- #define PMU_WAKEUP_RSTCLR_CNT 0x010C
- #define PMU_PLL_LOCK_CNT 0x0110
- #define PMU_DSU_PWRUP_CNT 0x0118
- #define PMU_DSU_PWRDN_CNT 0x011C
- #define PMU_GPU_VOLUP_CNT 0x0120
- #define PMU_GPU_VOLDN_CNT 0x0124
- #define PMU_WAKEUP_TIMEOUT_CNT 0x0128
- #define PMU_PWM_SWITCH_CNT 0x012C
- #define PMU_DBG_RST_CNT 0x0130
- #define PMU_SYS_REG0 0x0180
- #define PMU_SYS_REG1 0x0184
- #define PMU_SYS_REG2 0x0188
- #define PMU_SYS_REG3 0x018C
- #define PMU_SYS_REG4 0x0190
- #define PMU_SYS_REG5 0x0194
- #define PMU_SYS_REG6 0x0198
- #define PMU_SYS_REG7 0x019C
- #define PMU_DSU_PWR_CON 0x0300
- #define PMU_DSU_PWR_SFTCON 0x0304
- #define PMU_DSU_AUTO_CON 0x0308
- #define PMU_DSU_PWR_STATE 0x030C
- #define PMU_CPU_AUTO_PWR_CON0 0x0310
- #define PMU_CPU_AUTO_PWR_CON1 0x0314
- #define PMU_CPU_PWR_SFTCON 0x0318
- #define PMU_CLUSTER_PWR_ST 0x031C
- #define PMU_CLUSTER_IDLE_CON 0x0320
- #define PMU_CLUSTER_IDLE_SFTCON 0x0324
- #define PMU_CLUSTER_IDLE_ACK 0x0328
- #define PMU_CLUSTER_IDLE_ST 0x032C
- #define PMU_DBG_PWR_CON 0x0330
- /* PMU_SGRF */
- #define PMU_SGRF_SOC_CON1 0x0004
- #define PMU_SGRF_FAST_BOOT_ADDR 0x0180
- /* sys grf */
- #define GRF_CPU_STATUS0 0x0420
- #define CRU_SOFTRST_CON00 0x0400
- #define CORES_PM_DISABLE 0x0
- #define PD_CHECK_LOOP 500
- #define WFEI_CHECK_LOOP 500
- #define PMUSGRF_SOC_CON(i) ((i) * 0x4)
- /* Needed aligned 16 bytes for sp stack top */
- #define PSRAM_SP_TOP ((PMUSRAM_BASE + PMUSRAM_RSIZE) & ~0xf)
- #define PMU_CPUAPM_CON(cpu) (0x0310 + (cpu) * 0x4)
- #define PMIC_SLEEP_FUN 0x07000100
- #define PMIC_SLEEP_GPIO 0x07000000
- #define GPIO_SWPORT_DR_L 0x0000
- #define GPIO_SWPORT_DR_H 0x0004
- #define GPIO_SWPORT_DDR_L 0x0008
- #define GPIO_SWPORT_DDR_H 0x000C
- #define PMIC_SLEEP_HIGH_LEVEL 0x00040004
- #define PMIC_SLEEP_LOW_LEVEL 0x00040000
- #define PMIC_SLEEP_OUT 0x00040004
- #define CPUS_BYPASS 0x007e4f7e
- #define CLB_INT_DISABLE 0x00010001
- #define WRITE_MASK_SET(value) ((value << 16) | value)
- #define WRITE_MASK_CLR(value) ((value << 16))
- enum pmu_cores_pm_by_wfi {
- core_pm_en = 0,
- core_pm_int_wakeup_en,
- core_pm_int_wakeup_glb_msk,
- core_pm_sft_wakeup_en,
- };
- /* The ways of cores power domain contorlling */
- enum cores_pm_ctr_mode {
- core_pwr_pd = 0,
- core_pwr_wfi = 1,
- core_pwr_wfi_int = 2
- };
- /* PMU_PWR_DWN_ST */
- enum pmu_pdid {
- PD_GPU,
- PD_NPU,
- PD_VPU,
- PD_RKVENC,
- PD_RKVDEC,
- PD_RGA,
- PD_VI,
- PD_VO,
- PD_PIPE,
- PD_CENTER,
- PD_END
- };
- /* PMU_PWR_CON */
- enum pmu_pwr_con {
- POWRMODE_EN,
- DSU_BYPASS,
- BUS_BYPASS = 4,
- DDR_BYPASS,
- PWRDN_BYPASS,
- CRU_BYPASS,
- CPU0_BYPASS,
- CPU1_BYPASS,
- CPU2_BYPASS,
- CPU3_BYPASS,
- PMU_SLEEP_LOW = 15,
- };
- /* PMU_CRU_PWR_CON */
- enum pmu_cru_pwr_con {
- ALIVE_32K_ENA,
- OSC_DIS_ENA,
- WAKEUP_RST_ENA,
- INPUT_CLAMP_ENA,
- ALIVE_OSC_ENA,
- POWER_OFF_ENA,
- PWM_SWITCH_ENA,
- PWM_GPIO_IOE_ENA,
- PWM_SWITCH_IOUT,
- PD_BUS_CLK_SRC_GATE_ENA,
- PD_PERI_CLK_SRC_GATE_ENA,
- PD_PMU_CLK_SRC_GATE_ENA,
- PMUMEM_CLK_SRC_GATE_ENA,
- PWR_CON_END
- };
- /* PMU_PLLPD_CON */
- enum pmu_pllpd_con {
- APLL_PD_ENA,
- DPLL_PD_ENA,
- CPLL_PD_ENA,
- GPLL_PD_ENA,
- MPLL_PD_ENA,
- NPLL_PD_ENA,
- HPLL_PD_ENA,
- PPLL_PD_ENA,
- VPLL_PD_ENA,
- PLL_PD_END
- };
- /* PMU_DSU_PWR_CON */
- enum pmu_dsu_pwr_con {
- DSU_PWRDN_ENA = 2,
- DSU_PWROFF_ENA,
- DSU_RET_ENA = 6,
- CLUSTER_CLK_SRC_GATE_ENA,
- DSU_PWR_CON_END
- };
- enum cpu_power_state {
- CPU_POWER_ON,
- CPU_POWER_OFF,
- CPU_EMULATION_OFF,
- CPU_RETENTION,
- CPU_DEBUG
- };
- enum dsu_power_state {
- DSU_POWER_ON,
- CLUSTER_TRANSFER_IDLE,
- DSU_POWER_DOWN,
- DSU_OFF,
- DSU_WAKEUP,
- DSU_POWER_UP,
- CLUSTER_TRANSFER_RESUME,
- DSU_FUNCTION_RETENTION
- };
- enum pmu_wakeup_int_con {
- WAKEUP_CPU0_INT_EN,
- WAKEUP_CPU1_INT_EN,
- WAKEUP_CPU2_INT_EN,
- WAKEUP_CPU3_INT_EN,
- WAKEUP_GPIO0_INT_EN,
- WAKEUP_UART0_EN,
- WAKEUP_SDMMC0_EN,
- WAKEUP_SDMMC1_EN,
- WAKEUP_SDMMC2_EN,
- WAKEUP_USB_EN,
- WAKEUP_PCIE_EN,
- WAKEUP_VAD_EN,
- WAKEUP_TIMER_EN,
- WAKEUP_PWM0_EN,
- WAKEUP_TIMEROUT_EN,
- WAKEUP_MCU_SFT_EN,
- };
- enum pmu_wakeup_int_st {
- WAKEUP_CPU0_INT_ST,
- WAKEUP_CPU1_INT_ST,
- WAKEUP_CPU2_INT_ST,
- WAKEUP_CPU3_INT_ST,
- WAKEUP_GPIO0_INT_ST,
- WAKEUP_UART0_ST,
- WAKEUP_SDMMC0_ST,
- WAKEUP_SDMMC1_ST,
- WAKEUP_SDMMC2_ST,
- WAKEUP_USB_ST,
- WAKEUP_PCIE_ST,
- WAKEUP_VAD_ST,
- WAKEUP_TIMER_ST,
- WAKEUP_PWM0_ST,
- WAKEUP_TIMEOUT_ST,
- WAKEUP_SYS_INT_ST,
- };
- enum pmu_bus_idle_con0 {
- IDLE_REQ_MSCH,
- IDLE_REQ_GPU,
- IDLE_REQ_NPU,
- IDLE_REQ_VI,
- IDLE_REQ_VO,
- IDLE_REQ_RGA,
- IDLE_REQ_VPU,
- IDLE_REQ_RKVENC,
- IDLE_REQ_RKVDEC,
- IDLE_REQ_GIC_AUDIO,
- IDLE_REQ_PHP,
- IDLE_REQ_PIPE,
- IDLE_REQ_SECURE_FLASH,
- IDLE_REQ_PERIMID,
- IDLE_REQ_USB,
- IDLE_REQ_BUS,
- };
- enum pmu_bus_idle_con1 {
- IDLE_REQ_TOP1,
- IDLE_REQ_TOP2,
- IDLE_REQ_PMU,
- };
- enum pmu_pwr_gate_con {
- PD_GPU_DWN_ENA,
- PD_NPU_DWN_ENA,
- PD_VPU_DWN_ENA,
- PD_RKVENC_DWN_ENA,
- PD_RKVDEC_DWN_ENA,
- PD_RGA_DWN_ENA,
- PD_VI_DWN_ENA,
- PD_VO_DWN_ENA,
- PD_PIPE_DWN_ENA,
- PD_CENTER_DWN_ENA,
- };
- enum pmu_ddr_pwr_con {
- DDR_SREF_ENA,
- DDRIO_RET_ENTER_ENA,
- DDRIO_RET_EXIT_ENA = 2,
- DDRPHY_AUTO_GATING_ENA = 4,
- };
- enum pmu_vol_gate_soft_con {
- VD_GPU_ENA,
- VD_NPU_ENA,
- };
- #endif /* __PMU_H__ */
|