xref: /rk3399_ARM-atf/plat/mediatek/drivers/spm/mt8196/mt_spm_internal.h (revision af0370f25a6663a0d737bbfb3985df4232eaaa55)
1*a24b53e0SWenzhen Yu /*
2*a24b53e0SWenzhen Yu  * Copyright (c) 2025, Mediatek Inc. All rights reserved.
3*a24b53e0SWenzhen Yu  *
4*a24b53e0SWenzhen Yu  * SPDX-License-Identifier: BSD-3-Clause
5*a24b53e0SWenzhen Yu  */
6*a24b53e0SWenzhen Yu 
7*a24b53e0SWenzhen Yu #ifndef MT_SPM_INTERNAL_H
8*a24b53e0SWenzhen Yu #define MT_SPM_INTERNAL_H
9*a24b53e0SWenzhen Yu 
10*a24b53e0SWenzhen Yu #include <dbg_ctrl.h>
11*a24b53e0SWenzhen Yu #include <mt_spm.h>
12*a24b53e0SWenzhen Yu #include <mt_spm_stats.h>
13*a24b53e0SWenzhen Yu 
14*a24b53e0SWenzhen Yu /**************************************
15*a24b53e0SWenzhen Yu  * Config and Parameter
16*a24b53e0SWenzhen Yu  **************************************/
17*a24b53e0SWenzhen Yu #define POWER_ON_VAL0_DEF	0x0000F100
18*a24b53e0SWenzhen Yu /* SPM_POWER_ON_VAL1 */
19*a24b53e0SWenzhen Yu #define POWER_ON_VAL1_DEF	0x003FFE20
20*a24b53e0SWenzhen Yu /* SPM_WAKE_MASK*/
21*a24b53e0SWenzhen Yu #define SPM_WAKEUP_EVENT_MASK_DEF	0xEFFFFFFF
22*a24b53e0SWenzhen Yu 
23*a24b53e0SWenzhen Yu #define PCM_WDT_TIMEOUT		(30 * 32768)    /* 30s */
24*a24b53e0SWenzhen Yu #define PCM_TIMER_MAX		(0xFFFFFFFF)
25*a24b53e0SWenzhen Yu /**************************************
26*a24b53e0SWenzhen Yu  * Define and Declare
27*a24b53e0SWenzhen Yu  **************************************/
28*a24b53e0SWenzhen Yu /* MD32PCM ADDR for SPM code fetch */
29*a24b53e0SWenzhen Yu #define MD32PCM_BASE				(SPM_BASE + 0x0A00)
30*a24b53e0SWenzhen Yu #define MD32PCM_CFGREG_SW_RSTN			(MD32PCM_BASE + 0x0000)
31*a24b53e0SWenzhen Yu #define MD32PCM_DMA0_SRC			(MD32PCM_BASE + 0x0200)
32*a24b53e0SWenzhen Yu #define MD32PCM_DMA0_DST			(MD32PCM_BASE + 0x0204)
33*a24b53e0SWenzhen Yu #define MD32PCM_DMA0_WPPT			(MD32PCM_BASE + 0x0208)
34*a24b53e0SWenzhen Yu #define MD32PCM_DMA0_WPTO			(MD32PCM_BASE + 0x020C)
35*a24b53e0SWenzhen Yu #define MD32PCM_DMA0_COUNT			(MD32PCM_BASE + 0x0210)
36*a24b53e0SWenzhen Yu #define MD32PCM_DMA0_CON			(MD32PCM_BASE + 0x0214)
37*a24b53e0SWenzhen Yu #define MD32PCM_DMA0_START			(MD32PCM_BASE + 0x0218)
38*a24b53e0SWenzhen Yu #define MD32PCM_DMA0_RLCT			(MD32PCM_BASE + 0x0224)
39*a24b53e0SWenzhen Yu #define MD32PCM_INTC_IRQ_RAW_STA		(MD32PCM_BASE + 0x033C)
40*a24b53e0SWenzhen Yu 
41*a24b53e0SWenzhen Yu /* ABORT MASK for DEBUG FOORTPRINT */
42*a24b53e0SWenzhen Yu #define DEBUG_ABORT_MASK (SPM_DBG_DEBUG_IDX_DRAM_SREF_ABORT_IN_APSRC | \
43*a24b53e0SWenzhen Yu 			  SPM_DBG_DEBUG_IDX_DRAM_SREF_ABORT_IN_DDREN)
44*a24b53e0SWenzhen Yu 
45*a24b53e0SWenzhen Yu #define DEBUG_ABORT_MASK_1 (SPM_DBG1_DEBUG_IDX_VTCXO_SLEEP_ABORT_0 | \
46*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_VTCXO_SLEEP_ABORT_1 | \
47*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_VCORE_SLEEP_ABORT_0 | \
48*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_VCORE_SLEEP_ABORT_1 | \
49*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_PMIC_IRQ_ACK_LOW_ABORT | \
50*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_PMIC_IRQ_ACK_HIGH_ABORT | \
51*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_PWRAP_SLEEP_ACK_LOW_ABORT | \
52*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_PWRAP_SLEEP_ACK_HIGH_ABORT | \
53*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_SCP_SLP_ACK_LOW_ABORT | \
54*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_SCP_SLP_ACK_HIGH_ABORT | \
55*a24b53e0SWenzhen Yu 			    SPM_DBG1_DEBUG_IDX_SPM_PMIF_CMD_RDY_ABORT)
56*a24b53e0SWenzhen Yu 
57*a24b53e0SWenzhen Yu struct pwr_ctrl {
58*a24b53e0SWenzhen Yu 
59*a24b53e0SWenzhen Yu 	/* For SPM */
60*a24b53e0SWenzhen Yu 	uint32_t pcm_flags;
61*a24b53e0SWenzhen Yu 	uint32_t pcm_flags_cust;
62*a24b53e0SWenzhen Yu 	uint32_t pcm_flags_cust_set;
63*a24b53e0SWenzhen Yu 	uint32_t pcm_flags_cust_clr;
64*a24b53e0SWenzhen Yu 	uint32_t pcm_flags1;
65*a24b53e0SWenzhen Yu 	uint32_t pcm_flags1_cust;
66*a24b53e0SWenzhen Yu 	uint32_t pcm_flags1_cust_set;
67*a24b53e0SWenzhen Yu 	uint32_t pcm_flags1_cust_clr;
68*a24b53e0SWenzhen Yu 	uint32_t timer_val;
69*a24b53e0SWenzhen Yu 	uint32_t timer_val_cust;
70*a24b53e0SWenzhen Yu 	uint32_t timer_val_ramp_en;
71*a24b53e0SWenzhen Yu 	uint32_t timer_val_ramp_en_sec;
72*a24b53e0SWenzhen Yu 	uint32_t wake_src;
73*a24b53e0SWenzhen Yu 	uint32_t wake_src_cust;
74*a24b53e0SWenzhen Yu 	uint32_t wakelock_timer_val;
75*a24b53e0SWenzhen Yu 	uint8_t wdt_disable;
76*a24b53e0SWenzhen Yu 	/* Auto-gen Start */
77*a24b53e0SWenzhen Yu 
78*a24b53e0SWenzhen Yu 	/* SPM_CLK_CON */
79*a24b53e0SWenzhen Yu 	uint8_t reg_spm_lock_infra_dcm_lsb;
80*a24b53e0SWenzhen Yu 	uint8_t reg_cxo32k_remove_en_lsb;
81*a24b53e0SWenzhen Yu 	uint8_t reg_spm_leave_suspend_merge_mask_lsb;
82*a24b53e0SWenzhen Yu 	uint8_t reg_sysclk0_src_mb_lsb;
83*a24b53e0SWenzhen Yu 	uint8_t reg_sysclk1_src_mb_lsb;
84*a24b53e0SWenzhen Yu 	uint8_t reg_sysclk2_src_mb_lsb;
85*a24b53e0SWenzhen Yu 
86*a24b53e0SWenzhen Yu 	/* SPM_AP_STANDBY_CON */
87*a24b53e0SWenzhen Yu 	uint8_t reg_wfi_op;
88*a24b53e0SWenzhen Yu 	uint8_t reg_wfi_type;
89*a24b53e0SWenzhen Yu 	uint8_t reg_mp0_cputop_idle_mask;
90*a24b53e0SWenzhen Yu 	uint8_t reg_mp1_cputop_idle_mask;
91*a24b53e0SWenzhen Yu 	uint8_t reg_mcusys_idle_mask;
92*a24b53e0SWenzhen Yu 	uint8_t reg_csyspwrup_req_mask_lsb;
93*a24b53e0SWenzhen Yu 	uint8_t reg_wfi_af_sel;
94*a24b53e0SWenzhen Yu 	uint8_t reg_cpu_sleep_wfi;
95*a24b53e0SWenzhen Yu 
96*a24b53e0SWenzhen Yu 	/* SPM_SRC_REQ */
97*a24b53e0SWenzhen Yu 	uint8_t reg_spm_adsp_mailbox_req;
98*a24b53e0SWenzhen Yu 	uint8_t reg_spm_apsrc_req;
99*a24b53e0SWenzhen Yu 	uint8_t reg_spm_ddren_req;
100*a24b53e0SWenzhen Yu 	uint8_t reg_spm_dvfs_req;
101*a24b53e0SWenzhen Yu 	uint8_t reg_spm_emi_req;
102*a24b53e0SWenzhen Yu 	uint8_t reg_spm_f26m_req;
103*a24b53e0SWenzhen Yu 	uint8_t reg_spm_infra_req;
104*a24b53e0SWenzhen Yu 	uint8_t reg_spm_pmic_req;
105*a24b53e0SWenzhen Yu 	uint8_t reg_spm_scp_mailbox_req;
106*a24b53e0SWenzhen Yu 	uint8_t reg_spm_sspm_mailbox_req;
107*a24b53e0SWenzhen Yu 	uint8_t reg_spm_sw_mailbox_req;
108*a24b53e0SWenzhen Yu 	uint8_t reg_spm_vcore_req;
109*a24b53e0SWenzhen Yu 	uint8_t reg_spm_vrf18_req;
110*a24b53e0SWenzhen Yu 	uint8_t adsp_mailbox_state;
111*a24b53e0SWenzhen Yu 	uint8_t apsrc_state;
112*a24b53e0SWenzhen Yu 	uint8_t ddren_state;
113*a24b53e0SWenzhen Yu 	uint8_t dvfs_state;
114*a24b53e0SWenzhen Yu 	uint8_t emi_state;
115*a24b53e0SWenzhen Yu 	uint8_t f26m_state;
116*a24b53e0SWenzhen Yu 	uint8_t infra_state;
117*a24b53e0SWenzhen Yu 	uint8_t pmic_state;
118*a24b53e0SWenzhen Yu 	uint8_t scp_mailbox_state;
119*a24b53e0SWenzhen Yu 	uint8_t sspm_mailbox_state;
120*a24b53e0SWenzhen Yu 	uint8_t sw_mailbox_state;
121*a24b53e0SWenzhen Yu 	uint8_t vcore_state;
122*a24b53e0SWenzhen Yu 	uint8_t vrf18_state;
123*a24b53e0SWenzhen Yu 
124*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_0 */
125*a24b53e0SWenzhen Yu 	uint8_t reg_apifr_apsrc_rmb;
126*a24b53e0SWenzhen Yu 	uint8_t reg_apifr_ddren_rmb;
127*a24b53e0SWenzhen Yu 	uint8_t reg_apifr_emi_rmb;
128*a24b53e0SWenzhen Yu 	uint8_t reg_apifr_infra_rmb;
129*a24b53e0SWenzhen Yu 	uint8_t reg_apifr_pmic_rmb;
130*a24b53e0SWenzhen Yu 	uint8_t reg_apifr_srcclkena_mb;
131*a24b53e0SWenzhen Yu 	uint8_t reg_apifr_vcore_rmb;
132*a24b53e0SWenzhen Yu 	uint8_t reg_apifr_vrf18_rmb;
133*a24b53e0SWenzhen Yu 	uint8_t reg_apu_apsrc_rmb;
134*a24b53e0SWenzhen Yu 	uint8_t reg_apu_ddren_rmb;
135*a24b53e0SWenzhen Yu 	uint8_t reg_apu_emi_rmb;
136*a24b53e0SWenzhen Yu 	uint8_t reg_apu_infra_rmb;
137*a24b53e0SWenzhen Yu 	uint8_t reg_apu_pmic_rmb;
138*a24b53e0SWenzhen Yu 	uint8_t reg_apu_srcclkena_mb;
139*a24b53e0SWenzhen Yu 	uint8_t reg_apu_vcore_rmb;
140*a24b53e0SWenzhen Yu 	uint8_t reg_apu_vrf18_rmb;
141*a24b53e0SWenzhen Yu 	uint8_t reg_audio_apsrc_rmb;
142*a24b53e0SWenzhen Yu 	uint8_t reg_audio_ddren_rmb;
143*a24b53e0SWenzhen Yu 	uint8_t reg_audio_emi_rmb;
144*a24b53e0SWenzhen Yu 	uint8_t reg_audio_infra_rmb;
145*a24b53e0SWenzhen Yu 	uint8_t reg_audio_pmic_rmb;
146*a24b53e0SWenzhen Yu 	uint8_t reg_audio_srcclkena_mb;
147*a24b53e0SWenzhen Yu 	uint8_t reg_audio_vcore_rmb;
148*a24b53e0SWenzhen Yu 	uint8_t reg_audio_vrf18_rmb;
149*a24b53e0SWenzhen Yu 
150*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_1 */
151*a24b53e0SWenzhen Yu 	uint8_t reg_audio_dsp_apsrc_rmb;
152*a24b53e0SWenzhen Yu 	uint8_t reg_audio_dsp_ddren_rmb;
153*a24b53e0SWenzhen Yu 	uint8_t reg_audio_dsp_emi_rmb;
154*a24b53e0SWenzhen Yu 	uint8_t reg_audio_dsp_infra_rmb;
155*a24b53e0SWenzhen Yu 	uint8_t reg_audio_dsp_pmic_rmb;
156*a24b53e0SWenzhen Yu 	uint8_t reg_audio_dsp_srcclkena_mb;
157*a24b53e0SWenzhen Yu 	uint8_t reg_audio_dsp_vcore_rmb;
158*a24b53e0SWenzhen Yu 	uint8_t reg_audio_dsp_vrf18_rmb;
159*a24b53e0SWenzhen Yu 	uint8_t reg_cam_apsrc_rmb;
160*a24b53e0SWenzhen Yu 	uint8_t reg_cam_ddren_rmb;
161*a24b53e0SWenzhen Yu 	uint8_t reg_cam_emi_rmb;
162*a24b53e0SWenzhen Yu 	uint8_t reg_cam_infra_rmb;
163*a24b53e0SWenzhen Yu 	uint8_t reg_cam_pmic_rmb;
164*a24b53e0SWenzhen Yu 	uint8_t reg_cam_srcclkena_mb;
165*a24b53e0SWenzhen Yu 	uint8_t reg_cam_vrf18_rmb;
166*a24b53e0SWenzhen Yu 	uint32_t reg_ccif_apsrc_rmb;
167*a24b53e0SWenzhen Yu 
168*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_2 */
169*a24b53e0SWenzhen Yu 	uint32_t reg_ccif_emi_rmb;
170*a24b53e0SWenzhen Yu 	uint32_t reg_ccif_infra_rmb;
171*a24b53e0SWenzhen Yu 
172*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_3 */
173*a24b53e0SWenzhen Yu 	uint32_t reg_ccif_pmic_rmb;
174*a24b53e0SWenzhen Yu 	uint32_t reg_ccif_srcclkena_mb;
175*a24b53e0SWenzhen Yu 
176*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_4 */
177*a24b53e0SWenzhen Yu 	uint32_t reg_ccif_vcore_rmb;
178*a24b53e0SWenzhen Yu 	uint32_t reg_ccif_vrf18_rmb;
179*a24b53e0SWenzhen Yu 	uint8_t reg_ccu_apsrc_rmb;
180*a24b53e0SWenzhen Yu 	uint8_t reg_ccu_ddren_rmb;
181*a24b53e0SWenzhen Yu 	uint8_t reg_ccu_emi_rmb;
182*a24b53e0SWenzhen Yu 	uint8_t reg_ccu_infra_rmb;
183*a24b53e0SWenzhen Yu 	uint8_t reg_ccu_pmic_rmb;
184*a24b53e0SWenzhen Yu 	uint8_t reg_ccu_srcclkena_mb;
185*a24b53e0SWenzhen Yu 	uint8_t reg_ccu_vrf18_rmb;
186*a24b53e0SWenzhen Yu 	uint8_t reg_cg_check_apsrc_rmb;
187*a24b53e0SWenzhen Yu 
188*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_5 */
189*a24b53e0SWenzhen Yu 	uint8_t reg_cg_check_ddren_rmb;
190*a24b53e0SWenzhen Yu 	uint8_t reg_cg_check_emi_rmb;
191*a24b53e0SWenzhen Yu 	uint8_t reg_cg_check_infra_rmb;
192*a24b53e0SWenzhen Yu 	uint8_t reg_cg_check_pmic_rmb;
193*a24b53e0SWenzhen Yu 	uint8_t reg_cg_check_srcclkena_mb;
194*a24b53e0SWenzhen Yu 	uint8_t reg_cg_check_vcore_rmb;
195*a24b53e0SWenzhen Yu 	uint8_t reg_cg_check_vrf18_rmb;
196*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_apsrc_rmb;
197*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_ddren_rmb;
198*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_emi_rmb;
199*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_infra_rmb;
200*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_pmic_rmb;
201*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_srcclkena_mb;
202*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_vcore_rmb;
203*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_vrf18_rmb;
204*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_1_apsrc_rmb;
205*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_1_ddren_rmb;
206*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_1_emi_rmb;
207*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_1_infra_rmb;
208*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_1_pmic_rmb;
209*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_1_srcclkena_mb;
210*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_1_vcore_rmb;
211*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_1_vrf18_rmb;
212*a24b53e0SWenzhen Yu 
213*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_6 */
214*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_2_apsrc_rmb;
215*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_2_ddren_rmb;
216*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_2_emi_rmb;
217*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_2_infra_rmb;
218*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_2_pmic_rmb;
219*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_2_srcclkena_mb;
220*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_2_vcore_rmb;
221*a24b53e0SWenzhen Yu 	uint8_t reg_cksys_2_vrf18_rmb;
222*a24b53e0SWenzhen Yu 	uint8_t reg_conn_apsrc_rmb;
223*a24b53e0SWenzhen Yu 	uint8_t reg_conn_ddren_rmb;
224*a24b53e0SWenzhen Yu 	uint8_t reg_conn_emi_rmb;
225*a24b53e0SWenzhen Yu 	uint8_t reg_conn_infra_rmb;
226*a24b53e0SWenzhen Yu 	uint8_t reg_conn_pmic_rmb;
227*a24b53e0SWenzhen Yu 	uint8_t reg_conn_srcclkena_mb;
228*a24b53e0SWenzhen Yu 	uint8_t reg_conn_srcclkenb_mb;
229*a24b53e0SWenzhen Yu 	uint8_t reg_conn_vcore_rmb;
230*a24b53e0SWenzhen Yu 	uint8_t reg_conn_vrf18_rmb;
231*a24b53e0SWenzhen Yu 	uint8_t reg_corecfg_apsrc_rmb;
232*a24b53e0SWenzhen Yu 	uint8_t reg_corecfg_ddren_rmb;
233*a24b53e0SWenzhen Yu 	uint8_t reg_corecfg_emi_rmb;
234*a24b53e0SWenzhen Yu 	uint8_t reg_corecfg_infra_rmb;
235*a24b53e0SWenzhen Yu 	uint8_t reg_corecfg_pmic_rmb;
236*a24b53e0SWenzhen Yu 	uint8_t reg_corecfg_srcclkena_mb;
237*a24b53e0SWenzhen Yu 	uint8_t reg_corecfg_vcore_rmb;
238*a24b53e0SWenzhen Yu 	uint8_t reg_corecfg_vrf18_rmb;
239*a24b53e0SWenzhen Yu 
240*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_7 */
241*a24b53e0SWenzhen Yu 	uint8_t reg_cpueb_apsrc_rmb;
242*a24b53e0SWenzhen Yu 	uint8_t reg_cpueb_ddren_rmb;
243*a24b53e0SWenzhen Yu 	uint8_t reg_cpueb_emi_rmb;
244*a24b53e0SWenzhen Yu 	uint8_t reg_cpueb_infra_rmb;
245*a24b53e0SWenzhen Yu 	uint8_t reg_cpueb_pmic_rmb;
246*a24b53e0SWenzhen Yu 	uint8_t reg_cpueb_srcclkena_mb;
247*a24b53e0SWenzhen Yu 	uint8_t reg_cpueb_vcore_rmb;
248*a24b53e0SWenzhen Yu 	uint8_t reg_cpueb_vrf18_rmb;
249*a24b53e0SWenzhen Yu 	uint8_t reg_disp0_apsrc_rmb;
250*a24b53e0SWenzhen Yu 	uint8_t reg_disp0_ddren_rmb;
251*a24b53e0SWenzhen Yu 	uint8_t reg_disp0_emi_rmb;
252*a24b53e0SWenzhen Yu 	uint8_t reg_disp0_infra_rmb;
253*a24b53e0SWenzhen Yu 	uint8_t reg_disp0_pmic_rmb;
254*a24b53e0SWenzhen Yu 	uint8_t reg_disp0_srcclkena_mb;
255*a24b53e0SWenzhen Yu 	uint8_t reg_disp0_vrf18_rmb;
256*a24b53e0SWenzhen Yu 	uint8_t reg_disp1_apsrc_rmb;
257*a24b53e0SWenzhen Yu 	uint8_t reg_disp1_ddren_rmb;
258*a24b53e0SWenzhen Yu 	uint8_t reg_disp1_emi_rmb;
259*a24b53e0SWenzhen Yu 	uint8_t reg_disp1_infra_rmb;
260*a24b53e0SWenzhen Yu 	uint8_t reg_disp1_pmic_rmb;
261*a24b53e0SWenzhen Yu 	uint8_t reg_disp1_srcclkena_mb;
262*a24b53e0SWenzhen Yu 	uint8_t reg_disp1_vrf18_rmb;
263*a24b53e0SWenzhen Yu 	uint8_t reg_dpm_apsrc_rmb;
264*a24b53e0SWenzhen Yu 	uint8_t reg_dpm_ddren_rmb;
265*a24b53e0SWenzhen Yu 
266*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_8 */
267*a24b53e0SWenzhen Yu 	uint8_t reg_dpm_emi_rmb;
268*a24b53e0SWenzhen Yu 	uint8_t reg_dpm_infra_rmb;
269*a24b53e0SWenzhen Yu 	uint8_t reg_dpm_pmic_rmb;
270*a24b53e0SWenzhen Yu 	uint8_t reg_dpm_srcclkena_mb;
271*a24b53e0SWenzhen Yu 	uint8_t reg_dpm_vcore_rmb;
272*a24b53e0SWenzhen Yu 	uint8_t reg_dpm_vrf18_rmb;
273*a24b53e0SWenzhen Yu 	uint8_t reg_dpmaif_apsrc_rmb;
274*a24b53e0SWenzhen Yu 	uint8_t reg_dpmaif_ddren_rmb;
275*a24b53e0SWenzhen Yu 	uint8_t reg_dpmaif_emi_rmb;
276*a24b53e0SWenzhen Yu 	uint8_t reg_dpmaif_infra_rmb;
277*a24b53e0SWenzhen Yu 	uint8_t reg_dpmaif_pmic_rmb;
278*a24b53e0SWenzhen Yu 	uint8_t reg_dpmaif_srcclkena_mb;
279*a24b53e0SWenzhen Yu 	uint8_t reg_dpmaif_vcore_rmb;
280*a24b53e0SWenzhen Yu 	uint8_t reg_dpmaif_vrf18_rmb;
281*a24b53e0SWenzhen Yu 
282*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_9 */
283*a24b53e0SWenzhen Yu 	uint8_t reg_dvfsrc_level_rmb;
284*a24b53e0SWenzhen Yu 	uint8_t reg_emisys_apsrc_rmb;
285*a24b53e0SWenzhen Yu 	uint8_t reg_emisys_ddren_rmb;
286*a24b53e0SWenzhen Yu 	uint8_t reg_emisys_emi_rmb;
287*a24b53e0SWenzhen Yu 	uint8_t reg_emisys_infra_rmb;
288*a24b53e0SWenzhen Yu 	uint8_t reg_emisys_pmic_rmb;
289*a24b53e0SWenzhen Yu 	uint8_t reg_emisys_srcclkena_mb;
290*a24b53e0SWenzhen Yu 	uint8_t reg_emisys_vcore_rmb;
291*a24b53e0SWenzhen Yu 	uint8_t reg_emisys_vrf18_rmb;
292*a24b53e0SWenzhen Yu 	uint8_t reg_gce_apsrc_rmb;
293*a24b53e0SWenzhen Yu 	uint8_t reg_gce_ddren_rmb;
294*a24b53e0SWenzhen Yu 	uint8_t reg_gce_emi_rmb;
295*a24b53e0SWenzhen Yu 	uint8_t reg_gce_infra_rmb;
296*a24b53e0SWenzhen Yu 	uint8_t reg_gce_pmic_rmb;
297*a24b53e0SWenzhen Yu 	uint8_t reg_gce_srcclkena_mb;
298*a24b53e0SWenzhen Yu 	uint8_t reg_gce_vcore_rmb;
299*a24b53e0SWenzhen Yu 	uint8_t reg_gce_vrf18_rmb;
300*a24b53e0SWenzhen Yu 	uint8_t reg_gpueb_apsrc_rmb;
301*a24b53e0SWenzhen Yu 	uint8_t reg_gpueb_ddren_rmb;
302*a24b53e0SWenzhen Yu 	uint8_t reg_gpueb_emi_rmb;
303*a24b53e0SWenzhen Yu 	uint8_t reg_gpueb_infra_rmb;
304*a24b53e0SWenzhen Yu 	uint8_t reg_gpueb_pmic_rmb;
305*a24b53e0SWenzhen Yu 	uint8_t reg_gpueb_srcclkena_mb;
306*a24b53e0SWenzhen Yu 	uint8_t reg_gpueb_vcore_rmb;
307*a24b53e0SWenzhen Yu 	uint8_t reg_gpueb_vrf18_rmb;
308*a24b53e0SWenzhen Yu 	uint8_t reg_hwccf_apsrc_rmb;
309*a24b53e0SWenzhen Yu 	uint8_t reg_hwccf_ddren_rmb;
310*a24b53e0SWenzhen Yu 	uint8_t reg_hwccf_emi_rmb;
311*a24b53e0SWenzhen Yu 	uint8_t reg_hwccf_infra_rmb;
312*a24b53e0SWenzhen Yu 	uint8_t reg_hwccf_pmic_rmb;
313*a24b53e0SWenzhen Yu 	uint8_t reg_hwccf_srcclkena_mb;
314*a24b53e0SWenzhen Yu 	uint8_t reg_hwccf_vcore_rmb;
315*a24b53e0SWenzhen Yu 
316*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_10 */
317*a24b53e0SWenzhen Yu 	uint8_t reg_hwccf_vrf18_rmb;
318*a24b53e0SWenzhen Yu 	uint8_t reg_img_apsrc_rmb;
319*a24b53e0SWenzhen Yu 	uint8_t reg_img_ddren_rmb;
320*a24b53e0SWenzhen Yu 	uint8_t reg_img_emi_rmb;
321*a24b53e0SWenzhen Yu 	uint8_t reg_img_infra_rmb;
322*a24b53e0SWenzhen Yu 	uint8_t reg_img_pmic_rmb;
323*a24b53e0SWenzhen Yu 	uint8_t reg_img_srcclkena_mb;
324*a24b53e0SWenzhen Yu 	uint8_t reg_img_vrf18_rmb;
325*a24b53e0SWenzhen Yu 	uint8_t reg_infrasys_apsrc_rmb;
326*a24b53e0SWenzhen Yu 	uint8_t reg_infrasys_ddren_rmb;
327*a24b53e0SWenzhen Yu 	uint8_t reg_infrasys_emi_rmb;
328*a24b53e0SWenzhen Yu 	uint8_t reg_infrasys_infra_rmb;
329*a24b53e0SWenzhen Yu 	uint8_t reg_infrasys_pmic_rmb;
330*a24b53e0SWenzhen Yu 	uint8_t reg_infrasys_srcclkena_mb;
331*a24b53e0SWenzhen Yu 	uint8_t reg_infrasys_vcore_rmb;
332*a24b53e0SWenzhen Yu 	uint8_t reg_infrasys_vrf18_rmb;
333*a24b53e0SWenzhen Yu 	uint8_t reg_ipic_infra_rmb;
334*a24b53e0SWenzhen Yu 	uint8_t reg_ipic_vrf18_rmb;
335*a24b53e0SWenzhen Yu 	uint8_t reg_mcu_apsrc_rmb;
336*a24b53e0SWenzhen Yu 	uint8_t reg_mcu_ddren_rmb;
337*a24b53e0SWenzhen Yu 	uint8_t reg_mcu_emi_rmb;
338*a24b53e0SWenzhen Yu 	uint8_t reg_mcu_infra_rmb;
339*a24b53e0SWenzhen Yu 	uint8_t reg_mcu_pmic_rmb;
340*a24b53e0SWenzhen Yu 	uint8_t reg_mcu_srcclkena_mb;
341*a24b53e0SWenzhen Yu 	uint8_t reg_mcu_vcore_rmb;
342*a24b53e0SWenzhen Yu 	uint8_t reg_mcu_vrf18_rmb;
343*a24b53e0SWenzhen Yu 	uint8_t reg_md_apsrc_rmb;
344*a24b53e0SWenzhen Yu 	uint8_t reg_md_ddren_rmb;
345*a24b53e0SWenzhen Yu 	uint8_t reg_md_emi_rmb;
346*a24b53e0SWenzhen Yu 	uint8_t reg_md_infra_rmb;
347*a24b53e0SWenzhen Yu 	uint8_t reg_md_pmic_rmb;
348*a24b53e0SWenzhen Yu 	uint8_t reg_md_srcclkena_mb;
349*a24b53e0SWenzhen Yu 
350*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_11 */
351*a24b53e0SWenzhen Yu 	uint8_t reg_md_srcclkena1_mb;
352*a24b53e0SWenzhen Yu 	uint8_t reg_md_vcore_rmb;
353*a24b53e0SWenzhen Yu 	uint8_t reg_md_vrf18_rmb;
354*a24b53e0SWenzhen Yu 	uint8_t reg_mm_proc_apsrc_rmb;
355*a24b53e0SWenzhen Yu 	uint8_t reg_mm_proc_ddren_rmb;
356*a24b53e0SWenzhen Yu 	uint8_t reg_mm_proc_emi_rmb;
357*a24b53e0SWenzhen Yu 	uint8_t reg_mm_proc_infra_rmb;
358*a24b53e0SWenzhen Yu 	uint8_t reg_mm_proc_pmic_rmb;
359*a24b53e0SWenzhen Yu 	uint8_t reg_mm_proc_srcclkena_mb;
360*a24b53e0SWenzhen Yu 	uint8_t reg_mm_proc_vcore_rmb;
361*a24b53e0SWenzhen Yu 	uint8_t reg_mm_proc_vrf18_rmb;
362*a24b53e0SWenzhen Yu 	uint8_t reg_mml0_apsrc_rmb;
363*a24b53e0SWenzhen Yu 	uint8_t reg_mml0_ddren_rmb;
364*a24b53e0SWenzhen Yu 	uint8_t reg_mml0_emi_rmb;
365*a24b53e0SWenzhen Yu 	uint8_t reg_mml0_infra_rmb;
366*a24b53e0SWenzhen Yu 	uint8_t reg_mml0_pmic_rmb;
367*a24b53e0SWenzhen Yu 	uint8_t reg_mml0_srcclkena_mb;
368*a24b53e0SWenzhen Yu 	uint8_t reg_mml0_vrf18_rmb;
369*a24b53e0SWenzhen Yu 	uint8_t reg_mml1_apsrc_rmb;
370*a24b53e0SWenzhen Yu 	uint8_t reg_mml1_ddren_rmb;
371*a24b53e0SWenzhen Yu 	uint8_t reg_mml1_emi_rmb;
372*a24b53e0SWenzhen Yu 	uint8_t reg_mml1_infra_rmb;
373*a24b53e0SWenzhen Yu 	uint8_t reg_mml1_pmic_rmb;
374*a24b53e0SWenzhen Yu 	uint8_t reg_mml1_srcclkena_mb;
375*a24b53e0SWenzhen Yu 	uint8_t reg_mml1_vrf18_rmb;
376*a24b53e0SWenzhen Yu 	uint8_t reg_ovl0_apsrc_rmb;
377*a24b53e0SWenzhen Yu 	uint8_t reg_ovl0_ddren_rmb;
378*a24b53e0SWenzhen Yu 	uint8_t reg_ovl0_emi_rmb;
379*a24b53e0SWenzhen Yu 	uint8_t reg_ovl0_infra_rmb;
380*a24b53e0SWenzhen Yu 	uint8_t reg_ovl0_pmic_rmb;
381*a24b53e0SWenzhen Yu 	uint8_t reg_ovl0_srcclkena_mb;
382*a24b53e0SWenzhen Yu 	uint8_t reg_ovl0_vrf18_rmb;
383*a24b53e0SWenzhen Yu 
384*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_12 */
385*a24b53e0SWenzhen Yu 	uint8_t reg_ovl1_apsrc_rmb;
386*a24b53e0SWenzhen Yu 	uint8_t reg_ovl1_ddren_rmb;
387*a24b53e0SWenzhen Yu 	uint8_t reg_ovl1_emi_rmb;
388*a24b53e0SWenzhen Yu 	uint8_t reg_ovl1_infra_rmb;
389*a24b53e0SWenzhen Yu 	uint8_t reg_ovl1_pmic_rmb;
390*a24b53e0SWenzhen Yu 	uint8_t reg_ovl1_srcclkena_mb;
391*a24b53e0SWenzhen Yu 	uint8_t reg_ovl1_vrf18_rmb;
392*a24b53e0SWenzhen Yu 	uint8_t reg_pcie0_apsrc_rmb;
393*a24b53e0SWenzhen Yu 	uint8_t reg_pcie0_ddren_rmb;
394*a24b53e0SWenzhen Yu 	uint8_t reg_pcie0_emi_rmb;
395*a24b53e0SWenzhen Yu 	uint8_t reg_pcie0_infra_rmb;
396*a24b53e0SWenzhen Yu 	uint8_t reg_pcie0_pmic_rmb;
397*a24b53e0SWenzhen Yu 	uint8_t reg_pcie0_srcclkena_mb;
398*a24b53e0SWenzhen Yu 	uint8_t reg_pcie0_vcore_rmb;
399*a24b53e0SWenzhen Yu 	uint8_t reg_pcie0_vrf18_rmb;
400*a24b53e0SWenzhen Yu 	uint8_t reg_pcie1_apsrc_rmb;
401*a24b53e0SWenzhen Yu 	uint8_t reg_pcie1_ddren_rmb;
402*a24b53e0SWenzhen Yu 	uint8_t reg_pcie1_emi_rmb;
403*a24b53e0SWenzhen Yu 	uint8_t reg_pcie1_infra_rmb;
404*a24b53e0SWenzhen Yu 	uint8_t reg_pcie1_pmic_rmb;
405*a24b53e0SWenzhen Yu 	uint8_t reg_pcie1_srcclkena_mb;
406*a24b53e0SWenzhen Yu 	uint8_t reg_pcie1_vcore_rmb;
407*a24b53e0SWenzhen Yu 	uint8_t reg_pcie1_vrf18_rmb;
408*a24b53e0SWenzhen Yu 	uint8_t reg_perisys_apsrc_rmb;
409*a24b53e0SWenzhen Yu 	uint8_t reg_perisys_ddren_rmb;
410*a24b53e0SWenzhen Yu 	uint8_t reg_perisys_emi_rmb;
411*a24b53e0SWenzhen Yu 	uint8_t reg_perisys_infra_rmb;
412*a24b53e0SWenzhen Yu 	uint8_t reg_perisys_pmic_rmb;
413*a24b53e0SWenzhen Yu 	uint8_t reg_perisys_srcclkena_mb;
414*a24b53e0SWenzhen Yu 	uint8_t reg_perisys_vcore_rmb;
415*a24b53e0SWenzhen Yu 	uint8_t reg_perisys_vrf18_rmb;
416*a24b53e0SWenzhen Yu 	uint8_t reg_pmsr_apsrc_rmb;
417*a24b53e0SWenzhen Yu 
418*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_13 */
419*a24b53e0SWenzhen Yu 	uint8_t reg_pmsr_ddren_rmb;
420*a24b53e0SWenzhen Yu 	uint8_t reg_pmsr_emi_rmb;
421*a24b53e0SWenzhen Yu 	uint8_t reg_pmsr_infra_rmb;
422*a24b53e0SWenzhen Yu 	uint8_t reg_pmsr_pmic_rmb;
423*a24b53e0SWenzhen Yu 	uint8_t reg_pmsr_srcclkena_mb;
424*a24b53e0SWenzhen Yu 	uint8_t reg_pmsr_vcore_rmb;
425*a24b53e0SWenzhen Yu 	uint8_t reg_pmsr_vrf18_rmb;
426*a24b53e0SWenzhen Yu 	uint8_t reg_scp_apsrc_rmb;
427*a24b53e0SWenzhen Yu 	uint8_t reg_scp_ddren_rmb;
428*a24b53e0SWenzhen Yu 	uint8_t reg_scp_emi_rmb;
429*a24b53e0SWenzhen Yu 	uint8_t reg_scp_infra_rmb;
430*a24b53e0SWenzhen Yu 	uint8_t reg_scp_pmic_rmb;
431*a24b53e0SWenzhen Yu 	uint8_t reg_scp_srcclkena_mb;
432*a24b53e0SWenzhen Yu 	uint8_t reg_scp_vcore_rmb;
433*a24b53e0SWenzhen Yu 	uint8_t reg_scp_vrf18_rmb;
434*a24b53e0SWenzhen Yu 	uint8_t reg_spu_hwr_apsrc_rmb;
435*a24b53e0SWenzhen Yu 	uint8_t reg_spu_hwr_ddren_rmb;
436*a24b53e0SWenzhen Yu 	uint8_t reg_spu_hwr_emi_rmb;
437*a24b53e0SWenzhen Yu 	uint8_t reg_spu_hwr_infra_rmb;
438*a24b53e0SWenzhen Yu 	uint8_t reg_spu_hwr_pmic_rmb;
439*a24b53e0SWenzhen Yu 	uint8_t reg_spu_hwr_srcclkena_mb;
440*a24b53e0SWenzhen Yu 	uint8_t reg_spu_hwr_vcore_rmb;
441*a24b53e0SWenzhen Yu 	uint8_t reg_spu_hwr_vrf18_rmb;
442*a24b53e0SWenzhen Yu 	uint8_t reg_spu_ise_apsrc_rmb;
443*a24b53e0SWenzhen Yu 	uint8_t reg_spu_ise_ddren_rmb;
444*a24b53e0SWenzhen Yu 	uint8_t reg_spu_ise_emi_rmb;
445*a24b53e0SWenzhen Yu 	uint8_t reg_spu_ise_infra_rmb;
446*a24b53e0SWenzhen Yu 	uint8_t reg_spu_ise_pmic_rmb;
447*a24b53e0SWenzhen Yu 	uint8_t reg_spu_ise_srcclkena_mb;
448*a24b53e0SWenzhen Yu 	uint8_t reg_spu_ise_vcore_rmb;
449*a24b53e0SWenzhen Yu 	uint8_t reg_spu_ise_vrf18_rmb;
450*a24b53e0SWenzhen Yu 
451*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_14 */
452*a24b53e0SWenzhen Yu 	uint8_t reg_srcclkeni_infra_rmb;
453*a24b53e0SWenzhen Yu 	uint8_t reg_srcclkeni_pmic_rmb;
454*a24b53e0SWenzhen Yu 	uint8_t reg_srcclkeni_srcclkena_mb;
455*a24b53e0SWenzhen Yu 	uint8_t reg_srcclkeni_vcore_rmb;
456*a24b53e0SWenzhen Yu 	uint8_t reg_sspm_apsrc_rmb;
457*a24b53e0SWenzhen Yu 	uint8_t reg_sspm_ddren_rmb;
458*a24b53e0SWenzhen Yu 	uint8_t reg_sspm_emi_rmb;
459*a24b53e0SWenzhen Yu 	uint8_t reg_sspm_infra_rmb;
460*a24b53e0SWenzhen Yu 	uint8_t reg_sspm_pmic_rmb;
461*a24b53e0SWenzhen Yu 	uint8_t reg_sspm_srcclkena_mb;
462*a24b53e0SWenzhen Yu 	uint8_t reg_sspm_vrf18_rmb;
463*a24b53e0SWenzhen Yu 	uint8_t reg_ssrsys_apsrc_rmb;
464*a24b53e0SWenzhen Yu 	uint8_t reg_ssrsys_ddren_rmb;
465*a24b53e0SWenzhen Yu 	uint8_t reg_ssrsys_emi_rmb;
466*a24b53e0SWenzhen Yu 	uint8_t reg_ssrsys_infra_rmb;
467*a24b53e0SWenzhen Yu 	uint8_t reg_ssrsys_pmic_rmb;
468*a24b53e0SWenzhen Yu 	uint8_t reg_ssrsys_srcclkena_mb;
469*a24b53e0SWenzhen Yu 	uint8_t reg_ssrsys_vcore_rmb;
470*a24b53e0SWenzhen Yu 	uint8_t reg_ssrsys_vrf18_rmb;
471*a24b53e0SWenzhen Yu 	uint8_t reg_ssusb_apsrc_rmb;
472*a24b53e0SWenzhen Yu 	uint8_t reg_ssusb_ddren_rmb;
473*a24b53e0SWenzhen Yu 	uint8_t reg_ssusb_emi_rmb;
474*a24b53e0SWenzhen Yu 	uint8_t reg_ssusb_infra_rmb;
475*a24b53e0SWenzhen Yu 	uint8_t reg_ssusb_pmic_rmb;
476*a24b53e0SWenzhen Yu 	uint8_t reg_ssusb_srcclkena_mb;
477*a24b53e0SWenzhen Yu 	uint8_t reg_ssusb_vcore_rmb;
478*a24b53e0SWenzhen Yu 	uint8_t reg_ssusb_vrf18_rmb;
479*a24b53e0SWenzhen Yu 	uint8_t reg_uart_hub_infra_rmb;
480*a24b53e0SWenzhen Yu 
481*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_15 */
482*a24b53e0SWenzhen Yu 	uint8_t reg_uart_hub_pmic_rmb;
483*a24b53e0SWenzhen Yu 	uint8_t reg_uart_hub_srcclkena_mb;
484*a24b53e0SWenzhen Yu 	uint8_t reg_uart_hub_vcore_rmb;
485*a24b53e0SWenzhen Yu 	uint8_t reg_uart_hub_vrf18_rmb;
486*a24b53e0SWenzhen Yu 	uint8_t reg_ufs_apsrc_rmb;
487*a24b53e0SWenzhen Yu 	uint8_t reg_ufs_ddren_rmb;
488*a24b53e0SWenzhen Yu 	uint8_t reg_ufs_emi_rmb;
489*a24b53e0SWenzhen Yu 	uint8_t reg_ufs_infra_rmb;
490*a24b53e0SWenzhen Yu 	uint8_t reg_ufs_pmic_rmb;
491*a24b53e0SWenzhen Yu 	uint8_t reg_ufs_srcclkena_mb;
492*a24b53e0SWenzhen Yu 	uint8_t reg_ufs_vcore_rmb;
493*a24b53e0SWenzhen Yu 	uint8_t reg_ufs_vrf18_rmb;
494*a24b53e0SWenzhen Yu 	uint8_t reg_vdec_apsrc_rmb;
495*a24b53e0SWenzhen Yu 	uint8_t reg_vdec_ddren_rmb;
496*a24b53e0SWenzhen Yu 	uint8_t reg_vdec_emi_rmb;
497*a24b53e0SWenzhen Yu 	uint8_t reg_vdec_infra_rmb;
498*a24b53e0SWenzhen Yu 	uint8_t reg_vdec_pmic_rmb;
499*a24b53e0SWenzhen Yu 	uint8_t reg_vdec_srcclkena_mb;
500*a24b53e0SWenzhen Yu 	uint8_t reg_vdec_vrf18_rmb;
501*a24b53e0SWenzhen Yu 	uint8_t reg_venc_apsrc_rmb;
502*a24b53e0SWenzhen Yu 	uint8_t reg_venc_ddren_rmb;
503*a24b53e0SWenzhen Yu 	uint8_t reg_venc_emi_rmb;
504*a24b53e0SWenzhen Yu 	uint8_t reg_venc_infra_rmb;
505*a24b53e0SWenzhen Yu 	uint8_t reg_venc_pmic_rmb;
506*a24b53e0SWenzhen Yu 	uint8_t reg_venc_srcclkena_mb;
507*a24b53e0SWenzhen Yu 	uint8_t reg_venc_vrf18_rmb;
508*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg_apsrc_rmb;
509*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg_ddren_rmb;
510*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg_emi_rmb;
511*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg_infra_rmb;
512*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg_pmic_rmb;
513*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg_srcclkena_mb;
514*a24b53e0SWenzhen Yu 
515*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_16 */
516*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg_vcore_rmb;
517*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg_vrf18_rmb;
518*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg1_apsrc_rmb;
519*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg1_ddren_rmb;
520*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg1_emi_rmb;
521*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg1_infra_rmb;
522*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg1_pmic_rmb;
523*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg1_srcclkena_mb;
524*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg1_vcore_rmb;
525*a24b53e0SWenzhen Yu 	uint8_t reg_vlpcfg1_vrf18_rmb;
526*a24b53e0SWenzhen Yu 
527*a24b53e0SWenzhen Yu 	/* SPM_EVENT_CON_MISC */
528*a24b53e0SWenzhen Yu 	uint8_t reg_srcclken_fast_resp;
529*a24b53e0SWenzhen Yu 	uint8_t reg_csyspwrup_ack_mask;
530*a24b53e0SWenzhen Yu 
531*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_17 */
532*a24b53e0SWenzhen Yu 	uint32_t reg_spm_sw_vcore_rmb;
533*a24b53e0SWenzhen Yu 	uint32_t reg_spm_sw_pmic_rmb;
534*a24b53e0SWenzhen Yu 
535*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_18 */
536*a24b53e0SWenzhen Yu 	uint32_t reg_spm_sw_srcclkena_mb;
537*a24b53e0SWenzhen Yu 
538*a24b53e0SWenzhen Yu 	/* SPM_WAKE_MASK*/
539*a24b53e0SWenzhen Yu 	uint32_t reg_wake_mask;
540*a24b53e0SWenzhen Yu 
541*a24b53e0SWenzhen Yu 	/* SPM_WAKEUP_EVENT_EXT_MASK */
542*a24b53e0SWenzhen Yu 	uint32_t reg_ext_wake_mask;
543*a24b53e0SWenzhen Yu };
544*a24b53e0SWenzhen Yu 
545*a24b53e0SWenzhen Yu enum pwr_ctrl_enum {
546*a24b53e0SWenzhen Yu 	PW_PCM_FLAGS,
547*a24b53e0SWenzhen Yu 	PW_PCM_FLAGS_CUST,
548*a24b53e0SWenzhen Yu 	PW_PCM_FLAGS_CUST_SET,
549*a24b53e0SWenzhen Yu 	PW_PCM_FLAGS_CUST_CLR,
550*a24b53e0SWenzhen Yu 	PW_PCM_FLAGS1,
551*a24b53e0SWenzhen Yu 	PW_PCM_FLAGS1_CUST,
552*a24b53e0SWenzhen Yu 	PW_PCM_FLAGS1_CUST_SET,
553*a24b53e0SWenzhen Yu 	PW_PCM_FLAGS1_CUST_CLR,
554*a24b53e0SWenzhen Yu 	PW_TIMER_VAL,
555*a24b53e0SWenzhen Yu 	PW_TIMER_VAL_CUST,
556*a24b53e0SWenzhen Yu 	PW_TIMER_VAL_RAMP_EN,
557*a24b53e0SWenzhen Yu 	PW_TIMER_VAL_RAMP_EN_SEC,
558*a24b53e0SWenzhen Yu 	PW_WAKE_SRC,
559*a24b53e0SWenzhen Yu 	PW_WAKE_SRC_CUST,
560*a24b53e0SWenzhen Yu 	PW_WAKELOCK_TIMER_VAL,
561*a24b53e0SWenzhen Yu 	PW_WDT_DISABLE,
562*a24b53e0SWenzhen Yu 
563*a24b53e0SWenzhen Yu 	/* SPM_SRC_REQ */
564*a24b53e0SWenzhen Yu 	PW_REG_SPM_ADSP_MAILBOX_REQ,
565*a24b53e0SWenzhen Yu 	PW_REG_SPM_APSRC_REQ,
566*a24b53e0SWenzhen Yu 	PW_REG_SPM_DDREN_REQ,
567*a24b53e0SWenzhen Yu 	PW_REG_SPM_DVFS_REQ,
568*a24b53e0SWenzhen Yu 	PW_REG_SPM_EMI_REQ,
569*a24b53e0SWenzhen Yu 	PW_REG_SPM_F26M_REQ,
570*a24b53e0SWenzhen Yu 	PW_REG_SPM_INFRA_REQ,
571*a24b53e0SWenzhen Yu 	PW_REG_SPM_PMIC_REQ,
572*a24b53e0SWenzhen Yu 	PW_REG_SPM_SCP_MAILBOX_REQ,
573*a24b53e0SWenzhen Yu 	PW_REG_SPM_SSPM_MAILBOX_REQ,
574*a24b53e0SWenzhen Yu 	PW_REG_SPM_SW_MAILBOX_REQ,
575*a24b53e0SWenzhen Yu 	PW_REG_SPM_VCORE_REQ,
576*a24b53e0SWenzhen Yu 	PW_REG_SPM_VRF18_REQ,
577*a24b53e0SWenzhen Yu 
578*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_0 */
579*a24b53e0SWenzhen Yu 	PW_REG_APIFR_APSRC_RMB,
580*a24b53e0SWenzhen Yu 	PW_REG_APIFR_DDREN_RMB,
581*a24b53e0SWenzhen Yu 	PW_REG_APIFR_EMI_RMB,
582*a24b53e0SWenzhen Yu 	PW_REG_APIFR_INFRA_RMB,
583*a24b53e0SWenzhen Yu 	PW_REG_APIFR_PMIC_RMB,
584*a24b53e0SWenzhen Yu 	PW_REG_APIFR_SRCCLKENA_MB,
585*a24b53e0SWenzhen Yu 	PW_REG_APIFR_VCORE_RMB,
586*a24b53e0SWenzhen Yu 	PW_REG_APIFR_VRF18_RMB,
587*a24b53e0SWenzhen Yu 	PW_REG_APU_APSRC_RMB,
588*a24b53e0SWenzhen Yu 	PW_REG_APU_DDREN_RMB,
589*a24b53e0SWenzhen Yu 	PW_REG_APU_EMI_RMB,
590*a24b53e0SWenzhen Yu 	PW_REG_APU_INFRA_RMB,
591*a24b53e0SWenzhen Yu 	PW_REG_APU_PMIC_RMB,
592*a24b53e0SWenzhen Yu 	PW_REG_APU_SRCCLKENA_MB,
593*a24b53e0SWenzhen Yu 	PW_REG_APU_VCORE_RMB,
594*a24b53e0SWenzhen Yu 	PW_REG_APU_VRF18_RMB,
595*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_APSRC_RMB,
596*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DDREN_RMB,
597*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_EMI_RMB,
598*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_INFRA_RMB,
599*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_PMIC_RMB,
600*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_SRCCLKENA_MB,
601*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_VCORE_RMB,
602*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_VRF18_RMB,
603*a24b53e0SWenzhen Yu 
604*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_1 */
605*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DSP_APSRC_RMB,
606*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DSP_DDREN_RMB,
607*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DSP_EMI_RMB,
608*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DSP_INFRA_RMB,
609*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DSP_PMIC_RMB,
610*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DSP_SRCCLKENA_MB,
611*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DSP_VCORE_RMB,
612*a24b53e0SWenzhen Yu 	PW_REG_AUDIO_DSP_VRF18_RMB,
613*a24b53e0SWenzhen Yu 	PW_REG_CAM_APSRC_RMB,
614*a24b53e0SWenzhen Yu 	PW_REG_CAM_DDREN_RMB,
615*a24b53e0SWenzhen Yu 	PW_REG_CAM_EMI_RMB,
616*a24b53e0SWenzhen Yu 	PW_REG_CAM_INFRA_RMB,
617*a24b53e0SWenzhen Yu 	PW_REG_CAM_PMIC_RMB,
618*a24b53e0SWenzhen Yu 	PW_REG_CAM_SRCCLKENA_MB,
619*a24b53e0SWenzhen Yu 	PW_REG_CAM_VRF18_RMB,
620*a24b53e0SWenzhen Yu 	PW_REG_CCIF_APSRC_RMB,
621*a24b53e0SWenzhen Yu 
622*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_2 */
623*a24b53e0SWenzhen Yu 	PW_REG_CCIF_EMI_RMB,
624*a24b53e0SWenzhen Yu 	PW_REG_CCIF_INFRA_RMB,
625*a24b53e0SWenzhen Yu 
626*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_3 */
627*a24b53e0SWenzhen Yu 	PW_REG_CCIF_PMIC_RMB,
628*a24b53e0SWenzhen Yu 	PW_REG_CCIF_SRCCLKENA_MB,
629*a24b53e0SWenzhen Yu 
630*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_4 */
631*a24b53e0SWenzhen Yu 	PW_REG_CCIF_VCORE_RMB,
632*a24b53e0SWenzhen Yu 	PW_REG_CCIF_VRF18_RMB,
633*a24b53e0SWenzhen Yu 	PW_REG_CCU_APSRC_RMB,
634*a24b53e0SWenzhen Yu 	PW_REG_CCU_DDREN_RMB,
635*a24b53e0SWenzhen Yu 	PW_REG_CCU_EMI_RMB,
636*a24b53e0SWenzhen Yu 	PW_REG_CCU_INFRA_RMB,
637*a24b53e0SWenzhen Yu 	PW_REG_CCU_PMIC_RMB,
638*a24b53e0SWenzhen Yu 	PW_REG_CCU_SRCCLKENA_MB,
639*a24b53e0SWenzhen Yu 	PW_REG_CCU_VRF18_RMB,
640*a24b53e0SWenzhen Yu 	PW_REG_CG_CHECK_APSRC_RMB,
641*a24b53e0SWenzhen Yu 
642*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_5 */
643*a24b53e0SWenzhen Yu 	PW_REG_CG_CHECK_DDREN_RMB,
644*a24b53e0SWenzhen Yu 	PW_REG_CG_CHECK_EMI_RMB,
645*a24b53e0SWenzhen Yu 	PW_REG_CG_CHECK_INFRA_RMB,
646*a24b53e0SWenzhen Yu 	PW_REG_CG_CHECK_PMIC_RMB,
647*a24b53e0SWenzhen Yu 	PW_REG_CG_CHECK_SRCCLKENA_MB,
648*a24b53e0SWenzhen Yu 	PW_REG_CG_CHECK_VCORE_RMB,
649*a24b53e0SWenzhen Yu 	PW_REG_CG_CHECK_VRF18_RMB,
650*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_APSRC_RMB,
651*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_DDREN_RMB,
652*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_EMI_RMB,
653*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_INFRA_RMB,
654*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_PMIC_RMB,
655*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_SRCCLKENA_MB,
656*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_VCORE_RMB,
657*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_VRF18_RMB,
658*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_1_APSRC_RMB,
659*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_1_DDREN_RMB,
660*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_1_EMI_RMB,
661*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_1_INFRA_RMB,
662*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_1_PMIC_RMB,
663*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_1_SRCCLKENA_MB,
664*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_1_VCORE_RMB,
665*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_1_VRF18_RMB,
666*a24b53e0SWenzhen Yu 
667*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_6 */
668*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_2_APSRC_RMB,
669*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_2_DDREN_RMB,
670*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_2_EMI_RMB,
671*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_2_INFRA_RMB,
672*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_2_PMIC_RMB,
673*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_2_SRCCLKENA_MB,
674*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_2_VCORE_RMB,
675*a24b53e0SWenzhen Yu 	PW_REG_CKSYS_2_VRF18_RMB,
676*a24b53e0SWenzhen Yu 	PW_REG_CONN_APSRC_RMB,
677*a24b53e0SWenzhen Yu 	PW_REG_CONN_DDREN_RMB,
678*a24b53e0SWenzhen Yu 	PW_REG_CONN_EMI_RMB,
679*a24b53e0SWenzhen Yu 	PW_REG_CONN_INFRA_RMB,
680*a24b53e0SWenzhen Yu 	PW_REG_CONN_PMIC_RMB,
681*a24b53e0SWenzhen Yu 	PW_REG_CONN_SRCCLKENA_MB,
682*a24b53e0SWenzhen Yu 	PW_REG_CONN_SRCCLKENB_MB,
683*a24b53e0SWenzhen Yu 	PW_REG_CONN_VCORE_RMB,
684*a24b53e0SWenzhen Yu 	PW_REG_CONN_VRF18_RMB,
685*a24b53e0SWenzhen Yu 	PW_REG_CORECFG_APSRC_RMB,
686*a24b53e0SWenzhen Yu 	PW_REG_CORECFG_DDREN_RMB,
687*a24b53e0SWenzhen Yu 	PW_REG_CORECFG_EMI_RMB,
688*a24b53e0SWenzhen Yu 	PW_REG_CORECFG_INFRA_RMB,
689*a24b53e0SWenzhen Yu 	PW_REG_CORECFG_PMIC_RMB,
690*a24b53e0SWenzhen Yu 	PW_REG_CORECFG_SRCCLKENA_MB,
691*a24b53e0SWenzhen Yu 	PW_REG_CORECFG_VCORE_RMB,
692*a24b53e0SWenzhen Yu 	PW_REG_CORECFG_VRF18_RMB,
693*a24b53e0SWenzhen Yu 
694*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_7 */
695*a24b53e0SWenzhen Yu 	PW_REG_CPUEB_APSRC_RMB,
696*a24b53e0SWenzhen Yu 	PW_REG_CPUEB_DDREN_RMB,
697*a24b53e0SWenzhen Yu 	PW_REG_CPUEB_EMI_RMB,
698*a24b53e0SWenzhen Yu 	PW_REG_CPUEB_INFRA_RMB,
699*a24b53e0SWenzhen Yu 	PW_REG_CPUEB_PMIC_RMB,
700*a24b53e0SWenzhen Yu 	PW_REG_CPUEB_SRCCLKENA_MB,
701*a24b53e0SWenzhen Yu 	PW_REG_CPUEB_VCORE_RMB,
702*a24b53e0SWenzhen Yu 	PW_REG_CPUEB_VRF18_RMB,
703*a24b53e0SWenzhen Yu 	PW_REG_DISP0_APSRC_RMB,
704*a24b53e0SWenzhen Yu 	PW_REG_DISP0_DDREN_RMB,
705*a24b53e0SWenzhen Yu 	PW_REG_DISP0_EMI_RMB,
706*a24b53e0SWenzhen Yu 	PW_REG_DISP0_INFRA_RMB,
707*a24b53e0SWenzhen Yu 	PW_REG_DISP0_PMIC_RMB,
708*a24b53e0SWenzhen Yu 	PW_REG_DISP0_SRCCLKENA_MB,
709*a24b53e0SWenzhen Yu 	PW_REG_DISP0_VRF18_RMB,
710*a24b53e0SWenzhen Yu 	PW_REG_DISP1_APSRC_RMB,
711*a24b53e0SWenzhen Yu 	PW_REG_DISP1_DDREN_RMB,
712*a24b53e0SWenzhen Yu 	PW_REG_DISP1_EMI_RMB,
713*a24b53e0SWenzhen Yu 	PW_REG_DISP1_INFRA_RMB,
714*a24b53e0SWenzhen Yu 	PW_REG_DISP1_PMIC_RMB,
715*a24b53e0SWenzhen Yu 	PW_REG_DISP1_SRCCLKENA_MB,
716*a24b53e0SWenzhen Yu 	PW_REG_DISP1_VRF18_RMB,
717*a24b53e0SWenzhen Yu 	PW_REG_DPM_APSRC_RMB,
718*a24b53e0SWenzhen Yu 	PW_REG_DPM_DDREN_RMB,
719*a24b53e0SWenzhen Yu 
720*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_8 */
721*a24b53e0SWenzhen Yu 	PW_REG_DPM_EMI_RMB,
722*a24b53e0SWenzhen Yu 	PW_REG_DPM_INFRA_RMB,
723*a24b53e0SWenzhen Yu 	PW_REG_DPM_PMIC_RMB,
724*a24b53e0SWenzhen Yu 	PW_REG_DPM_SRCCLKENA_MB,
725*a24b53e0SWenzhen Yu 	PW_REG_DPM_VCORE_RMB,
726*a24b53e0SWenzhen Yu 	PW_REG_DPM_VRF18_RMB,
727*a24b53e0SWenzhen Yu 	PW_REG_DPMAIF_APSRC_RMB,
728*a24b53e0SWenzhen Yu 	PW_REG_DPMAIF_DDREN_RMB,
729*a24b53e0SWenzhen Yu 	PW_REG_DPMAIF_EMI_RMB,
730*a24b53e0SWenzhen Yu 	PW_REG_DPMAIF_INFRA_RMB,
731*a24b53e0SWenzhen Yu 	PW_REG_DPMAIF_PMIC_RMB,
732*a24b53e0SWenzhen Yu 	PW_REG_DPMAIF_SRCCLKENA_MB,
733*a24b53e0SWenzhen Yu 	PW_REG_DPMAIF_VCORE_RMB,
734*a24b53e0SWenzhen Yu 	PW_REG_DPMAIF_VRF18_RMB,
735*a24b53e0SWenzhen Yu 
736*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_9 */
737*a24b53e0SWenzhen Yu 	PW_REG_DVFSRC_LEVEL_RMB,
738*a24b53e0SWenzhen Yu 	PW_REG_EMISYS_APSRC_RMB,
739*a24b53e0SWenzhen Yu 	PW_REG_EMISYS_DDREN_RMB,
740*a24b53e0SWenzhen Yu 	PW_REG_EMISYS_EMI_RMB,
741*a24b53e0SWenzhen Yu 	PW_REG_EMISYS_INFRA_RMB,
742*a24b53e0SWenzhen Yu 	PW_REG_EMISYS_PMIC_RMB,
743*a24b53e0SWenzhen Yu 	PW_REG_EMISYS_SRCCLKENA_MB,
744*a24b53e0SWenzhen Yu 	PW_REG_EMISYS_VCORE_RMB,
745*a24b53e0SWenzhen Yu 	PW_REG_EMISYS_VRF18_RMB,
746*a24b53e0SWenzhen Yu 	PW_REG_GCE_APSRC_RMB,
747*a24b53e0SWenzhen Yu 	PW_REG_GCE_DDREN_RMB,
748*a24b53e0SWenzhen Yu 	PW_REG_GCE_EMI_RMB,
749*a24b53e0SWenzhen Yu 	PW_REG_GCE_INFRA_RMB,
750*a24b53e0SWenzhen Yu 	PW_REG_GCE_PMIC_RMB,
751*a24b53e0SWenzhen Yu 	PW_REG_GCE_SRCCLKENA_MB,
752*a24b53e0SWenzhen Yu 	PW_REG_GCE_VCORE_RMB,
753*a24b53e0SWenzhen Yu 	PW_REG_GCE_VRF18_RMB,
754*a24b53e0SWenzhen Yu 	PW_REG_GPUEB_APSRC_RMB,
755*a24b53e0SWenzhen Yu 	PW_REG_GPUEB_DDREN_RMB,
756*a24b53e0SWenzhen Yu 	PW_REG_GPUEB_EMI_RMB,
757*a24b53e0SWenzhen Yu 	PW_REG_GPUEB_INFRA_RMB,
758*a24b53e0SWenzhen Yu 	PW_REG_GPUEB_PMIC_RMB,
759*a24b53e0SWenzhen Yu 	PW_REG_GPUEB_SRCCLKENA_MB,
760*a24b53e0SWenzhen Yu 	PW_REG_GPUEB_VCORE_RMB,
761*a24b53e0SWenzhen Yu 	PW_REG_GPUEB_VRF18_RMB,
762*a24b53e0SWenzhen Yu 	PW_REG_HWCCF_APSRC_RMB,
763*a24b53e0SWenzhen Yu 	PW_REG_HWCCF_DDREN_RMB,
764*a24b53e0SWenzhen Yu 	PW_REG_HWCCF_EMI_RMB,
765*a24b53e0SWenzhen Yu 	PW_REG_HWCCF_INFRA_RMB,
766*a24b53e0SWenzhen Yu 	PW_REG_HWCCF_PMIC_RMB,
767*a24b53e0SWenzhen Yu 	PW_REG_HWCCF_SRCCLKENA_MB,
768*a24b53e0SWenzhen Yu 	PW_REG_HWCCF_VCORE_RMB,
769*a24b53e0SWenzhen Yu 
770*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_10 */
771*a24b53e0SWenzhen Yu 	PW_REG_HWCCF_VRF18_RMB,
772*a24b53e0SWenzhen Yu 	PW_REG_IMG_APSRC_RMB,
773*a24b53e0SWenzhen Yu 	PW_REG_IMG_DDREN_RMB,
774*a24b53e0SWenzhen Yu 	PW_REG_IMG_EMI_RMB,
775*a24b53e0SWenzhen Yu 	PW_REG_IMG_INFRA_RMB,
776*a24b53e0SWenzhen Yu 	PW_REG_IMG_PMIC_RMB,
777*a24b53e0SWenzhen Yu 	PW_REG_IMG_SRCCLKENA_MB,
778*a24b53e0SWenzhen Yu 	PW_REG_IMG_VRF18_RMB,
779*a24b53e0SWenzhen Yu 	PW_REG_INFRASYS_APSRC_RMB,
780*a24b53e0SWenzhen Yu 	PW_REG_INFRASYS_DDREN_RMB,
781*a24b53e0SWenzhen Yu 	PW_REG_INFRASYS_EMI_RMB,
782*a24b53e0SWenzhen Yu 	PW_REG_INFRASYS_INFRA_RMB,
783*a24b53e0SWenzhen Yu 	PW_REG_INFRASYS_PMIC_RMB,
784*a24b53e0SWenzhen Yu 	PW_REG_INFRASYS_SRCCLKENA_MB,
785*a24b53e0SWenzhen Yu 	PW_REG_INFRASYS_VCORE_RMB,
786*a24b53e0SWenzhen Yu 	PW_REG_INFRASYS_VRF18_RMB,
787*a24b53e0SWenzhen Yu 	PW_REG_IPIC_INFRA_RMB,
788*a24b53e0SWenzhen Yu 	PW_REG_IPIC_VRF18_RMB,
789*a24b53e0SWenzhen Yu 	PW_REG_MCU_APSRC_RMB,
790*a24b53e0SWenzhen Yu 	PW_REG_MCU_DDREN_RMB,
791*a24b53e0SWenzhen Yu 	PW_REG_MCU_EMI_RMB,
792*a24b53e0SWenzhen Yu 	PW_REG_MCU_INFRA_RMB,
793*a24b53e0SWenzhen Yu 	PW_REG_MCU_PMIC_RMB,
794*a24b53e0SWenzhen Yu 	PW_REG_MCU_SRCCLKENA_MB,
795*a24b53e0SWenzhen Yu 	PW_REG_MCU_VCORE_RMB,
796*a24b53e0SWenzhen Yu 	PW_REG_MCU_VRF18_RMB,
797*a24b53e0SWenzhen Yu 	PW_REG_MD_APSRC_RMB,
798*a24b53e0SWenzhen Yu 	PW_REG_MD_DDREN_RMB,
799*a24b53e0SWenzhen Yu 	PW_REG_MD_EMI_RMB,
800*a24b53e0SWenzhen Yu 	PW_REG_MD_INFRA_RMB,
801*a24b53e0SWenzhen Yu 	PW_REG_MD_PMIC_RMB,
802*a24b53e0SWenzhen Yu 	PW_REG_MD_SRCCLKENA_MB,
803*a24b53e0SWenzhen Yu 
804*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_11 */
805*a24b53e0SWenzhen Yu 	PW_REG_MD_SRCCLKENA1_MB,
806*a24b53e0SWenzhen Yu 	PW_REG_MD_VCORE_RMB,
807*a24b53e0SWenzhen Yu 	PW_REG_MD_VRF18_RMB,
808*a24b53e0SWenzhen Yu 	PW_REG_MM_PROC_APSRC_RMB,
809*a24b53e0SWenzhen Yu 	PW_REG_MM_PROC_DDREN_RMB,
810*a24b53e0SWenzhen Yu 	PW_REG_MM_PROC_EMI_RMB,
811*a24b53e0SWenzhen Yu 	PW_REG_MM_PROC_INFRA_RMB,
812*a24b53e0SWenzhen Yu 	PW_REG_MM_PROC_PMIC_RMB,
813*a24b53e0SWenzhen Yu 	PW_REG_MM_PROC_SRCCLKENA_MB,
814*a24b53e0SWenzhen Yu 	PW_REG_MM_PROC_VCORE_RMB,
815*a24b53e0SWenzhen Yu 	PW_REG_MM_PROC_VRF18_RMB,
816*a24b53e0SWenzhen Yu 	PW_REG_MML0_APSRC_RMB,
817*a24b53e0SWenzhen Yu 	PW_REG_MML0_DDREN_RMB,
818*a24b53e0SWenzhen Yu 	PW_REG_MML0_EMI_RMB,
819*a24b53e0SWenzhen Yu 	PW_REG_MML0_INFRA_RMB,
820*a24b53e0SWenzhen Yu 	PW_REG_MML0_PMIC_RMB,
821*a24b53e0SWenzhen Yu 	PW_REG_MML0_SRCCLKENA_MB,
822*a24b53e0SWenzhen Yu 	PW_REG_MML0_VRF18_RMB,
823*a24b53e0SWenzhen Yu 	PW_REG_MML1_APSRC_RMB,
824*a24b53e0SWenzhen Yu 	PW_REG_MML1_DDREN_RMB,
825*a24b53e0SWenzhen Yu 	PW_REG_MML1_EMI_RMB,
826*a24b53e0SWenzhen Yu 	PW_REG_MML1_INFRA_RMB,
827*a24b53e0SWenzhen Yu 	PW_REG_MML1_PMIC_RMB,
828*a24b53e0SWenzhen Yu 	PW_REG_MML1_SRCCLKENA_MB,
829*a24b53e0SWenzhen Yu 	PW_REG_MML1_VRF18_RMB,
830*a24b53e0SWenzhen Yu 	PW_REG_OVL0_APSRC_RMB,
831*a24b53e0SWenzhen Yu 	PW_REG_OVL0_DDREN_RMB,
832*a24b53e0SWenzhen Yu 	PW_REG_OVL0_EMI_RMB,
833*a24b53e0SWenzhen Yu 	PW_REG_OVL0_INFRA_RMB,
834*a24b53e0SWenzhen Yu 	PW_REG_OVL0_PMIC_RMB,
835*a24b53e0SWenzhen Yu 	PW_REG_OVL0_SRCCLKENA_MB,
836*a24b53e0SWenzhen Yu 	PW_REG_OVL0_VRF18_RMB,
837*a24b53e0SWenzhen Yu 
838*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_12 */
839*a24b53e0SWenzhen Yu 	PW_REG_OVL1_APSRC_RMB,
840*a24b53e0SWenzhen Yu 	PW_REG_OVL1_DDREN_RMB,
841*a24b53e0SWenzhen Yu 	PW_REG_OVL1_EMI_RMB,
842*a24b53e0SWenzhen Yu 	PW_REG_OVL1_INFRA_RMB,
843*a24b53e0SWenzhen Yu 	PW_REG_OVL1_PMIC_RMB,
844*a24b53e0SWenzhen Yu 	PW_REG_OVL1_SRCCLKENA_MB,
845*a24b53e0SWenzhen Yu 	PW_REG_OVL1_VRF18_RMB,
846*a24b53e0SWenzhen Yu 	PW_REG_PCIE0_APSRC_RMB,
847*a24b53e0SWenzhen Yu 	PW_REG_PCIE0_DDREN_RMB,
848*a24b53e0SWenzhen Yu 	PW_REG_PCIE0_EMI_RMB,
849*a24b53e0SWenzhen Yu 	PW_REG_PCIE0_INFRA_RMB,
850*a24b53e0SWenzhen Yu 	PW_REG_PCIE0_PMIC_RMB,
851*a24b53e0SWenzhen Yu 	PW_REG_PCIE0_SRCCLKENA_MB,
852*a24b53e0SWenzhen Yu 	PW_REG_PCIE0_VCORE_RMB,
853*a24b53e0SWenzhen Yu 	PW_REG_PCIE0_VRF18_RMB,
854*a24b53e0SWenzhen Yu 	PW_REG_PCIE1_APSRC_RMB,
855*a24b53e0SWenzhen Yu 	PW_REG_PCIE1_DDREN_RMB,
856*a24b53e0SWenzhen Yu 	PW_REG_PCIE1_EMI_RMB,
857*a24b53e0SWenzhen Yu 	PW_REG_PCIE1_INFRA_RMB,
858*a24b53e0SWenzhen Yu 	PW_REG_PCIE1_PMIC_RMB,
859*a24b53e0SWenzhen Yu 	PW_REG_PCIE1_SRCCLKENA_MB,
860*a24b53e0SWenzhen Yu 	PW_REG_PCIE1_VCORE_RMB,
861*a24b53e0SWenzhen Yu 	PW_REG_PCIE1_VRF18_RMB,
862*a24b53e0SWenzhen Yu 	PW_REG_PERISYS_APSRC_RMB,
863*a24b53e0SWenzhen Yu 	PW_REG_PERISYS_DDREN_RMB,
864*a24b53e0SWenzhen Yu 	PW_REG_PERISYS_EMI_RMB,
865*a24b53e0SWenzhen Yu 	PW_REG_PERISYS_INFRA_RMB,
866*a24b53e0SWenzhen Yu 	PW_REG_PERISYS_PMIC_RMB,
867*a24b53e0SWenzhen Yu 	PW_REG_PERISYS_SRCCLKENA_MB,
868*a24b53e0SWenzhen Yu 	PW_REG_PERISYS_VCORE_RMB,
869*a24b53e0SWenzhen Yu 	PW_REG_PERISYS_VRF18_RMB,
870*a24b53e0SWenzhen Yu 	PW_REG_PMSR_APSRC_RMB,
871*a24b53e0SWenzhen Yu 
872*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_13 */
873*a24b53e0SWenzhen Yu 	PW_REG_PMSR_DDREN_RMB,
874*a24b53e0SWenzhen Yu 	PW_REG_PMSR_EMI_RMB,
875*a24b53e0SWenzhen Yu 	PW_REG_PMSR_INFRA_RMB,
876*a24b53e0SWenzhen Yu 	PW_REG_PMSR_PMIC_RMB,
877*a24b53e0SWenzhen Yu 	PW_REG_PMSR_SRCCLKENA_MB,
878*a24b53e0SWenzhen Yu 	PW_REG_PMSR_VCORE_RMB,
879*a24b53e0SWenzhen Yu 	PW_REG_PMSR_VRF18_RMB,
880*a24b53e0SWenzhen Yu 	PW_REG_SCP_APSRC_RMB,
881*a24b53e0SWenzhen Yu 	PW_REG_SCP_DDREN_RMB,
882*a24b53e0SWenzhen Yu 	PW_REG_SCP_EMI_RMB,
883*a24b53e0SWenzhen Yu 	PW_REG_SCP_INFRA_RMB,
884*a24b53e0SWenzhen Yu 	PW_REG_SCP_PMIC_RMB,
885*a24b53e0SWenzhen Yu 	PW_REG_SCP_SRCCLKENA_MB,
886*a24b53e0SWenzhen Yu 	PW_REG_SCP_VCORE_RMB,
887*a24b53e0SWenzhen Yu 	PW_REG_SCP_VRF18_RMB,
888*a24b53e0SWenzhen Yu 	PW_REG_SPU_HWR_APSRC_RMB,
889*a24b53e0SWenzhen Yu 	PW_REG_SPU_HWR_DDREN_RMB,
890*a24b53e0SWenzhen Yu 	PW_REG_SPU_HWR_EMI_RMB,
891*a24b53e0SWenzhen Yu 	PW_REG_SPU_HWR_INFRA_RMB,
892*a24b53e0SWenzhen Yu 	PW_REG_SPU_HWR_PMIC_RMB,
893*a24b53e0SWenzhen Yu 	PW_REG_SPU_HWR_SRCCLKENA_MB,
894*a24b53e0SWenzhen Yu 	PW_REG_SPU_HWR_VCORE_RMB,
895*a24b53e0SWenzhen Yu 	PW_REG_SPU_HWR_VRF18_RMB,
896*a24b53e0SWenzhen Yu 	PW_REG_SPU_ISE_APSRC_RMB,
897*a24b53e0SWenzhen Yu 	PW_REG_SPU_ISE_DDREN_RMB,
898*a24b53e0SWenzhen Yu 	PW_REG_SPU_ISE_EMI_RMB,
899*a24b53e0SWenzhen Yu 	PW_REG_SPU_ISE_INFRA_RMB,
900*a24b53e0SWenzhen Yu 	PW_REG_SPU_ISE_PMIC_RMB,
901*a24b53e0SWenzhen Yu 	PW_REG_SPU_ISE_SRCCLKENA_MB,
902*a24b53e0SWenzhen Yu 	PW_REG_SPU_ISE_VCORE_RMB,
903*a24b53e0SWenzhen Yu 	PW_REG_SPU_ISE_VRF18_RMB,
904*a24b53e0SWenzhen Yu 
905*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_14 */
906*a24b53e0SWenzhen Yu 	PW_REG_SRCCLKENI_INFRA_RMB,
907*a24b53e0SWenzhen Yu 	PW_REG_SRCCLKENI_PMIC_RMB,
908*a24b53e0SWenzhen Yu 	PW_REG_SRCCLKENI_SRCCLKENA_MB,
909*a24b53e0SWenzhen Yu 	PW_REG_SRCCLKENI_VCORE_RMB,
910*a24b53e0SWenzhen Yu 	PW_REG_SSPM_APSRC_RMB,
911*a24b53e0SWenzhen Yu 	PW_REG_SSPM_DDREN_RMB,
912*a24b53e0SWenzhen Yu 	PW_REG_SSPM_EMI_RMB,
913*a24b53e0SWenzhen Yu 	PW_REG_SSPM_INFRA_RMB,
914*a24b53e0SWenzhen Yu 	PW_REG_SSPM_PMIC_RMB,
915*a24b53e0SWenzhen Yu 	PW_REG_SSPM_SRCCLKENA_MB,
916*a24b53e0SWenzhen Yu 	PW_REG_SSPM_VRF18_RMB,
917*a24b53e0SWenzhen Yu 	PW_REG_SSRSYS_APSRC_RMB,
918*a24b53e0SWenzhen Yu 	PW_REG_SSRSYS_DDREN_RMB,
919*a24b53e0SWenzhen Yu 	PW_REG_SSRSYS_EMI_RMB,
920*a24b53e0SWenzhen Yu 	PW_REG_SSRSYS_INFRA_RMB,
921*a24b53e0SWenzhen Yu 	PW_REG_SSRSYS_PMIC_RMB,
922*a24b53e0SWenzhen Yu 	PW_REG_SSRSYS_SRCCLKENA_MB,
923*a24b53e0SWenzhen Yu 	PW_REG_SSRSYS_VCORE_RMB,
924*a24b53e0SWenzhen Yu 	PW_REG_SSRSYS_VRF18_RMB,
925*a24b53e0SWenzhen Yu 	PW_REG_SSUSB_APSRC_RMB,
926*a24b53e0SWenzhen Yu 	PW_REG_SSUSB_DDREN_RMB,
927*a24b53e0SWenzhen Yu 	PW_REG_SSUSB_EMI_RMB,
928*a24b53e0SWenzhen Yu 	PW_REG_SSUSB_INFRA_RMB,
929*a24b53e0SWenzhen Yu 	PW_REG_SSUSB_PMIC_RMB,
930*a24b53e0SWenzhen Yu 	PW_REG_SSUSB_SRCCLKENA_MB,
931*a24b53e0SWenzhen Yu 	PW_REG_SSUSB_VCORE_RMB,
932*a24b53e0SWenzhen Yu 	PW_REG_SSUSB_VRF18_RMB,
933*a24b53e0SWenzhen Yu 	PW_REG_UART_HUB_INFRA_RMB,
934*a24b53e0SWenzhen Yu 
935*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_15 */
936*a24b53e0SWenzhen Yu 	PW_REG_UART_HUB_PMIC_RMB,
937*a24b53e0SWenzhen Yu 	PW_REG_UART_HUB_SRCCLKENA_MB,
938*a24b53e0SWenzhen Yu 	PW_REG_UART_HUB_VCORE_RMB,
939*a24b53e0SWenzhen Yu 	PW_REG_UART_HUB_VRF18_RMB,
940*a24b53e0SWenzhen Yu 	PW_REG_UFS_APSRC_RMB,
941*a24b53e0SWenzhen Yu 	PW_REG_UFS_DDREN_RMB,
942*a24b53e0SWenzhen Yu 	PW_REG_UFS_EMI_RMB,
943*a24b53e0SWenzhen Yu 	PW_REG_UFS_INFRA_RMB,
944*a24b53e0SWenzhen Yu 	PW_REG_UFS_PMIC_RMB,
945*a24b53e0SWenzhen Yu 	PW_REG_UFS_SRCCLKENA_MB,
946*a24b53e0SWenzhen Yu 	PW_REG_UFS_VCORE_RMB,
947*a24b53e0SWenzhen Yu 	PW_REG_UFS_VRF18_RMB,
948*a24b53e0SWenzhen Yu 	PW_REG_VDEC_APSRC_RMB,
949*a24b53e0SWenzhen Yu 	PW_REG_VDEC_DDREN_RMB,
950*a24b53e0SWenzhen Yu 	PW_REG_VDEC_EMI_RMB,
951*a24b53e0SWenzhen Yu 	PW_REG_VDEC_INFRA_RMB,
952*a24b53e0SWenzhen Yu 	PW_REG_VDEC_PMIC_RMB,
953*a24b53e0SWenzhen Yu 	PW_REG_VDEC_SRCCLKENA_MB,
954*a24b53e0SWenzhen Yu 	PW_REG_VDEC_VRF18_RMB,
955*a24b53e0SWenzhen Yu 	PW_REG_VENC_APSRC_RMB,
956*a24b53e0SWenzhen Yu 	PW_REG_VENC_DDREN_RMB,
957*a24b53e0SWenzhen Yu 	PW_REG_VENC_EMI_RMB,
958*a24b53e0SWenzhen Yu 	PW_REG_VENC_INFRA_RMB,
959*a24b53e0SWenzhen Yu 	PW_REG_VENC_PMIC_RMB,
960*a24b53e0SWenzhen Yu 	PW_REG_VENC_SRCCLKENA_MB,
961*a24b53e0SWenzhen Yu 	PW_REG_VENC_VRF18_RMB,
962*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG_APSRC_RMB,
963*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG_DDREN_RMB,
964*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG_EMI_RMB,
965*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG_INFRA_RMB,
966*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG_PMIC_RMB,
967*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG_SRCCLKENA_MB,
968*a24b53e0SWenzhen Yu 
969*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_16 */
970*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG_VCORE_RMB,
971*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG_VRF18_RMB,
972*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG1_APSRC_RMB,
973*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG1_DDREN_RMB,
974*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG1_EMI_RMB,
975*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG1_INFRA_RMB,
976*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG1_PMIC_RMB,
977*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG1_SRCCLKENA_MB,
978*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG1_VCORE_RMB,
979*a24b53e0SWenzhen Yu 	PW_REG_VLPCFG1_VRF18_RMB,
980*a24b53e0SWenzhen Yu 
981*a24b53e0SWenzhen Yu 	/* SPM_EVENT_CON_MISC */
982*a24b53e0SWenzhen Yu 	PW_REG_SRCCLKEN_FAST_RESP,
983*a24b53e0SWenzhen Yu 	PW_REG_CSYSPWRUP_ACK_MASK,
984*a24b53e0SWenzhen Yu 
985*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_17 */
986*a24b53e0SWenzhen Yu 	PW_REG_SPM_SW_VCORE_RMB,
987*a24b53e0SWenzhen Yu 	PW_REG_SPM_SW_PMIC_RMB,
988*a24b53e0SWenzhen Yu 
989*a24b53e0SWenzhen Yu 	/* SPM_SRC_MASK_18 */
990*a24b53e0SWenzhen Yu 	PW_REG_SPM_SW_SRCCLKENA_MB,
991*a24b53e0SWenzhen Yu 
992*a24b53e0SWenzhen Yu 	/* SPM_WAKE_MASK*/
993*a24b53e0SWenzhen Yu 	PW_REG_WAKEUP_EVENT_MASK,
994*a24b53e0SWenzhen Yu 
995*a24b53e0SWenzhen Yu 	/* SPM_WAKEUP_EVENT_EXT_MASK */
996*a24b53e0SWenzhen Yu 	PW_REG_EXT_WAKEUP_EVENT_MASK,
997*a24b53e0SWenzhen Yu 
998*a24b53e0SWenzhen Yu 	PW_MAX_COUNT,
999*a24b53e0SWenzhen Yu };
1000*a24b53e0SWenzhen Yu 
1001*a24b53e0SWenzhen Yu /*
1002*a24b53e0SWenzhen Yu  * HW_TARG_GROUP_SEL_3		: 3b'1 (pcm_reg_13)
1003*a24b53e0SWenzhen Yu  * HW_TARG_SIGNAL_SEL_3		: 5b'10101
1004*a24b53e0SWenzhen Yu  * HW_TRIG_GROUP_SEL_3		: 3'b100 (trig_reserve)
1005*a24b53e0SWenzhen Yu  * HW_TRIG_SIGNAL_SEL_3		: 5'b1100 (trig_reserve[24]=sc_hw_s1_req)
1006*a24b53e0SWenzhen Yu  */
1007*a24b53e0SWenzhen Yu #define SPM_ACK_CHK_3_SEL_HW_S1		(0x00350098)
1008*a24b53e0SWenzhen Yu #define SPM_ACK_CHK_3_HW_S1_CNT		(1)
1009*a24b53e0SWenzhen Yu 
1010*a24b53e0SWenzhen Yu #define SPM_ACK_CHK_3_CON_HW_MODE_TRIG	(0x800)
1011*a24b53e0SWenzhen Yu /* BIT[0]: SW_EN, BIT[4]: STA_EN, BIT[8]: HW_EN */
1012*a24b53e0SWenzhen Yu #define SPM_ACK_CHK_3_CON_EN		(0x110)
1013*a24b53e0SWenzhen Yu #define SPM_ACK_CHK_3_CON_CLR_ALL	(0x2)
1014*a24b53e0SWenzhen Yu /* BIT[15]: RESULT */
1015*a24b53e0SWenzhen Yu #define SPM_ACK_CHK_3_CON_RESULT	(0x8000)
1016*a24b53e0SWenzhen Yu 
1017*a24b53e0SWenzhen Yu struct wake_status_trace_comm {
1018*a24b53e0SWenzhen Yu 	uint32_t debug_flag;			/* PCM_WDT_LATCH_SPARE_0 */
1019*a24b53e0SWenzhen Yu 	uint32_t debug_flag1;			/* PCM_WDT_LATCH_SPARE_1 */
1020*a24b53e0SWenzhen Yu 	uint32_t timer_out;			/* SPM_SW_RSV_6*/
1021*a24b53e0SWenzhen Yu 	uint32_t b_sw_flag0;			/* SPM_SW_RSV_7 */
1022*a24b53e0SWenzhen Yu 	uint32_t b_sw_flag1;			/* SPM_SW_RSV_7 */
1023*a24b53e0SWenzhen Yu 	uint32_t r12;				/* SPM_SW_RSV_0 */
1024*a24b53e0SWenzhen Yu 	uint32_t r13;				/* PCM_REG13_DATA */
1025*a24b53e0SWenzhen Yu 	uint32_t req_sta0;			/* SRC_REQ_STA_0 */
1026*a24b53e0SWenzhen Yu 	uint32_t req_sta1;			/* SRC_REQ_STA_1 */
1027*a24b53e0SWenzhen Yu 	uint32_t req_sta2;			/* SRC_REQ_STA_2 */
1028*a24b53e0SWenzhen Yu 	uint32_t req_sta3;			/* SRC_REQ_STA_3 */
1029*a24b53e0SWenzhen Yu 	uint32_t req_sta4;			/* SRC_REQ_STA_4 */
1030*a24b53e0SWenzhen Yu 	uint32_t req_sta5;			/* SRC_REQ_STA_5 */
1031*a24b53e0SWenzhen Yu 	uint32_t req_sta6;			/* SRC_REQ_STA_6 */
1032*a24b53e0SWenzhen Yu 	uint32_t req_sta7;			/* SRC_REQ_STA_7 */
1033*a24b53e0SWenzhen Yu 	uint32_t req_sta8;			/* SRC_REQ_STA_8 */
1034*a24b53e0SWenzhen Yu 	uint32_t req_sta9;			/* SRC_REQ_STA_9 */
1035*a24b53e0SWenzhen Yu 	uint32_t req_sta10;			/* SRC_REQ_STA_10 */
1036*a24b53e0SWenzhen Yu 	uint32_t req_sta11;			/* SRC_REQ_STA_11 */
1037*a24b53e0SWenzhen Yu 	uint32_t req_sta12;			/* SRC_REQ_STA_12 */
1038*a24b53e0SWenzhen Yu 	uint32_t req_sta13;			/* SRC_REQ_STA_13 */
1039*a24b53e0SWenzhen Yu 	uint32_t req_sta14;			/* SRC_REQ_STA_14 */
1040*a24b53e0SWenzhen Yu 	uint32_t req_sta15;			/* SRC_REQ_STA_15 */
1041*a24b53e0SWenzhen Yu 	uint32_t req_sta16;			/* SRC_REQ_STA_16 */
1042*a24b53e0SWenzhen Yu 	uint32_t raw_sta;			/* SPM_WAKEUP_STA */
1043*a24b53e0SWenzhen Yu 	uint32_t times_h;			/* Timestamp high bits */
1044*a24b53e0SWenzhen Yu 	uint32_t times_l;			/* Timestamp low bits */
1045*a24b53e0SWenzhen Yu 	uint32_t resumetime;			/* Timestamp low bits */
1046*a24b53e0SWenzhen Yu };
1047*a24b53e0SWenzhen Yu 
1048*a24b53e0SWenzhen Yu struct wake_status_trace {
1049*a24b53e0SWenzhen Yu 	struct wake_status_trace_comm comm;
1050*a24b53e0SWenzhen Yu 	/* Add suspend or idle part bellow */
1051*a24b53e0SWenzhen Yu };
1052*a24b53e0SWenzhen Yu 
1053*a24b53e0SWenzhen Yu struct wake_status {
1054*a24b53e0SWenzhen Yu 	struct wake_status_trace tr;
1055*a24b53e0SWenzhen Yu 	uint32_t r12_ext;			/* SPM_WAKEUP_EXT_STA */
1056*a24b53e0SWenzhen Yu 	uint32_t raw_ext_sta;			/* SPM_WAKEUP_EXT_STA */
1057*a24b53e0SWenzhen Yu 	uint32_t md32pcm_wakeup_sta;		/* MD32PCM_WAKEUP_STA */
1058*a24b53e0SWenzhen Yu 	uint32_t md32pcm_event_sta;		/* MD32PCM_EVENT_STA */
1059*a24b53e0SWenzhen Yu 	uint32_t wake_misc;			/* SPM_SW_RSV_5 */
1060*a24b53e0SWenzhen Yu 	uint32_t sw_flag0;			/* SPM_SW_FLAG_0 */
1061*a24b53e0SWenzhen Yu 	uint32_t sw_flag1;			/* SPM_SW_FLAG_1 */
1062*a24b53e0SWenzhen Yu 	uint32_t isr;				/* SPM_IRQ_STA */
1063*a24b53e0SWenzhen Yu 	uint32_t log_index;
1064*a24b53e0SWenzhen Yu 	uint32_t is_abort;
1065*a24b53e0SWenzhen Yu };
1066*a24b53e0SWenzhen Yu 
1067*a24b53e0SWenzhen Yu struct spm_lp_scen {
1068*a24b53e0SWenzhen Yu 	struct pcm_desc *pcmdesc;
1069*a24b53e0SWenzhen Yu 	struct pwr_ctrl *pwrctrl;
1070*a24b53e0SWenzhen Yu 	struct dbg_ctrl *dbgctrl;
1071*a24b53e0SWenzhen Yu 	struct spm_lp_stat *lpstat;
1072*a24b53e0SWenzhen Yu };
1073*a24b53e0SWenzhen Yu 
1074*a24b53e0SWenzhen Yu extern struct spm_lp_scen __spm_vcorefs;
1075*a24b53e0SWenzhen Yu typedef uint32_t u32;
1076*a24b53e0SWenzhen Yu 
1077*a24b53e0SWenzhen Yu void __spm_init_pcm_register(void);	/* init r0 and r7 */
1078*a24b53e0SWenzhen Yu void __spm_set_power_control(const struct pwr_ctrl *pwrctrl,
1079*a24b53e0SWenzhen Yu 			     uint32_t resource_usage);
1080*a24b53e0SWenzhen Yu void __spm_set_wakeup_event(const struct pwr_ctrl *pwrctrl);
1081*a24b53e0SWenzhen Yu void __spm_kick_pcm_to_run(struct pwr_ctrl *pwrctrl);
1082*a24b53e0SWenzhen Yu void __spm_set_pcm_flags(struct pwr_ctrl *pwrctrl);
1083*a24b53e0SWenzhen Yu void __spm_send_cpu_wakeup_event(void);
1084*a24b53e0SWenzhen Yu 
1085*a24b53e0SWenzhen Yu void __spm_get_wakeup_status(struct wake_status *wakesta,
1086*a24b53e0SWenzhen Yu 			     uint32_t ext_status);
1087*a24b53e0SWenzhen Yu void __spm_clean_after_wakeup(void);
1088*a24b53e0SWenzhen Yu wake_reason_t __spm_output_wake_reason(const struct wake_status *wakesta);
1089*a24b53e0SWenzhen Yu 
1090*a24b53e0SWenzhen Yu void __spm_sync_vcore_dvfs_power_control(struct pwr_ctrl *dest_pwr_ctrl,
1091*a24b53e0SWenzhen Yu 					 const struct pwr_ctrl *src_pwr_ctrl);
1092*a24b53e0SWenzhen Yu void __spm_sync_vcore_dvfs_pcm_flags(uint32_t *dest_pcm_flags,
1093*a24b53e0SWenzhen Yu 				     const uint32_t *src_pcm_flags);
1094*a24b53e0SWenzhen Yu 
1095*a24b53e0SWenzhen Yu void __spm_set_pcm_wdt(int en);
1096*a24b53e0SWenzhen Yu uint32_t __spm_get_pcm_timer_val(void);
1097*a24b53e0SWenzhen Yu uint32_t _spm_get_wake_period(int pwake_time, wake_reason_t last_wr);
1098*a24b53e0SWenzhen Yu void __spm_set_fw_resume_option(struct pwr_ctrl *pwrctrl);
1099*a24b53e0SWenzhen Yu void __spm_ext_int_wakeup_req_clr(void);
1100*a24b53e0SWenzhen Yu 
set_pwrctrl_pcm_flags(struct pwr_ctrl * pwrctrl,uint32_t flags)1101*a24b53e0SWenzhen Yu static inline void set_pwrctrl_pcm_flags(struct pwr_ctrl *pwrctrl,
1102*a24b53e0SWenzhen Yu 					 uint32_t flags)
1103*a24b53e0SWenzhen Yu {
1104*a24b53e0SWenzhen Yu 	if (pwrctrl->pcm_flags_cust == 0)
1105*a24b53e0SWenzhen Yu 		pwrctrl->pcm_flags = flags;
1106*a24b53e0SWenzhen Yu 	else
1107*a24b53e0SWenzhen Yu 		pwrctrl->pcm_flags = pwrctrl->pcm_flags_cust;
1108*a24b53e0SWenzhen Yu }
1109*a24b53e0SWenzhen Yu 
set_pwrctrl_pcm_flags1(struct pwr_ctrl * pwrctrl,uint32_t flags)1110*a24b53e0SWenzhen Yu static inline void set_pwrctrl_pcm_flags1(struct pwr_ctrl *pwrctrl,
1111*a24b53e0SWenzhen Yu 					  uint32_t flags)
1112*a24b53e0SWenzhen Yu {
1113*a24b53e0SWenzhen Yu 	if (pwrctrl->pcm_flags1_cust == 0)
1114*a24b53e0SWenzhen Yu 		pwrctrl->pcm_flags1 = flags;
1115*a24b53e0SWenzhen Yu 	else
1116*a24b53e0SWenzhen Yu 		pwrctrl->pcm_flags1 = pwrctrl->pcm_flags1_cust;
1117*a24b53e0SWenzhen Yu }
1118*a24b53e0SWenzhen Yu 
1119*a24b53e0SWenzhen Yu void __spm_hw_s1_state_monitor(int en, uint32_t *status);
1120*a24b53e0SWenzhen Yu 
spm_hw_s1_state_monitor_resume(void)1121*a24b53e0SWenzhen Yu static inline void spm_hw_s1_state_monitor_resume(void)
1122*a24b53e0SWenzhen Yu {
1123*a24b53e0SWenzhen Yu 	__spm_hw_s1_state_monitor(1, NULL);
1124*a24b53e0SWenzhen Yu }
spm_hw_s1_state_monitor_pause(uint32_t * status)1125*a24b53e0SWenzhen Yu static inline void spm_hw_s1_state_monitor_pause(uint32_t *status)
1126*a24b53e0SWenzhen Yu {
1127*a24b53e0SWenzhen Yu 	__spm_hw_s1_state_monitor(0, status);
1128*a24b53e0SWenzhen Yu }
1129*a24b53e0SWenzhen Yu 
1130*a24b53e0SWenzhen Yu int32_t __spm_wait_spm_request_ack(uint32_t spm_resource_req,
1131*a24b53e0SWenzhen Yu 				   uint32_t timeout_us);
1132*a24b53e0SWenzhen Yu 
1133*a24b53e0SWenzhen Yu #endif /* MT_SPM_INTERNAL */
1134