xref: /arm-trusted-firmware/plat/rockchip/rk3288/drivers/pmu/pmu.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
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_WAKEUP_CFG0		0x0
18*91f16700Schasinglulu #define PMU_WAKEUP_CFG1		0x4
19*91f16700Schasinglulu #define PMU_PWRDN_CON		0x8
20*91f16700Schasinglulu #define PMU_PWRDN_ST		0xc
21*91f16700Schasinglulu 
22*91f16700Schasinglulu #define PMU_PWRMODE_CON		0x18
23*91f16700Schasinglulu #define PMU_BUS_IDE_REQ		0x10
24*91f16700Schasinglulu #define PMU_BUS_IDE_ST		0x14
25*91f16700Schasinglulu 
26*91f16700Schasinglulu #define PMU_OSC_CNT		0x20
27*91f16700Schasinglulu #define PMU_PLL_CNT		0x24
28*91f16700Schasinglulu #define PMU_STABL_CNT		0x28
29*91f16700Schasinglulu #define PMU_DDRIO0_PWR_CNT	0x2c
30*91f16700Schasinglulu #define PMU_DDRIO1_PWR_CNT	0x30
31*91f16700Schasinglulu #define PMU_WKUPRST_CNT		0x44
32*91f16700Schasinglulu #define PMU_SFT_CON		0x48
33*91f16700Schasinglulu #define PMU_PWRMODE_CON1	0x90
34*91f16700Schasinglulu 
35*91f16700Schasinglulu enum pmu_pdid {
36*91f16700Schasinglulu 	PD_CPU0 = 0,
37*91f16700Schasinglulu 	PD_CPU1,
38*91f16700Schasinglulu 	PD_CPU2,
39*91f16700Schasinglulu 	PD_CPU3,
40*91f16700Schasinglulu 	PD_BUS = 5,
41*91f16700Schasinglulu 	PD_PERI,
42*91f16700Schasinglulu 	PD_VIO,
43*91f16700Schasinglulu 	PD_VIDEO,
44*91f16700Schasinglulu 	PD_GPU,
45*91f16700Schasinglulu 	PD_SCU = 11,
46*91f16700Schasinglulu 	PD_HEVC = 14,
47*91f16700Schasinglulu 	PD_END
48*91f16700Schasinglulu };
49*91f16700Schasinglulu 
50*91f16700Schasinglulu enum pmu_bus_ide {
51*91f16700Schasinglulu 	bus_ide_req_bus = 0,
52*91f16700Schasinglulu 	bus_ide_req_peri,
53*91f16700Schasinglulu 	bus_ide_req_gpu,
54*91f16700Schasinglulu 	bus_ide_req_video,
55*91f16700Schasinglulu 	bus_ide_req_vio,
56*91f16700Schasinglulu 	bus_ide_req_core,
57*91f16700Schasinglulu 	bus_ide_req_alive,
58*91f16700Schasinglulu 	bus_ide_req_dma,
59*91f16700Schasinglulu 	bus_ide_req_cpup,
60*91f16700Schasinglulu 	bus_ide_req_hevc,
61*91f16700Schasinglulu 	bus_ide_req_end
62*91f16700Schasinglulu };
63*91f16700Schasinglulu 
64*91f16700Schasinglulu enum pmu_pwrmode {
65*91f16700Schasinglulu 	pmu_mode_en = 0,
66*91f16700Schasinglulu 	pmu_mode_core_src_gt,
67*91f16700Schasinglulu 	pmu_mode_glb_int_dis,
68*91f16700Schasinglulu 	pmu_mode_l2_flush_en,
69*91f16700Schasinglulu 	pmu_mode_bus_pd,
70*91f16700Schasinglulu 	pmu_mode_cpu0_pd,
71*91f16700Schasinglulu 	pmu_mode_scu_pd,
72*91f16700Schasinglulu 	pmu_mode_pll_pd = 7,
73*91f16700Schasinglulu 	pmu_mode_chip_pd,
74*91f16700Schasinglulu 	pmu_mode_pwr_off_comb,
75*91f16700Schasinglulu 	pmu_mode_pmu_alive_use_lf,
76*91f16700Schasinglulu 	pmu_mode_pmu_use_lf,
77*91f16700Schasinglulu 	pmu_mode_osc_dis = 12,
78*91f16700Schasinglulu 	pmu_mode_input_clamp,
79*91f16700Schasinglulu 	pmu_mode_wkup_rst,
80*91f16700Schasinglulu 	pmu_mode_sref0_enter,
81*91f16700Schasinglulu 	pmu_mode_sref1_enter,
82*91f16700Schasinglulu 	pmu_mode_ddrio0_ret,
83*91f16700Schasinglulu 	pmu_mode_ddrio1_ret,
84*91f16700Schasinglulu 	pmu_mode_ddrc0_gt,
85*91f16700Schasinglulu 	pmu_mode_ddrc1_gt,
86*91f16700Schasinglulu 	pmu_mode_ddrio0_ret_deq,
87*91f16700Schasinglulu 	pmu_mode_ddrio1_ret_deq,
88*91f16700Schasinglulu };
89*91f16700Schasinglulu 
90*91f16700Schasinglulu enum pmu_pwrmode1 {
91*91f16700Schasinglulu 	pmu_mode_clr_bus = 0,
92*91f16700Schasinglulu 	pmu_mode_clr_core,
93*91f16700Schasinglulu 	pmu_mode_clr_cpup,
94*91f16700Schasinglulu 	pmu_mode_clr_alive,
95*91f16700Schasinglulu 	pmu_mode_clr_dma,
96*91f16700Schasinglulu 	pmu_mode_clr_peri,
97*91f16700Schasinglulu 	pmu_mode_clr_gpu,
98*91f16700Schasinglulu 	pmu_mode_clr_video,
99*91f16700Schasinglulu 	pmu_mode_clr_hevc,
100*91f16700Schasinglulu 	pmu_mode_clr_vio
101*91f16700Schasinglulu };
102*91f16700Schasinglulu 
103*91f16700Schasinglulu enum pmu_sft_con {
104*91f16700Schasinglulu 	pmu_sft_ddrio0_ret_cfg = 6,
105*91f16700Schasinglulu 	pmu_sft_ddrio1_ret_cfg = 9,
106*91f16700Schasinglulu 	pmu_sft_l2flsh = 15,
107*91f16700Schasinglulu };
108*91f16700Schasinglulu 
109*91f16700Schasinglulu enum pmu_wakeup_cfg1 {
110*91f16700Schasinglulu 	pmu_armint_wakeup_en = 0,
111*91f16700Schasinglulu 	pmu_gpio_wakeup_negedge,
112*91f16700Schasinglulu 	pmu_sdmmc0_wakeup_en,
113*91f16700Schasinglulu 	pmu_gpioint_wakeup_en,
114*91f16700Schasinglulu };
115*91f16700Schasinglulu 
116*91f16700Schasinglulu enum pmu_bus_idle_st {
117*91f16700Schasinglulu 	pmu_idle_bus = 0,
118*91f16700Schasinglulu 	pmu_idle_peri,
119*91f16700Schasinglulu 	pmu_idle_gpu,
120*91f16700Schasinglulu 	pmu_idle_video,
121*91f16700Schasinglulu 	pmu_idle_vio,
122*91f16700Schasinglulu 	pmu_idle_core,
123*91f16700Schasinglulu 	pmu_idle_alive,
124*91f16700Schasinglulu 	pmu_idle_dma,
125*91f16700Schasinglulu 	pmu_idle_cpup,
126*91f16700Schasinglulu 	pmu_idle_hevc,
127*91f16700Schasinglulu 	pmu_idle_ack_bus = 16,
128*91f16700Schasinglulu 	pmu_idle_ack_peri,
129*91f16700Schasinglulu 	pmu_idle_ack_gpu,
130*91f16700Schasinglulu 	pmu_idle_ack_video,
131*91f16700Schasinglulu 	pmu_idle_ack_vio,
132*91f16700Schasinglulu 	pmu_idle_ack_core,
133*91f16700Schasinglulu 	pmu_idle_ack_alive,
134*91f16700Schasinglulu 	pmu_idle_ack_dma,
135*91f16700Schasinglulu 	pmu_idle_ack_cpup,
136*91f16700Schasinglulu 	pmu_idle_ack_hevc,
137*91f16700Schasinglulu };
138*91f16700Schasinglulu 
139*91f16700Schasinglulu #define CHECK_CPU_WFIE_BASE		(0)
140*91f16700Schasinglulu 
141*91f16700Schasinglulu #define clstl_cpu_wfe		-1
142*91f16700Schasinglulu #define clstb_cpu_wfe		-1
143*91f16700Schasinglulu #define CKECK_WFEI_MSK		0
144*91f16700Schasinglulu 
145*91f16700Schasinglulu 
146*91f16700Schasinglulu #define PD_CTR_LOOP		500
147*91f16700Schasinglulu #define CHK_CPU_LOOP		500
148*91f16700Schasinglulu 
149*91f16700Schasinglulu #define MAX_WAIT_CONUT 1000
150*91f16700Schasinglulu 
151*91f16700Schasinglulu #endif /* PMU_H */
152