xref: /rk3399_ARM-atf/plat/mediatek/drivers/spm/mt8189/mt_spm_internal.h (revision af0370f25a6663a0d737bbfb3985df4232eaaa55)
1*5f748b3cSKun Lu /*
2*5f748b3cSKun Lu  * Copyright (c) 2025, Mediatek Inc. All rights reserved.
3*5f748b3cSKun Lu  *
4*5f748b3cSKun Lu  * SPDX-License-Identifier: BSD-3-Clause
5*5f748b3cSKun Lu  */
6*5f748b3cSKun Lu 
7*5f748b3cSKun Lu #ifndef MT_SPM_INTERNAL_H
8*5f748b3cSKun Lu #define MT_SPM_INTERNAL_H
9*5f748b3cSKun Lu 
10*5f748b3cSKun Lu #include <dbg_ctrl.h>
11*5f748b3cSKun Lu #include <inc/mt_spm_ver.h>
12*5f748b3cSKun Lu #include <mt_spm.h>
13*5f748b3cSKun Lu #include <mt_spm_stats.h>
14*5f748b3cSKun Lu 
15*5f748b3cSKun Lu /**************************************
16*5f748b3cSKun Lu  * Config and Parameter
17*5f748b3cSKun Lu  **************************************/
18*5f748b3cSKun Lu #define POWER_ON_VAL0_DEF 0x0000F100
19*5f748b3cSKun Lu /* SPM_POWER_ON_VAL1 */
20*5f748b3cSKun Lu #define POWER_ON_VAL1_DEF 0x003FFE20
21*5f748b3cSKun Lu /* SPM_WAKEUP_EVENT_MASK */
22*5f748b3cSKun Lu #define SPM_WAKEUP_EVENT_MASK_DEF 0xF97FFCFF
23*5f748b3cSKun Lu 
24*5f748b3cSKun Lu /* PCM_WDT_VAL */
25*5f748b3cSKun Lu #define PCM_WDT_TIMEOUT (30 * 32768) /* 30s */
26*5f748b3cSKun Lu /* AP WDT setting */
27*5f748b3cSKun Lu #define AP_WDT_TIMEOUT (31) /* 31s */
28*5f748b3cSKun Lu #define AP_WDT_TIMEOUT_SUSPEND (5400) /* 90min */
29*5f748b3cSKun Lu /* PCM_TIMER_VAL */
30*5f748b3cSKun Lu #define PCM_TIMER_SUSPEND \
31*5f748b3cSKun Lu 	((AP_WDT_TIMEOUT_SUSPEND - 30) * 32768) /* 90min - 30sec */
32*5f748b3cSKun Lu #define PCM_TIMER_MAX (PCM_TIMER_SUSPEND)
33*5f748b3cSKun Lu 
34*5f748b3cSKun Lu /**************************************
35*5f748b3cSKun Lu  * Define and Declare
36*5f748b3cSKun Lu  **************************************/
37*5f748b3cSKun Lu /* MD32PCM ADDR for SPM code fetch */
38*5f748b3cSKun Lu #define MD32PCM_BASE (SPM_BASE + 0x0A00)
39*5f748b3cSKun Lu #define MD32PCM_CFGREG_SW_RSTN (MD32PCM_BASE + 0x0000)
40*5f748b3cSKun Lu #define MD32PCM_DMA0_SRC (MD32PCM_BASE + 0x0200)
41*5f748b3cSKun Lu #define MD32PCM_DMA0_DST (MD32PCM_BASE + 0x0204)
42*5f748b3cSKun Lu #define MD32PCM_DMA0_WPPT (MD32PCM_BASE + 0x0208)
43*5f748b3cSKun Lu #define MD32PCM_DMA0_WPTO (MD32PCM_BASE + 0x020C)
44*5f748b3cSKun Lu #define MD32PCM_DMA0_COUNT (MD32PCM_BASE + 0x0210)
45*5f748b3cSKun Lu #define MD32PCM_DMA0_CON (MD32PCM_BASE + 0x0214)
46*5f748b3cSKun Lu #define MD32PCM_DMA0_START (MD32PCM_BASE + 0x0218)
47*5f748b3cSKun Lu #define MD32PCM_DMA0_RLCT (MD32PCM_BASE + 0x0224)
48*5f748b3cSKun Lu #define MD32PCM_INTC_IRQ_RAW_STA (MD32PCM_BASE + 0x033C)
49*5f748b3cSKun Lu 
50*5f748b3cSKun Lu /* ABORT MASK for DEBUG FOORTPRINT */
51*5f748b3cSKun Lu #define DEBUG_ABORT_MASK                              \
52*5f748b3cSKun Lu 	(SPM_DBG_DEBUG_IDX_DRAM_SREF_ABORT_IN_APSRC | \
53*5f748b3cSKun Lu 	 SPM_DBG_DEBUG_IDX_DRAM_SREF_ABORT_IN_DDREN)
54*5f748b3cSKun Lu 
55*5f748b3cSKun Lu #define DEBUG_ABORT_MASK_1                               \
56*5f748b3cSKun Lu 	(SPM_DBG1_DEBUG_IDX_VTCXO_SLEEP_ABORT_0 |        \
57*5f748b3cSKun Lu 	 SPM_DBG1_DEBUG_IDX_VTCXO_SLEEP_ABORT_1 |        \
58*5f748b3cSKun Lu 	 SPM_DBG1_DEBUG_IDX_PMIC_IRQ_ACK_LOW_ABORT |     \
59*5f748b3cSKun Lu 	 SPM_DBG1_DEBUG_IDX_PMIC_IRQ_ACK_HIGH_ABORT |    \
60*5f748b3cSKun Lu 	 SPM_DBG1_DEBUG_IDX_PWRAP_SLEEP_ACK_LOW_ABORT |  \
61*5f748b3cSKun Lu 	 SPM_DBG1_DEBUG_IDX_PWRAP_SLEEP_ACK_HIGH_ABORT | \
62*5f748b3cSKun Lu 	 SPM_DBG1_DEBUG_IDX_SCP_SLP_ACK_LOW_ABORT |      \
63*5f748b3cSKun Lu 	 SPM_DBG1_DEBUG_IDX_SCP_SLP_ACK_HIGH_ABORT |     \
64*5f748b3cSKun Lu 	 SPM_DBG1_DEBUG_IDX_SPM_PMIF_CMD_RDY_ABORT)
65*5f748b3cSKun Lu 
66*5f748b3cSKun Lu struct pwr_ctrl {
67*5f748b3cSKun Lu 	/* for SPM */
68*5f748b3cSKun Lu 	uint32_t pcm_flags;
69*5f748b3cSKun Lu 	uint32_t pcm_flags_cust;
70*5f748b3cSKun Lu 	uint32_t pcm_flags_cust_set;
71*5f748b3cSKun Lu 	uint32_t pcm_flags_cust_clr;
72*5f748b3cSKun Lu 	uint32_t pcm_flags1;
73*5f748b3cSKun Lu 	uint32_t pcm_flags1_cust;
74*5f748b3cSKun Lu 	uint32_t pcm_flags1_cust_set;
75*5f748b3cSKun Lu 	uint32_t pcm_flags1_cust_clr;
76*5f748b3cSKun Lu 	uint32_t timer_val;
77*5f748b3cSKun Lu 	uint32_t timer_val_cust;
78*5f748b3cSKun Lu 	uint32_t timer_val_ramp_en;
79*5f748b3cSKun Lu 	uint32_t timer_val_ramp_en_sec;
80*5f748b3cSKun Lu 	uint32_t wake_src;
81*5f748b3cSKun Lu 	uint32_t wake_src_cust;
82*5f748b3cSKun Lu 	uint32_t wakelock_timer_val;
83*5f748b3cSKun Lu 	uint8_t wdt_disable;
84*5f748b3cSKun Lu 	/* Auto-gen Start */
85*5f748b3cSKun Lu 
86*5f748b3cSKun Lu 	/* SPM_CLK_CON */
87*5f748b3cSKun Lu 	uint8_t reg_spm_lock_infra_dcm_lsb;
88*5f748b3cSKun Lu 	uint8_t reg_cxo32k_remove_en_lsb;
89*5f748b3cSKun Lu 	uint8_t reg_spm_leave_suspend_merge_mask_lsb;
90*5f748b3cSKun Lu 	uint8_t reg_sysclk0_src_mask_b_lsb;
91*5f748b3cSKun Lu 	uint8_t reg_sysclk1_src_mask_b_lsb;
92*5f748b3cSKun Lu 	uint8_t reg_sysclk2_src_mask_b_lsb;
93*5f748b3cSKun Lu 
94*5f748b3cSKun Lu 	/* SPM_AP_STANDBY_CON */
95*5f748b3cSKun Lu 	uint8_t reg_wfi_op;
96*5f748b3cSKun Lu 	uint8_t reg_wfi_type;
97*5f748b3cSKun Lu 	uint8_t reg_mp0_cputop_idle_mask;
98*5f748b3cSKun Lu 	uint8_t reg_mp1_cputop_idle_mask;
99*5f748b3cSKun Lu 	uint8_t reg_mcusys_idle_mask;
100*5f748b3cSKun Lu 	uint8_t reg_csyspwrup_req_mask_lsb;
101*5f748b3cSKun Lu 	uint8_t reg_wfi_af_sel;
102*5f748b3cSKun Lu 	uint8_t reg_cpu_sleep_wfi;
103*5f748b3cSKun Lu 
104*5f748b3cSKun Lu 	/* SPM_SRC_REQ */
105*5f748b3cSKun Lu 	uint8_t reg_spm_adsp_mailbox_req;
106*5f748b3cSKun Lu 	uint8_t reg_spm_apsrc_req;
107*5f748b3cSKun Lu 	uint8_t reg_spm_ddren_req;
108*5f748b3cSKun Lu 	uint8_t reg_spm_dvfs_req;
109*5f748b3cSKun Lu 	uint8_t reg_spm_emi_req;
110*5f748b3cSKun Lu 	uint8_t reg_spm_f26m_req;
111*5f748b3cSKun Lu 	uint8_t reg_spm_infra_req;
112*5f748b3cSKun Lu 	uint8_t reg_spm_pmic_req;
113*5f748b3cSKun Lu 	uint8_t reg_spm_scp_mailbox_req;
114*5f748b3cSKun Lu 	uint8_t reg_spm_sspm_mailbox_req;
115*5f748b3cSKun Lu 	uint8_t reg_spm_sw_mailbox_req;
116*5f748b3cSKun Lu 	uint8_t reg_spm_vcore_req;
117*5f748b3cSKun Lu 	uint8_t reg_spm_vrf18_req;
118*5f748b3cSKun Lu 	uint8_t adsp_mailbox_state;
119*5f748b3cSKun Lu 	uint8_t apsrc_state;
120*5f748b3cSKun Lu 	uint8_t ddren_state;
121*5f748b3cSKun Lu 	uint8_t dvfs_state;
122*5f748b3cSKun Lu 	uint8_t emi_state;
123*5f748b3cSKun Lu 	uint8_t f26m_state;
124*5f748b3cSKun Lu 	uint8_t infra_state;
125*5f748b3cSKun Lu 	uint8_t pmic_state;
126*5f748b3cSKun Lu 	uint8_t scp_mailbox_state;
127*5f748b3cSKun Lu 	uint8_t sspm_mailbox_state;
128*5f748b3cSKun Lu 	uint8_t sw_mailbox_state;
129*5f748b3cSKun Lu 	uint8_t vcore_state;
130*5f748b3cSKun Lu 	uint8_t vrf18_state;
131*5f748b3cSKun Lu 
132*5f748b3cSKun Lu 	/* SPM_SRC_MASK_0 */
133*5f748b3cSKun Lu 	uint8_t reg_apu_apsrc_req_mask_b;
134*5f748b3cSKun Lu 	uint8_t reg_apu_ddren_req_mask_b;
135*5f748b3cSKun Lu 	uint8_t reg_apu_emi_req_mask_b;
136*5f748b3cSKun Lu 	uint8_t reg_apu_infra_req_mask_b;
137*5f748b3cSKun Lu 	uint8_t reg_apu_pmic_req_mask_b;
138*5f748b3cSKun Lu 	uint8_t reg_apu_srcclkena_mask_b;
139*5f748b3cSKun Lu 	uint8_t reg_apu_vrf18_req_mask_b;
140*5f748b3cSKun Lu 	uint8_t reg_audio_dsp_apsrc_req_mask_b;
141*5f748b3cSKun Lu 	uint8_t reg_audio_dsp_ddren_req_mask_b;
142*5f748b3cSKun Lu 	uint8_t reg_audio_dsp_emi_req_mask_b;
143*5f748b3cSKun Lu 	uint8_t reg_audio_dsp_infra_req_mask_b;
144*5f748b3cSKun Lu 	uint8_t reg_audio_dsp_pmic_req_mask_b;
145*5f748b3cSKun Lu 	uint8_t reg_audio_dsp_srcclkena_mask_b;
146*5f748b3cSKun Lu 	uint8_t reg_audio_dsp_vcore_req_mask_b;
147*5f748b3cSKun Lu 	uint8_t reg_audio_dsp_vrf18_req_mask_b;
148*5f748b3cSKun Lu 	uint8_t reg_cam_apsrc_req_mask_b;
149*5f748b3cSKun Lu 	uint8_t reg_cam_ddren_req_mask_b;
150*5f748b3cSKun Lu 	uint8_t reg_cam_emi_req_mask_b;
151*5f748b3cSKun Lu 	uint8_t reg_cam_infra_req_mask_b;
152*5f748b3cSKun Lu 	uint8_t reg_cam_pmic_req_mask_b;
153*5f748b3cSKun Lu 	uint8_t reg_cam_srcclkena_mask_b;
154*5f748b3cSKun Lu 	uint8_t reg_cam_vrf18_req_mask_b;
155*5f748b3cSKun Lu 	uint8_t reg_mdp_emi_req_mask_b;
156*5f748b3cSKun Lu 
157*5f748b3cSKun Lu 	/* SPM_SRC_MASK_1 */
158*5f748b3cSKun Lu 	uint32_t reg_ccif_apsrc_req_mask_b;
159*5f748b3cSKun Lu 	uint32_t reg_ccif_emi_req_mask_b;
160*5f748b3cSKun Lu 
161*5f748b3cSKun Lu 	/* SPM_SRC_MASK_2 */
162*5f748b3cSKun Lu 	uint32_t reg_ccif_infra_req_mask_b;
163*5f748b3cSKun Lu 	uint32_t reg_ccif_pmic_req_mask_b;
164*5f748b3cSKun Lu 
165*5f748b3cSKun Lu 	/* SPM_SRC_MASK_3 */
166*5f748b3cSKun Lu 	uint32_t reg_ccif_srcclkena_mask_b;
167*5f748b3cSKun Lu 	uint32_t reg_ccif_vrf18_req_mask_b;
168*5f748b3cSKun Lu 	uint8_t reg_ccu_apsrc_req_mask_b;
169*5f748b3cSKun Lu 	uint8_t reg_ccu_ddren_req_mask_b;
170*5f748b3cSKun Lu 	uint8_t reg_ccu_emi_req_mask_b;
171*5f748b3cSKun Lu 	uint8_t reg_ccu_infra_req_mask_b;
172*5f748b3cSKun Lu 	uint8_t reg_ccu_pmic_req_mask_b;
173*5f748b3cSKun Lu 	uint8_t reg_ccu_srcclkena_mask_b;
174*5f748b3cSKun Lu 	uint8_t reg_ccu_vrf18_req_mask_b;
175*5f748b3cSKun Lu 	uint8_t reg_cg_check_apsrc_req_mask_b;
176*5f748b3cSKun Lu 
177*5f748b3cSKun Lu 	/* SPM_SRC_MASK_4 */
178*5f748b3cSKun Lu 	uint8_t reg_cg_check_ddren_req_mask_b;
179*5f748b3cSKun Lu 	uint8_t reg_cg_check_emi_req_mask_b;
180*5f748b3cSKun Lu 	uint8_t reg_cg_check_infra_req_mask_b;
181*5f748b3cSKun Lu 	uint8_t reg_cg_check_pmic_req_mask_b;
182*5f748b3cSKun Lu 	uint8_t reg_cg_check_srcclkena_mask_b;
183*5f748b3cSKun Lu 	uint8_t reg_cg_check_vcore_req_mask_b;
184*5f748b3cSKun Lu 	uint8_t reg_cg_check_vrf18_req_mask_b;
185*5f748b3cSKun Lu 	uint8_t reg_conn_apsrc_req_mask_b;
186*5f748b3cSKun Lu 	uint8_t reg_conn_ddren_req_mask_b;
187*5f748b3cSKun Lu 	uint8_t reg_conn_emi_req_mask_b;
188*5f748b3cSKun Lu 	uint8_t reg_conn_infra_req_mask_b;
189*5f748b3cSKun Lu 	uint8_t reg_conn_pmic_req_mask_b;
190*5f748b3cSKun Lu 	uint8_t reg_conn_srcclkena_mask_b;
191*5f748b3cSKun Lu 	uint8_t reg_conn_srcclkenb_mask_b;
192*5f748b3cSKun Lu 	uint8_t reg_conn_vcore_req_mask_b;
193*5f748b3cSKun Lu 	uint8_t reg_conn_vrf18_req_mask_b;
194*5f748b3cSKun Lu 	uint8_t reg_cpueb_apsrc_req_mask_b;
195*5f748b3cSKun Lu 	uint8_t reg_cpueb_ddren_req_mask_b;
196*5f748b3cSKun Lu 	uint8_t reg_cpueb_emi_req_mask_b;
197*5f748b3cSKun Lu 	uint8_t reg_cpueb_infra_req_mask_b;
198*5f748b3cSKun Lu 	uint8_t reg_cpueb_pmic_req_mask_b;
199*5f748b3cSKun Lu 	uint8_t reg_cpueb_srcclkena_mask_b;
200*5f748b3cSKun Lu 	uint8_t reg_cpueb_vrf18_req_mask_b;
201*5f748b3cSKun Lu 	uint8_t reg_disp0_apsrc_req_mask_b;
202*5f748b3cSKun Lu 	uint8_t reg_disp0_ddren_req_mask_b;
203*5f748b3cSKun Lu 	uint8_t reg_disp0_emi_req_mask_b;
204*5f748b3cSKun Lu 	uint8_t reg_disp0_infra_req_mask_b;
205*5f748b3cSKun Lu 	uint8_t reg_disp0_pmic_req_mask_b;
206*5f748b3cSKun Lu 	uint8_t reg_disp0_srcclkena_mask_b;
207*5f748b3cSKun Lu 	uint8_t reg_disp0_vrf18_req_mask_b;
208*5f748b3cSKun Lu 	uint8_t reg_disp1_apsrc_req_mask_b;
209*5f748b3cSKun Lu 	uint8_t reg_disp1_ddren_req_mask_b;
210*5f748b3cSKun Lu 
211*5f748b3cSKun Lu 	/* SPM_SRC_MASK_5 */
212*5f748b3cSKun Lu 	uint8_t reg_disp1_emi_req_mask_b;
213*5f748b3cSKun Lu 	uint8_t reg_disp1_infra_req_mask_b;
214*5f748b3cSKun Lu 	uint8_t reg_disp1_pmic_req_mask_b;
215*5f748b3cSKun Lu 	uint8_t reg_disp1_srcclkena_mask_b;
216*5f748b3cSKun Lu 	uint8_t reg_disp1_vrf18_req_mask_b;
217*5f748b3cSKun Lu 	uint8_t reg_dpm_apsrc_req_mask_b;
218*5f748b3cSKun Lu 	uint8_t reg_dpm_ddren_req_mask_b;
219*5f748b3cSKun Lu 	uint8_t reg_dpm_emi_req_mask_b;
220*5f748b3cSKun Lu 	uint8_t reg_dpm_infra_req_mask_b;
221*5f748b3cSKun Lu 	uint8_t reg_dpm_pmic_req_mask_b;
222*5f748b3cSKun Lu 	uint8_t reg_dpm_srcclkena_mask_b;
223*5f748b3cSKun Lu 
224*5f748b3cSKun Lu 	/* SPM_SRC_MASK_6 */
225*5f748b3cSKun Lu 	uint8_t reg_dpm_vcore_req_mask_b;
226*5f748b3cSKun Lu 	uint8_t reg_dpm_vrf18_req_mask_b;
227*5f748b3cSKun Lu 	uint8_t reg_dpmaif_apsrc_req_mask_b;
228*5f748b3cSKun Lu 	uint8_t reg_dpmaif_ddren_req_mask_b;
229*5f748b3cSKun Lu 	uint8_t reg_dpmaif_emi_req_mask_b;
230*5f748b3cSKun Lu 	uint8_t reg_dpmaif_infra_req_mask_b;
231*5f748b3cSKun Lu 	uint8_t reg_dpmaif_pmic_req_mask_b;
232*5f748b3cSKun Lu 	uint8_t reg_dpmaif_srcclkena_mask_b;
233*5f748b3cSKun Lu 	uint8_t reg_dpmaif_vrf18_req_mask_b;
234*5f748b3cSKun Lu 	uint8_t reg_dvfsrc_level_req_mask_b;
235*5f748b3cSKun Lu 	uint8_t reg_emisys_apsrc_req_mask_b;
236*5f748b3cSKun Lu 	uint8_t reg_emisys_ddren_req_mask_b;
237*5f748b3cSKun Lu 	uint8_t reg_emisys_emi_req_mask_b;
238*5f748b3cSKun Lu 	uint8_t reg_gce_d_apsrc_req_mask_b;
239*5f748b3cSKun Lu 	uint8_t reg_gce_d_ddren_req_mask_b;
240*5f748b3cSKun Lu 	uint8_t reg_gce_d_emi_req_mask_b;
241*5f748b3cSKun Lu 	uint8_t reg_gce_d_infra_req_mask_b;
242*5f748b3cSKun Lu 	uint8_t reg_gce_d_pmic_req_mask_b;
243*5f748b3cSKun Lu 	uint8_t reg_gce_d_srcclkena_mask_b;
244*5f748b3cSKun Lu 	uint8_t reg_gce_d_vrf18_req_mask_b;
245*5f748b3cSKun Lu 	uint8_t reg_gce_m_apsrc_req_mask_b;
246*5f748b3cSKun Lu 	uint8_t reg_gce_m_ddren_req_mask_b;
247*5f748b3cSKun Lu 	uint8_t reg_gce_m_emi_req_mask_b;
248*5f748b3cSKun Lu 	uint8_t reg_gce_m_infra_req_mask_b;
249*5f748b3cSKun Lu 	uint8_t reg_gce_m_pmic_req_mask_b;
250*5f748b3cSKun Lu 	uint8_t reg_gce_m_srcclkena_mask_b;
251*5f748b3cSKun Lu 
252*5f748b3cSKun Lu 	/* SPM_SRC_MASK_7 */
253*5f748b3cSKun Lu 	uint8_t reg_gce_m_vrf18_req_mask_b;
254*5f748b3cSKun Lu 	uint8_t reg_gpueb_apsrc_req_mask_b;
255*5f748b3cSKun Lu 	uint8_t reg_gpueb_ddren_req_mask_b;
256*5f748b3cSKun Lu 	uint8_t reg_gpueb_emi_req_mask_b;
257*5f748b3cSKun Lu 	uint8_t reg_gpueb_infra_req_mask_b;
258*5f748b3cSKun Lu 	uint8_t reg_gpueb_pmic_req_mask_b;
259*5f748b3cSKun Lu 	uint8_t reg_gpueb_srcclkena_mask_b;
260*5f748b3cSKun Lu 	uint8_t reg_gpueb_vrf18_req_mask_b;
261*5f748b3cSKun Lu 	uint8_t reg_hwccf_apsrc_req_mask_b;
262*5f748b3cSKun Lu 	uint8_t reg_hwccf_ddren_req_mask_b;
263*5f748b3cSKun Lu 	uint8_t reg_hwccf_emi_req_mask_b;
264*5f748b3cSKun Lu 	uint8_t reg_hwccf_infra_req_mask_b;
265*5f748b3cSKun Lu 	uint8_t reg_hwccf_pmic_req_mask_b;
266*5f748b3cSKun Lu 	uint8_t reg_hwccf_srcclkena_mask_b;
267*5f748b3cSKun Lu 	uint8_t reg_hwccf_vcore_req_mask_b;
268*5f748b3cSKun Lu 	uint8_t reg_hwccf_vrf18_req_mask_b;
269*5f748b3cSKun Lu 	uint8_t reg_img_apsrc_req_mask_b;
270*5f748b3cSKun Lu 	uint8_t reg_img_ddren_req_mask_b;
271*5f748b3cSKun Lu 	uint8_t reg_img_emi_req_mask_b;
272*5f748b3cSKun Lu 	uint8_t reg_img_infra_req_mask_b;
273*5f748b3cSKun Lu 	uint8_t reg_img_pmic_req_mask_b;
274*5f748b3cSKun Lu 	uint8_t reg_img_srcclkena_mask_b;
275*5f748b3cSKun Lu 	uint8_t reg_img_vrf18_req_mask_b;
276*5f748b3cSKun Lu 	uint8_t reg_infrasys_apsrc_req_mask_b;
277*5f748b3cSKun Lu 	uint8_t reg_infrasys_ddren_req_mask_b;
278*5f748b3cSKun Lu 	uint8_t reg_infrasys_emi_req_mask_b;
279*5f748b3cSKun Lu 	uint8_t reg_ipic_infra_req_mask_b;
280*5f748b3cSKun Lu 	uint8_t reg_ipic_vrf18_req_mask_b;
281*5f748b3cSKun Lu 	uint8_t reg_mcu_apsrc_req_mask_b;
282*5f748b3cSKun Lu 	uint8_t reg_mcu_ddren_req_mask_b;
283*5f748b3cSKun Lu 	uint8_t reg_mcu_emi_req_mask_b;
284*5f748b3cSKun Lu 
285*5f748b3cSKun Lu 	/* SPM_SRC_MASK_8 */
286*5f748b3cSKun Lu 	uint8_t reg_mcusys_apsrc_req_mask_b;
287*5f748b3cSKun Lu 	uint8_t reg_mcusys_ddren_req_mask_b;
288*5f748b3cSKun Lu 	uint8_t reg_mcusys_emi_req_mask_b;
289*5f748b3cSKun Lu 	uint8_t reg_mcusys_infra_req_mask_b;
290*5f748b3cSKun Lu 
291*5f748b3cSKun Lu 	/* SPM_SRC_MASK_9 */
292*5f748b3cSKun Lu 	uint8_t reg_mcusys_pmic_req_mask_b;
293*5f748b3cSKun Lu 	uint8_t reg_mcusys_srcclkena_mask_b;
294*5f748b3cSKun Lu 	uint8_t reg_mcusys_vrf18_req_mask_b;
295*5f748b3cSKun Lu 	uint8_t reg_md_apsrc_req_mask_b;
296*5f748b3cSKun Lu 	uint8_t reg_md_ddren_req_mask_b;
297*5f748b3cSKun Lu 	uint8_t reg_md_emi_req_mask_b;
298*5f748b3cSKun Lu 	uint8_t reg_md_infra_req_mask_b;
299*5f748b3cSKun Lu 	uint8_t reg_md_pmic_req_mask_b;
300*5f748b3cSKun Lu 	uint8_t reg_md_srcclkena_mask_b;
301*5f748b3cSKun Lu 	uint8_t reg_md_srcclkena1_mask_b;
302*5f748b3cSKun Lu 	uint8_t reg_md_vcore_req_mask_b;
303*5f748b3cSKun Lu 
304*5f748b3cSKun Lu 	/* SPM_SRC_MASK_10 */
305*5f748b3cSKun Lu 	uint8_t reg_md_vrf18_req_mask_b;
306*5f748b3cSKun Lu 	uint8_t reg_mdp_apsrc_req_mask_b;
307*5f748b3cSKun Lu 	uint8_t reg_mdp_ddren_req_mask_b;
308*5f748b3cSKun Lu 	uint8_t reg_mm_proc_apsrc_req_mask_b;
309*5f748b3cSKun Lu 	uint8_t reg_mm_proc_ddren_req_mask_b;
310*5f748b3cSKun Lu 	uint8_t reg_mm_proc_emi_req_mask_b;
311*5f748b3cSKun Lu 	uint8_t reg_mm_proc_infra_req_mask_b;
312*5f748b3cSKun Lu 	uint8_t reg_mm_proc_pmic_req_mask_b;
313*5f748b3cSKun Lu 	uint8_t reg_mm_proc_srcclkena_mask_b;
314*5f748b3cSKun Lu 	uint8_t reg_mm_proc_vrf18_req_mask_b;
315*5f748b3cSKun Lu 	uint8_t reg_mmsys_apsrc_req_mask_b;
316*5f748b3cSKun Lu 	uint8_t reg_mmsys_ddren_req_mask_b;
317*5f748b3cSKun Lu 	uint8_t reg_mmsys_vrf18_req_mask_b;
318*5f748b3cSKun Lu 	uint8_t reg_pcie0_apsrc_req_mask_b;
319*5f748b3cSKun Lu 	uint8_t reg_pcie0_ddren_req_mask_b;
320*5f748b3cSKun Lu 	uint8_t reg_pcie0_infra_req_mask_b;
321*5f748b3cSKun Lu 	uint8_t reg_pcie0_srcclkena_mask_b;
322*5f748b3cSKun Lu 	uint8_t reg_pcie0_vrf18_req_mask_b;
323*5f748b3cSKun Lu 	uint8_t reg_pcie1_apsrc_req_mask_b;
324*5f748b3cSKun Lu 	uint8_t reg_pcie1_ddren_req_mask_b;
325*5f748b3cSKun Lu 	uint8_t reg_pcie1_infra_req_mask_b;
326*5f748b3cSKun Lu 	uint8_t reg_pcie1_srcclkena_mask_b;
327*5f748b3cSKun Lu 	uint8_t reg_pcie1_vrf18_req_mask_b;
328*5f748b3cSKun Lu 	uint8_t reg_perisys_apsrc_req_mask_b;
329*5f748b3cSKun Lu 	uint8_t reg_perisys_ddren_req_mask_b;
330*5f748b3cSKun Lu 	uint8_t reg_perisys_emi_req_mask_b;
331*5f748b3cSKun Lu 	uint8_t reg_perisys_infra_req_mask_b;
332*5f748b3cSKun Lu 	uint8_t reg_perisys_pmic_req_mask_b;
333*5f748b3cSKun Lu 	uint8_t reg_perisys_srcclkena_mask_b;
334*5f748b3cSKun Lu 	uint8_t reg_perisys_vcore_req_mask_b;
335*5f748b3cSKun Lu 	uint8_t reg_perisys_vrf18_req_mask_b;
336*5f748b3cSKun Lu 	uint8_t reg_scp_apsrc_req_mask_b;
337*5f748b3cSKun Lu 
338*5f748b3cSKun Lu 	/* SPM_SRC_MASK_11 */
339*5f748b3cSKun Lu 	uint8_t reg_scp_ddren_req_mask_b;
340*5f748b3cSKun Lu 	uint8_t reg_scp_emi_req_mask_b;
341*5f748b3cSKun Lu 	uint8_t reg_scp_infra_req_mask_b;
342*5f748b3cSKun Lu 	uint8_t reg_scp_pmic_req_mask_b;
343*5f748b3cSKun Lu 	uint8_t reg_scp_srcclkena_mask_b;
344*5f748b3cSKun Lu 	uint8_t reg_scp_vcore_req_mask_b;
345*5f748b3cSKun Lu 	uint8_t reg_scp_vrf18_req_mask_b;
346*5f748b3cSKun Lu 	uint8_t reg_srcclkeni_infra_req_mask_b;
347*5f748b3cSKun Lu 	uint8_t reg_srcclkeni_pmic_req_mask_b;
348*5f748b3cSKun Lu 	uint8_t reg_srcclkeni_srcclkena_mask_b;
349*5f748b3cSKun Lu 	uint8_t reg_sspm_apsrc_req_mask_b;
350*5f748b3cSKun Lu 	uint8_t reg_sspm_ddren_req_mask_b;
351*5f748b3cSKun Lu 	uint8_t reg_sspm_emi_req_mask_b;
352*5f748b3cSKun Lu 	uint8_t reg_sspm_infra_req_mask_b;
353*5f748b3cSKun Lu 	uint8_t reg_sspm_pmic_req_mask_b;
354*5f748b3cSKun Lu 	uint8_t reg_sspm_srcclkena_mask_b;
355*5f748b3cSKun Lu 	uint8_t reg_sspm_vrf18_req_mask_b;
356*5f748b3cSKun Lu 	uint8_t reg_ssr_apsrc_req_mask_b;
357*5f748b3cSKun Lu 	uint8_t reg_ssr_ddren_req_mask_b;
358*5f748b3cSKun Lu 	uint8_t reg_ssr_emi_req_mask_b;
359*5f748b3cSKun Lu 	uint8_t reg_ssr_infra_req_mask_b;
360*5f748b3cSKun Lu 	uint8_t reg_ssr_pmic_req_mask_b;
361*5f748b3cSKun Lu 	uint8_t reg_ssr_srcclkena_mask_b;
362*5f748b3cSKun Lu 	uint8_t reg_ssr_vrf18_req_mask_b;
363*5f748b3cSKun Lu 	uint8_t reg_ufs_apsrc_req_mask_b;
364*5f748b3cSKun Lu 	uint8_t reg_ufs_ddren_req_mask_b;
365*5f748b3cSKun Lu 	uint8_t reg_ufs_emi_req_mask_b;
366*5f748b3cSKun Lu 	uint8_t reg_ufs_infra_req_mask_b;
367*5f748b3cSKun Lu 	uint8_t reg_ufs_pmic_req_mask_b;
368*5f748b3cSKun Lu 
369*5f748b3cSKun Lu 	/* SPM_SRC_MASK_12 */
370*5f748b3cSKun Lu 	uint8_t reg_ufs_srcclkena_mask_b;
371*5f748b3cSKun Lu 	uint8_t reg_ufs_vrf18_req_mask_b;
372*5f748b3cSKun Lu 	uint8_t reg_vdec_apsrc_req_mask_b;
373*5f748b3cSKun Lu 	uint8_t reg_vdec_ddren_req_mask_b;
374*5f748b3cSKun Lu 	uint8_t reg_vdec_emi_req_mask_b;
375*5f748b3cSKun Lu 	uint8_t reg_vdec_infra_req_mask_b;
376*5f748b3cSKun Lu 	uint8_t reg_vdec_pmic_req_mask_b;
377*5f748b3cSKun Lu 	uint8_t reg_vdec_srcclkena_mask_b;
378*5f748b3cSKun Lu 	uint8_t reg_vdec_vrf18_req_mask_b;
379*5f748b3cSKun Lu 	uint8_t reg_venc_apsrc_req_mask_b;
380*5f748b3cSKun Lu 	uint8_t reg_venc_ddren_req_mask_b;
381*5f748b3cSKun Lu 	uint8_t reg_venc_emi_req_mask_b;
382*5f748b3cSKun Lu 	uint8_t reg_venc_infra_req_mask_b;
383*5f748b3cSKun Lu 	uint8_t reg_venc_pmic_req_mask_b;
384*5f748b3cSKun Lu 	uint8_t reg_venc_srcclkena_mask_b;
385*5f748b3cSKun Lu 	uint8_t reg_venc_vrf18_req_mask_b;
386*5f748b3cSKun Lu 	uint8_t reg_ipe_apsrc_req_mask_b;
387*5f748b3cSKun Lu 	uint8_t reg_ipe_ddren_req_mask_b;
388*5f748b3cSKun Lu 	uint8_t reg_ipe_emi_req_mask_b;
389*5f748b3cSKun Lu 	uint8_t reg_ipe_infra_req_mask_b;
390*5f748b3cSKun Lu 	uint8_t reg_ipe_pmic_req_mask_b;
391*5f748b3cSKun Lu 	uint8_t reg_ipe_srcclkena_mask_b;
392*5f748b3cSKun Lu 	uint8_t reg_ipe_vrf18_req_mask_b;
393*5f748b3cSKun Lu 	uint8_t reg_ufs_vcore_req_mask_b;
394*5f748b3cSKun Lu 
395*5f748b3cSKun Lu 	/* SPM_EVENT_CON_MISC */
396*5f748b3cSKun Lu 	uint8_t reg_srcclken_fast_resp;
397*5f748b3cSKun Lu 	uint8_t reg_csyspwrup_ack_mask;
398*5f748b3cSKun Lu 
399*5f748b3cSKun Lu 	/* SPM_WAKEUP_EVENT_MASK */
400*5f748b3cSKun Lu 	uint32_t reg_wakeup_event_mask;
401*5f748b3cSKun Lu 
402*5f748b3cSKun Lu 	/* SPM_WAKEUP_EVENT_EXT_MASK */
403*5f748b3cSKun Lu 	uint32_t reg_ext_wakeup_event_mask;
404*5f748b3cSKun Lu 
405*5f748b3cSKun Lu 	/* Auto-gen End */
406*5f748b3cSKun Lu };
407*5f748b3cSKun Lu 
408*5f748b3cSKun Lu /* code gen by spm_pwr_ctrl_atf.pl, need struct pwr_ctrl */
409*5f748b3cSKun Lu enum pwr_ctrl_enum {
410*5f748b3cSKun Lu 	PW_PCM_FLAGS,
411*5f748b3cSKun Lu 	PW_PCM_FLAGS_CUST,
412*5f748b3cSKun Lu 	PW_PCM_FLAGS_CUST_SET,
413*5f748b3cSKun Lu 	PW_PCM_FLAGS_CUST_CLR,
414*5f748b3cSKun Lu 	PW_PCM_FLAGS1,
415*5f748b3cSKun Lu 	PW_PCM_FLAGS1_CUST,
416*5f748b3cSKun Lu 	PW_PCM_FLAGS1_CUST_SET,
417*5f748b3cSKun Lu 	PW_PCM_FLAGS1_CUST_CLR,
418*5f748b3cSKun Lu 	PW_TIMER_VAL,
419*5f748b3cSKun Lu 	PW_TIMER_VAL_CUST,
420*5f748b3cSKun Lu 	PW_TIMER_VAL_RAMP_EN,
421*5f748b3cSKun Lu 	PW_TIMER_VAL_RAMP_EN_SEC,
422*5f748b3cSKun Lu 	PW_WAKE_SRC,
423*5f748b3cSKun Lu 	PW_WAKE_SRC_CUST,
424*5f748b3cSKun Lu 	PW_WAKELOCK_TIMER_VAL,
425*5f748b3cSKun Lu 	PW_WDT_DISABLE,
426*5f748b3cSKun Lu 
427*5f748b3cSKun Lu 	/* SPM_SRC_REQ */
428*5f748b3cSKun Lu 	PW_REG_SPM_ADSP_MAILBOX_REQ,
429*5f748b3cSKun Lu 	PW_REG_SPM_APSRC_REQ,
430*5f748b3cSKun Lu 	PW_REG_SPM_DDREN_REQ,
431*5f748b3cSKun Lu 	PW_REG_SPM_DVFS_REQ,
432*5f748b3cSKun Lu 	PW_REG_SPM_EMI_REQ,
433*5f748b3cSKun Lu 	PW_REG_SPM_F26M_REQ,
434*5f748b3cSKun Lu 	PW_REG_SPM_INFRA_REQ,
435*5f748b3cSKun Lu 	PW_REG_SPM_PMIC_REQ,
436*5f748b3cSKun Lu 	PW_REG_SPM_SCP_MAILBOX_REQ,
437*5f748b3cSKun Lu 	PW_REG_SPM_SSPM_MAILBOX_REQ,
438*5f748b3cSKun Lu 	PW_REG_SPM_SW_MAILBOX_REQ,
439*5f748b3cSKun Lu 	PW_REG_SPM_VCORE_REQ,
440*5f748b3cSKun Lu 	PW_REG_SPM_VRF18_REQ,
441*5f748b3cSKun Lu 
442*5f748b3cSKun Lu 	/* SPM_SRC_MASK_0 */
443*5f748b3cSKun Lu 	PW_REG_APU_APSRC_REQ_MASK_B,
444*5f748b3cSKun Lu 	PW_REG_APU_DDREN_REQ_MASK_B,
445*5f748b3cSKun Lu 	PW_REG_APU_EMI_REQ_MASK_B,
446*5f748b3cSKun Lu 	PW_REG_APU_INFRA_REQ_MASK_B,
447*5f748b3cSKun Lu 	PW_REG_APU_PMIC_REQ_MASK_B,
448*5f748b3cSKun Lu 	PW_REG_APU_SRCCLKENA_MASK_B,
449*5f748b3cSKun Lu 	PW_REG_APU_VRF18_REQ_MASK_B,
450*5f748b3cSKun Lu 	PW_REG_AUDIO_DSP_APSRC_REQ_MASK_B,
451*5f748b3cSKun Lu 	PW_REG_AUDIO_DSP_DDREN_REQ_MASK_B,
452*5f748b3cSKun Lu 	PW_REG_AUDIO_DSP_EMI_REQ_MASK_B,
453*5f748b3cSKun Lu 	PW_REG_AUDIO_DSP_INFRA_REQ_MASK_B,
454*5f748b3cSKun Lu 	PW_REG_AUDIO_DSP_PMIC_REQ_MASK_B,
455*5f748b3cSKun Lu 	PW_REG_AUDIO_DSP_SRCCLKENA_MASK_B,
456*5f748b3cSKun Lu 	PW_REG_AUDIO_DSP_VCORE_REQ_MASK_B,
457*5f748b3cSKun Lu 	PW_REG_AUDIO_DSP_VRF18_REQ_MASK_B,
458*5f748b3cSKun Lu 	PW_REG_CAM_APSRC_REQ_MASK_B,
459*5f748b3cSKun Lu 	PW_REG_CAM_DDREN_REQ_MASK_B,
460*5f748b3cSKun Lu 	PW_REG_CAM_EMI_REQ_MASK_B,
461*5f748b3cSKun Lu 	PW_REG_CAM_INFRA_REQ_MASK_B,
462*5f748b3cSKun Lu 	PW_REG_CAM_PMIC_REQ_MASK_B,
463*5f748b3cSKun Lu 	PW_REG_CAM_SRCCLKENA_MASK_B,
464*5f748b3cSKun Lu 	PW_REG_CAM_VRF18_REQ_MASK_B,
465*5f748b3cSKun Lu 	PW_REG_MDP_EMI_REQ_MASK_B,
466*5f748b3cSKun Lu 
467*5f748b3cSKun Lu 	/* SPM_SRC_MASK_1 */
468*5f748b3cSKun Lu 	PW_REG_CCIF_APSRC_REQ_MASK_B,
469*5f748b3cSKun Lu 	PW_REG_CCIF_EMI_REQ_MASK_B,
470*5f748b3cSKun Lu 
471*5f748b3cSKun Lu 	/* SPM_SRC_MASK_2 */
472*5f748b3cSKun Lu 	PW_REG_CCIF_INFRA_REQ_MASK_B,
473*5f748b3cSKun Lu 	PW_REG_CCIF_PMIC_REQ_MASK_B,
474*5f748b3cSKun Lu 
475*5f748b3cSKun Lu 	/* SPM_SRC_MASK_3 */
476*5f748b3cSKun Lu 	PW_REG_CCIF_SRCCLKENA_MASK_B,
477*5f748b3cSKun Lu 	PW_REG_CCIF_VRF18_REQ_MASK_B,
478*5f748b3cSKun Lu 	PW_REG_CCU_APSRC_REQ_MASK_B,
479*5f748b3cSKun Lu 	PW_REG_CCU_DDREN_REQ_MASK_B,
480*5f748b3cSKun Lu 	PW_REG_CCU_EMI_REQ_MASK_B,
481*5f748b3cSKun Lu 	PW_REG_CCU_INFRA_REQ_MASK_B,
482*5f748b3cSKun Lu 	PW_REG_CCU_PMIC_REQ_MASK_B,
483*5f748b3cSKun Lu 	PW_REG_CCU_SRCCLKENA_MASK_B,
484*5f748b3cSKun Lu 	PW_REG_CCU_VRF18_REQ_MASK_B,
485*5f748b3cSKun Lu 	PW_REG_CG_CHECK_APSRC_REQ_MASK_B,
486*5f748b3cSKun Lu 
487*5f748b3cSKun Lu 	/* SPM_SRC_MASK_4 */
488*5f748b3cSKun Lu 	PW_REG_CG_CHECK_DDREN_REQ_MASK_B,
489*5f748b3cSKun Lu 	PW_REG_CG_CHECK_EMI_REQ_MASK_B,
490*5f748b3cSKun Lu 	PW_REG_CG_CHECK_INFRA_REQ_MASK_B,
491*5f748b3cSKun Lu 	PW_REG_CG_CHECK_PMIC_REQ_MASK_B,
492*5f748b3cSKun Lu 	PW_REG_CG_CHECK_SRCCLKENA_MASK_B,
493*5f748b3cSKun Lu 	PW_REG_CG_CHECK_VCORE_REQ_MASK_B,
494*5f748b3cSKun Lu 	PW_REG_CG_CHECK_VRF18_REQ_MASK_B,
495*5f748b3cSKun Lu 	PW_REG_CONN_APSRC_REQ_MASK_B,
496*5f748b3cSKun Lu 	PW_REG_CONN_DDREN_REQ_MASK_B,
497*5f748b3cSKun Lu 	PW_REG_CONN_EMI_REQ_MASK_B,
498*5f748b3cSKun Lu 	PW_REG_CONN_INFRA_REQ_MASK_B,
499*5f748b3cSKun Lu 	PW_REG_CONN_PMIC_REQ_MASK_B,
500*5f748b3cSKun Lu 	PW_REG_CONN_SRCCLKENA_MASK_B,
501*5f748b3cSKun Lu 	PW_REG_CONN_SRCCLKENB_MASK_B,
502*5f748b3cSKun Lu 	PW_REG_CONN_VCORE_REQ_MASK_B,
503*5f748b3cSKun Lu 	PW_REG_CONN_VRF18_REQ_MASK_B,
504*5f748b3cSKun Lu 	PW_REG_CPUEB_APSRC_REQ_MASK_B,
505*5f748b3cSKun Lu 	PW_REG_CPUEB_DDREN_REQ_MASK_B,
506*5f748b3cSKun Lu 	PW_REG_CPUEB_EMI_REQ_MASK_B,
507*5f748b3cSKun Lu 	PW_REG_CPUEB_INFRA_REQ_MASK_B,
508*5f748b3cSKun Lu 	PW_REG_CPUEB_PMIC_REQ_MASK_B,
509*5f748b3cSKun Lu 	PW_REG_CPUEB_SRCCLKENA_MASK_B,
510*5f748b3cSKun Lu 	PW_REG_CPUEB_VRF18_REQ_MASK_B,
511*5f748b3cSKun Lu 	PW_REG_DISP0_APSRC_REQ_MASK_B,
512*5f748b3cSKun Lu 	PW_REG_DISP0_DDREN_REQ_MASK_B,
513*5f748b3cSKun Lu 	PW_REG_DISP0_EMI_REQ_MASK_B,
514*5f748b3cSKun Lu 	PW_REG_DISP0_INFRA_REQ_MASK_B,
515*5f748b3cSKun Lu 	PW_REG_DISP0_PMIC_REQ_MASK_B,
516*5f748b3cSKun Lu 	PW_REG_DISP0_SRCCLKENA_MASK_B,
517*5f748b3cSKun Lu 	PW_REG_DISP0_VRF18_REQ_MASK_B,
518*5f748b3cSKun Lu 	PW_REG_DISP1_APSRC_REQ_MASK_B,
519*5f748b3cSKun Lu 	PW_REG_DISP1_DDREN_REQ_MASK_B,
520*5f748b3cSKun Lu 
521*5f748b3cSKun Lu 	/* SPM_SRC_MASK_5 */
522*5f748b3cSKun Lu 	PW_REG_DISP1_EMI_REQ_MASK_B,
523*5f748b3cSKun Lu 	PW_REG_DISP1_INFRA_REQ_MASK_B,
524*5f748b3cSKun Lu 	PW_REG_DISP1_PMIC_REQ_MASK_B,
525*5f748b3cSKun Lu 	PW_REG_DISP1_SRCCLKENA_MASK_B,
526*5f748b3cSKun Lu 	PW_REG_DISP1_VRF18_REQ_MASK_B,
527*5f748b3cSKun Lu 	PW_REG_DPM_APSRC_REQ_MASK_B,
528*5f748b3cSKun Lu 	PW_REG_DPM_DDREN_REQ_MASK_B,
529*5f748b3cSKun Lu 	PW_REG_DPM_EMI_REQ_MASK_B,
530*5f748b3cSKun Lu 	PW_REG_DPM_INFRA_REQ_MASK_B,
531*5f748b3cSKun Lu 	PW_REG_DPM_PMIC_REQ_MASK_B,
532*5f748b3cSKun Lu 	PW_REG_DPM_SRCCLKENA_MASK_B,
533*5f748b3cSKun Lu 
534*5f748b3cSKun Lu 	/* SPM_SRC_MASK_6 */
535*5f748b3cSKun Lu 	PW_REG_DPM_VCORE_REQ_MASK_B,
536*5f748b3cSKun Lu 	PW_REG_DPM_VRF18_REQ_MASK_B,
537*5f748b3cSKun Lu 	PW_REG_DPMAIF_APSRC_REQ_MASK_B,
538*5f748b3cSKun Lu 	PW_REG_DPMAIF_DDREN_REQ_MASK_B,
539*5f748b3cSKun Lu 	PW_REG_DPMAIF_EMI_REQ_MASK_B,
540*5f748b3cSKun Lu 	PW_REG_DPMAIF_INFRA_REQ_MASK_B,
541*5f748b3cSKun Lu 	PW_REG_DPMAIF_PMIC_REQ_MASK_B,
542*5f748b3cSKun Lu 	PW_REG_DPMAIF_SRCCLKENA_MASK_B,
543*5f748b3cSKun Lu 	PW_REG_DPMAIF_VRF18_REQ_MASK_B,
544*5f748b3cSKun Lu 	PW_REG_DVFSRC_LEVEL_REQ_MASK_B,
545*5f748b3cSKun Lu 	PW_REG_EMISYS_APSRC_REQ_MASK_B,
546*5f748b3cSKun Lu 	PW_REG_EMISYS_DDREN_REQ_MASK_B,
547*5f748b3cSKun Lu 	PW_REG_EMISYS_EMI_REQ_MASK_B,
548*5f748b3cSKun Lu 	PW_REG_GCE_D_APSRC_REQ_MASK_B,
549*5f748b3cSKun Lu 	PW_REG_GCE_D_DDREN_REQ_MASK_B,
550*5f748b3cSKun Lu 	PW_REG_GCE_D_EMI_REQ_MASK_B,
551*5f748b3cSKun Lu 	PW_REG_GCE_D_INFRA_REQ_MASK_B,
552*5f748b3cSKun Lu 	PW_REG_GCE_D_PMIC_REQ_MASK_B,
553*5f748b3cSKun Lu 	PW_REG_GCE_D_SRCCLKENA_MASK_B,
554*5f748b3cSKun Lu 	PW_REG_GCE_D_VRF18_REQ_MASK_B,
555*5f748b3cSKun Lu 	PW_REG_GCE_M_APSRC_REQ_MASK_B,
556*5f748b3cSKun Lu 	PW_REG_GCE_M_DDREN_REQ_MASK_B,
557*5f748b3cSKun Lu 	PW_REG_GCE_M_EMI_REQ_MASK_B,
558*5f748b3cSKun Lu 	PW_REG_GCE_M_INFRA_REQ_MASK_B,
559*5f748b3cSKun Lu 	PW_REG_GCE_M_PMIC_REQ_MASK_B,
560*5f748b3cSKun Lu 	PW_REG_GCE_M_SRCCLKENA_MASK_B,
561*5f748b3cSKun Lu 
562*5f748b3cSKun Lu 	/* SPM_SRC_MASK_7 */
563*5f748b3cSKun Lu 	PW_REG_GCE_M_VRF18_REQ_MASK_B,
564*5f748b3cSKun Lu 	PW_REG_GPUEB_APSRC_REQ_MASK_B,
565*5f748b3cSKun Lu 	PW_REG_GPUEB_DDREN_REQ_MASK_B,
566*5f748b3cSKun Lu 	PW_REG_GPUEB_EMI_REQ_MASK_B,
567*5f748b3cSKun Lu 	PW_REG_GPUEB_INFRA_REQ_MASK_B,
568*5f748b3cSKun Lu 	PW_REG_GPUEB_PMIC_REQ_MASK_B,
569*5f748b3cSKun Lu 	PW_REG_GPUEB_SRCCLKENA_MASK_B,
570*5f748b3cSKun Lu 	PW_REG_GPUEB_VRF18_REQ_MASK_B,
571*5f748b3cSKun Lu 	PW_REG_HWCCF_APSRC_REQ_MASK_B,
572*5f748b3cSKun Lu 	PW_REG_HWCCF_DDREN_REQ_MASK_B,
573*5f748b3cSKun Lu 	PW_REG_HWCCF_EMI_REQ_MASK_B,
574*5f748b3cSKun Lu 	PW_REG_HWCCF_INFRA_REQ_MASK_B,
575*5f748b3cSKun Lu 	PW_REG_HWCCF_PMIC_REQ_MASK_B,
576*5f748b3cSKun Lu 	PW_REG_HWCCF_SRCCLKENA_MASK_B,
577*5f748b3cSKun Lu 	PW_REG_HWCCF_VCORE_REQ_MASK_B,
578*5f748b3cSKun Lu 	PW_REG_HWCCF_VRF18_REQ_MASK_B,
579*5f748b3cSKun Lu 	PW_REG_IMG_APSRC_REQ_MASK_B,
580*5f748b3cSKun Lu 	PW_REG_IMG_DDREN_REQ_MASK_B,
581*5f748b3cSKun Lu 	PW_REG_IMG_EMI_REQ_MASK_B,
582*5f748b3cSKun Lu 	PW_REG_IMG_INFRA_REQ_MASK_B,
583*5f748b3cSKun Lu 	PW_REG_IMG_PMIC_REQ_MASK_B,
584*5f748b3cSKun Lu 	PW_REG_IMG_SRCCLKENA_MASK_B,
585*5f748b3cSKun Lu 	PW_REG_IMG_VRF18_REQ_MASK_B,
586*5f748b3cSKun Lu 	PW_REG_INFRASYS_APSRC_REQ_MASK_B,
587*5f748b3cSKun Lu 	PW_REG_INFRASYS_DDREN_REQ_MASK_B,
588*5f748b3cSKun Lu 	PW_REG_INFRASYS_EMI_REQ_MASK_B,
589*5f748b3cSKun Lu 	PW_REG_IPIC_INFRA_REQ_MASK_B,
590*5f748b3cSKun Lu 	PW_REG_IPIC_VRF18_REQ_MASK_B,
591*5f748b3cSKun Lu 	PW_REG_MCU_APSRC_REQ_MASK_B,
592*5f748b3cSKun Lu 	PW_REG_MCU_DDREN_REQ_MASK_B,
593*5f748b3cSKun Lu 	PW_REG_MCU_EMI_REQ_MASK_B,
594*5f748b3cSKun Lu 
595*5f748b3cSKun Lu 	/* SPM_SRC_MASK_8 */
596*5f748b3cSKun Lu 	PW_REG_MCUSYS_APSRC_REQ_MASK_B,
597*5f748b3cSKun Lu 	PW_REG_MCUSYS_DDREN_REQ_MASK_B,
598*5f748b3cSKun Lu 	PW_REG_MCUSYS_EMI_REQ_MASK_B,
599*5f748b3cSKun Lu 	PW_REG_MCUSYS_INFRA_REQ_MASK_B,
600*5f748b3cSKun Lu 
601*5f748b3cSKun Lu 	/* SPM_SRC_MASK_9 */
602*5f748b3cSKun Lu 	PW_REG_MCUSYS_PMIC_REQ_MASK_B,
603*5f748b3cSKun Lu 	PW_REG_MCUSYS_SRCCLKENA_MASK_B,
604*5f748b3cSKun Lu 	PW_REG_MCUSYS_VRF18_REQ_MASK_B,
605*5f748b3cSKun Lu 	PW_REG_MD_APSRC_REQ_MASK_B,
606*5f748b3cSKun Lu 	PW_REG_MD_DDREN_REQ_MASK_B,
607*5f748b3cSKun Lu 	PW_REG_MD_EMI_REQ_MASK_B,
608*5f748b3cSKun Lu 	PW_REG_MD_INFRA_REQ_MASK_B,
609*5f748b3cSKun Lu 	PW_REG_MD_PMIC_REQ_MASK_B,
610*5f748b3cSKun Lu 	PW_REG_MD_SRCCLKENA_MASK_B,
611*5f748b3cSKun Lu 	PW_REG_MD_SRCCLKENA1_MASK_B,
612*5f748b3cSKun Lu 	PW_REG_MD_VCORE_REQ_MASK_B,
613*5f748b3cSKun Lu 
614*5f748b3cSKun Lu 	/* SPM_SRC_MASK_10 */
615*5f748b3cSKun Lu 	PW_REG_MD_VRF18_REQ_MASK_B,
616*5f748b3cSKun Lu 	PW_REG_MDP_APSRC_REQ_MASK_B,
617*5f748b3cSKun Lu 	PW_REG_MDP_DDREN_REQ_MASK_B,
618*5f748b3cSKun Lu 	PW_REG_MM_PROC_APSRC_REQ_MASK_B,
619*5f748b3cSKun Lu 	PW_REG_MM_PROC_DDREN_REQ_MASK_B,
620*5f748b3cSKun Lu 	PW_REG_MM_PROC_EMI_REQ_MASK_B,
621*5f748b3cSKun Lu 	PW_REG_MM_PROC_INFRA_REQ_MASK_B,
622*5f748b3cSKun Lu 	PW_REG_MM_PROC_PMIC_REQ_MASK_B,
623*5f748b3cSKun Lu 	PW_REG_MM_PROC_SRCCLKENA_MASK_B,
624*5f748b3cSKun Lu 	PW_REG_MM_PROC_VRF18_REQ_MASK_B,
625*5f748b3cSKun Lu 	PW_REG_MMSYS_APSRC_REQ_MASK_B,
626*5f748b3cSKun Lu 	PW_REG_MMSYS_DDREN_REQ_MASK_B,
627*5f748b3cSKun Lu 	PW_REG_MMSYS_VRF18_REQ_MASK_B,
628*5f748b3cSKun Lu 	PW_REG_PCIE0_APSRC_REQ_MASK_B,
629*5f748b3cSKun Lu 	PW_REG_PCIE0_DDREN_REQ_MASK_B,
630*5f748b3cSKun Lu 	PW_REG_PCIE0_INFRA_REQ_MASK_B,
631*5f748b3cSKun Lu 	PW_REG_PCIE0_SRCCLKENA_MASK_B,
632*5f748b3cSKun Lu 	PW_REG_PCIE0_VRF18_REQ_MASK_B,
633*5f748b3cSKun Lu 	PW_REG_PCIE1_APSRC_REQ_MASK_B,
634*5f748b3cSKun Lu 	PW_REG_PCIE1_DDREN_REQ_MASK_B,
635*5f748b3cSKun Lu 	PW_REG_PCIE1_INFRA_REQ_MASK_B,
636*5f748b3cSKun Lu 	PW_REG_PCIE1_SRCCLKENA_MASK_B,
637*5f748b3cSKun Lu 	PW_REG_PCIE1_VRF18_REQ_MASK_B,
638*5f748b3cSKun Lu 	PW_REG_PERISYS_APSRC_REQ_MASK_B,
639*5f748b3cSKun Lu 	PW_REG_PERISYS_DDREN_REQ_MASK_B,
640*5f748b3cSKun Lu 	PW_REG_PERISYS_EMI_REQ_MASK_B,
641*5f748b3cSKun Lu 	PW_REG_PERISYS_INFRA_REQ_MASK_B,
642*5f748b3cSKun Lu 	PW_REG_PERISYS_PMIC_REQ_MASK_B,
643*5f748b3cSKun Lu 	PW_REG_PERISYS_SRCCLKENA_MASK_B,
644*5f748b3cSKun Lu 	PW_REG_PERISYS_VCORE_REQ_MASK_B,
645*5f748b3cSKun Lu 	PW_REG_PERISYS_VRF18_REQ_MASK_B,
646*5f748b3cSKun Lu 	PW_REG_SCP_APSRC_REQ_MASK_B,
647*5f748b3cSKun Lu 
648*5f748b3cSKun Lu 	/* SPM_SRC_MASK_11 */
649*5f748b3cSKun Lu 	PW_REG_SCP_DDREN_REQ_MASK_B,
650*5f748b3cSKun Lu 	PW_REG_SCP_EMI_REQ_MASK_B,
651*5f748b3cSKun Lu 	PW_REG_SCP_INFRA_REQ_MASK_B,
652*5f748b3cSKun Lu 	PW_REG_SCP_PMIC_REQ_MASK_B,
653*5f748b3cSKun Lu 	PW_REG_SCP_SRCCLKENA_MASK_B,
654*5f748b3cSKun Lu 	PW_REG_SCP_VCORE_REQ_MASK_B,
655*5f748b3cSKun Lu 	PW_REG_SCP_VRF18_REQ_MASK_B,
656*5f748b3cSKun Lu 	PW_REG_SRCCLKENI_INFRA_REQ_MASK_B,
657*5f748b3cSKun Lu 	PW_REG_SRCCLKENI_PMIC_REQ_MASK_B,
658*5f748b3cSKun Lu 	PW_REG_SRCCLKENI_SRCCLKENA_MASK_B,
659*5f748b3cSKun Lu 	PW_REG_SSPM_APSRC_REQ_MASK_B,
660*5f748b3cSKun Lu 	PW_REG_SSPM_DDREN_REQ_MASK_B,
661*5f748b3cSKun Lu 	PW_REG_SSPM_EMI_REQ_MASK_B,
662*5f748b3cSKun Lu 	PW_REG_SSPM_INFRA_REQ_MASK_B,
663*5f748b3cSKun Lu 	PW_REG_SSPM_PMIC_REQ_MASK_B,
664*5f748b3cSKun Lu 	PW_REG_SSPM_SRCCLKENA_MASK_B,
665*5f748b3cSKun Lu 	PW_REG_SSPM_VRF18_REQ_MASK_B,
666*5f748b3cSKun Lu 	PW_REG_SSR_APSRC_REQ_MASK_B,
667*5f748b3cSKun Lu 	PW_REG_SSR_DDREN_REQ_MASK_B,
668*5f748b3cSKun Lu 	PW_REG_SSR_EMI_REQ_MASK_B,
669*5f748b3cSKun Lu 	PW_REG_SSR_INFRA_REQ_MASK_B,
670*5f748b3cSKun Lu 	PW_REG_SSR_PMIC_REQ_MASK_B,
671*5f748b3cSKun Lu 	PW_REG_SSR_SRCCLKENA_MASK_B,
672*5f748b3cSKun Lu 	PW_REG_SSR_VRF18_REQ_MASK_B,
673*5f748b3cSKun Lu 	PW_REG_UFS_APSRC_REQ_MASK_B,
674*5f748b3cSKun Lu 	PW_REG_UFS_DDREN_REQ_MASK_B,
675*5f748b3cSKun Lu 	PW_REG_UFS_EMI_REQ_MASK_B,
676*5f748b3cSKun Lu 	PW_REG_UFS_INFRA_REQ_MASK_B,
677*5f748b3cSKun Lu 	PW_REG_UFS_PMIC_REQ_MASK_B,
678*5f748b3cSKun Lu 
679*5f748b3cSKun Lu 	/* SPM_SRC_MASK_12 */
680*5f748b3cSKun Lu 	PW_REG_UFS_SRCCLKENA_MASK_B,
681*5f748b3cSKun Lu 	PW_REG_UFS_VRF18_REQ_MASK_B,
682*5f748b3cSKun Lu 	PW_REG_VDEC_APSRC_REQ_MASK_B,
683*5f748b3cSKun Lu 	PW_REG_VDEC_DDREN_REQ_MASK_B,
684*5f748b3cSKun Lu 	PW_REG_VDEC_EMI_REQ_MASK_B,
685*5f748b3cSKun Lu 	PW_REG_VDEC_INFRA_REQ_MASK_B,
686*5f748b3cSKun Lu 	PW_REG_VDEC_PMIC_REQ_MASK_B,
687*5f748b3cSKun Lu 	PW_REG_VDEC_SRCCLKENA_MASK_B,
688*5f748b3cSKun Lu 	PW_REG_VDEC_VRF18_REQ_MASK_B,
689*5f748b3cSKun Lu 	PW_REG_VENC_APSRC_REQ_MASK_B,
690*5f748b3cSKun Lu 	PW_REG_VENC_DDREN_REQ_MASK_B,
691*5f748b3cSKun Lu 	PW_REG_VENC_EMI_REQ_MASK_B,
692*5f748b3cSKun Lu 	PW_REG_VENC_INFRA_REQ_MASK_B,
693*5f748b3cSKun Lu 	PW_REG_VENC_PMIC_REQ_MASK_B,
694*5f748b3cSKun Lu 	PW_REG_VENC_SRCCLKENA_MASK_B,
695*5f748b3cSKun Lu 	PW_REG_VENC_VRF18_REQ_MASK_B,
696*5f748b3cSKun Lu 	PW_REG_IPE_APSRC_REQ_MASK_B,
697*5f748b3cSKun Lu 	PW_REG_IPE_DDREN_REQ_MASK_B,
698*5f748b3cSKun Lu 	PW_REG_IPE_EMI_REQ_MASK_B,
699*5f748b3cSKun Lu 	PW_REG_IPE_INFRA_REQ_MASK_B,
700*5f748b3cSKun Lu 	PW_REG_IPE_PMIC_REQ_MASK_B,
701*5f748b3cSKun Lu 	PW_REG_IPE_SRCCLKENA_MASK_B,
702*5f748b3cSKun Lu 	PW_REG_IPE_VRF18_REQ_MASK_B,
703*5f748b3cSKun Lu 	PW_REG_UFS_VCORE_REQ_MASK_B,
704*5f748b3cSKun Lu 
705*5f748b3cSKun Lu 	/* SPM_EVENT_CON_MISC */
706*5f748b3cSKun Lu 	PW_REG_SRCCLKEN_FAST_RESP,
707*5f748b3cSKun Lu 	PW_REG_CSYSPWRUP_ACK_MASK,
708*5f748b3cSKun Lu 
709*5f748b3cSKun Lu 	/* SPM_WAKEUP_EVENT_MASK */
710*5f748b3cSKun Lu 	PW_REG_WAKEUP_EVENT_MASK,
711*5f748b3cSKun Lu 
712*5f748b3cSKun Lu 	/* SPM_WAKEUP_EVENT_EXT_MASK */
713*5f748b3cSKun Lu 	PW_REG_EXT_WAKEUP_EVENT_MASK,
714*5f748b3cSKun Lu 
715*5f748b3cSKun Lu 	PW_MAX_COUNT,
716*5f748b3cSKun Lu };
717*5f748b3cSKun Lu 
718*5f748b3cSKun Lu /*
719*5f748b3cSKun Lu  * HW_TARG_GROUP_SEL_3		: 3b'1 (pcm_reg_13)
720*5f748b3cSKun Lu  * HW_TARG_SIGNAL_SEL_3		: 5b'10101 (pcm_reg_13[21]=sc_emi_clk_off_ack_all)
721*5f748b3cSKun Lu  * HW_TRIG_GROUP_SEL_3		: 3'b100 (trig_reserve)
722*5f748b3cSKun Lu  * HW_TRIG_SIGNAL_SEL_3		: 5'b1100 (trig_reserve[24]=sc_hw_s1_req)
723*5f748b3cSKun Lu  */
724*5f748b3cSKun Lu #define SPM_ACK_CHK_3_SEL_HW_S1 (0x00350098)
725*5f748b3cSKun Lu #define SPM_ACK_CHK_3_HW_S1_CNT (1)
726*5f748b3cSKun Lu 
727*5f748b3cSKun Lu #define SPM_ACK_CHK_3_CON_HW_MODE_TRIG (0x800)
728*5f748b3cSKun Lu /* BIT[0]: SW_EN, BIT[4]: STA_EN, BIT[8]: HW_EN */
729*5f748b3cSKun Lu #define SPM_ACK_CHK_3_CON_EN (0x110)
730*5f748b3cSKun Lu #define SPM_ACK_CHK_3_CON_CLR_ALL (0x2)
731*5f748b3cSKun Lu /* BIT[15]: RESULT */
732*5f748b3cSKun Lu #define SPM_ACK_CHK_3_CON_RESULT (0x8000)
733*5f748b3cSKun Lu 
734*5f748b3cSKun Lu struct wake_status_trace_comm {
735*5f748b3cSKun Lu 	uint32_t debug_flag; /* PCM_WDT_LATCH_SPARE_0 */
736*5f748b3cSKun Lu 	uint32_t debug_flag1; /* PCM_WDT_LATCH_SPARE_1 */
737*5f748b3cSKun Lu 	uint32_t timer_out; /* SPM_SW_RSV_6*/
738*5f748b3cSKun Lu 	uint32_t b_sw_flag0; /* PCM_WDT_LATCH_SPARE_7 */
739*5f748b3cSKun Lu 	uint32_t b_sw_flag1; /* PCM_WDT_LATCH_SPARE_5 */
740*5f748b3cSKun Lu 	uint32_t r12; /* SPM_SW_RSV_0 */
741*5f748b3cSKun Lu 	uint32_t r13; /* PCM_REG13_DATA */
742*5f748b3cSKun Lu 	uint32_t req_sta0; /* SRC_REQ_STA_0 */
743*5f748b3cSKun Lu 	uint32_t req_sta1; /* SRC_REQ_STA_1 */
744*5f748b3cSKun Lu 	uint32_t req_sta2; /* SRC_REQ_STA_2 */
745*5f748b3cSKun Lu 	uint32_t req_sta3; /* SRC_REQ_STA_3 */
746*5f748b3cSKun Lu 	uint32_t req_sta4; /* SRC_REQ_STA_4 */
747*5f748b3cSKun Lu 	uint32_t req_sta5; /* SRC_REQ_STA_5 */
748*5f748b3cSKun Lu 	uint32_t req_sta6; /* SRC_REQ_STA_6 */
749*5f748b3cSKun Lu 	uint32_t req_sta7; /* SRC_REQ_STA_7 */
750*5f748b3cSKun Lu 	uint32_t req_sta8; /* SRC_REQ_STA_8 */
751*5f748b3cSKun Lu 	uint32_t req_sta9; /* SRC_REQ_STA_9 */
752*5f748b3cSKun Lu 	uint32_t req_sta10; /* SRC_REQ_STA_10 */
753*5f748b3cSKun Lu 	uint32_t req_sta11; /* SRC_REQ_STA_11 */
754*5f748b3cSKun Lu 	uint32_t req_sta12; /* SRC_REQ_STA_12 */
755*5f748b3cSKun Lu 	uint32_t raw_sta; /* SPM_WAKEUP_STA */
756*5f748b3cSKun Lu 	uint32_t times_h; /* timestamp high bits */
757*5f748b3cSKun Lu 	uint32_t times_l; /* timestamp low bits */
758*5f748b3cSKun Lu 	uint32_t resumetime; /* timestamp low bits */
759*5f748b3cSKun Lu };
760*5f748b3cSKun Lu 
761*5f748b3cSKun Lu struct wake_status_trace {
762*5f748b3cSKun Lu 	/* Common part */
763*5f748b3cSKun Lu 	struct wake_status_trace_comm comm;
764*5f748b3cSKun Lu 	/* Add suspend or idle part bellow */
765*5f748b3cSKun Lu };
766*5f748b3cSKun Lu 
767*5f748b3cSKun Lu struct wake_status {
768*5f748b3cSKun Lu 	struct wake_status_trace tr;
769*5f748b3cSKun Lu 	uint32_t r12_ext; /* SPM_WAKEUP_EXT_STA */
770*5f748b3cSKun Lu 	uint32_t raw_ext_sta; /* SPM_WAKEUP_EXT_STA */
771*5f748b3cSKun Lu 	uint32_t md32pcm_wakeup_sta; /* MD32PCM_WAKEUP_STA */
772*5f748b3cSKun Lu 	uint32_t md32pcm_event_sta; /* MD32PCM_EVENT_STA */
773*5f748b3cSKun Lu 	uint32_t wake_misc; /* SPM_SW_RSV_5 */
774*5f748b3cSKun Lu 	uint32_t sw_flag0; /* SPM_SW_FLAG_0 */
775*5f748b3cSKun Lu 	uint32_t sw_flag1; /* SPM_SW_FLAG_1 */
776*5f748b3cSKun Lu 	uint32_t isr; /* SPM_IRQ_STA */
777*5f748b3cSKun Lu 	uint32_t log_index;
778*5f748b3cSKun Lu 	uint32_t is_abort;
779*5f748b3cSKun Lu };
780*5f748b3cSKun Lu 
781*5f748b3cSKun Lu struct spm_lp_scen {
782*5f748b3cSKun Lu 	struct pcm_desc *pcmdesc;
783*5f748b3cSKun Lu 	struct pwr_ctrl *pwrctrl;
784*5f748b3cSKun Lu 	struct dbg_ctrl *dbgctrl;
785*5f748b3cSKun Lu 	struct spm_lp_stat *lpstat;
786*5f748b3cSKun Lu };
787*5f748b3cSKun Lu 
788*5f748b3cSKun Lu extern struct spm_lp_scen __spm_vcorefs;
789*5f748b3cSKun Lu 
790*5f748b3cSKun Lu void __spm_set_cpu_status(int cpu);
791*5f748b3cSKun Lu void __spm_reset_and_init_pcm(const struct pcm_desc *pcmdesc);
792*5f748b3cSKun Lu void __spm_kick_im_to_fetch(const struct pcm_desc *pcmdesc);
793*5f748b3cSKun Lu 
794*5f748b3cSKun Lu void __spm_init_pcm_register(void); /* init r0 and r7 */
795*5f748b3cSKun Lu void __spm_set_power_control(const struct pwr_ctrl *pwrctrl,
796*5f748b3cSKun Lu 			     uint32_t resource_usage);
797*5f748b3cSKun Lu void __spm_set_wakeup_event(const struct pwr_ctrl *pwrctrl);
798*5f748b3cSKun Lu void __spm_kick_pcm_to_run(struct pwr_ctrl *pwrctrl);
799*5f748b3cSKun Lu void __spm_set_pcm_flags(struct pwr_ctrl *pwrctrl);
800*5f748b3cSKun Lu void __spm_send_cpu_wakeup_event(void);
801*5f748b3cSKun Lu 
802*5f748b3cSKun Lu void __spm_get_wakeup_status(struct wake_status *wakesta, uint32_t ext_status);
803*5f748b3cSKun Lu void __spm_clean_after_wakeup(void);
804*5f748b3cSKun Lu wake_reason_t __spm_output_wake_reason(const struct wake_status *wakesta);
805*5f748b3cSKun Lu 
806*5f748b3cSKun Lu void __spm_sync_vcore_dvfs_power_control(struct pwr_ctrl *dest_pwr_ctrl,
807*5f748b3cSKun Lu 					 const struct pwr_ctrl *src_pwr_ctrl);
808*5f748b3cSKun Lu 
809*5f748b3cSKun Lu void __spm_set_pcm_wdt(int en);
810*5f748b3cSKun Lu uint32_t __spm_get_pcm_timer_val(void);
811*5f748b3cSKun Lu uint32_t _spm_get_wake_period(int pwake_time, wake_reason_t last_wr);
812*5f748b3cSKun Lu void __spm_set_fw_resume_option(struct pwr_ctrl *pwrctrl);
813*5f748b3cSKun Lu void __spm_ext_int_wakeup_req_clr(void);
814*5f748b3cSKun Lu 
set_pwrctrl_pcm_flags(struct pwr_ctrl * pwrctrl,uint32_t flags)815*5f748b3cSKun Lu static inline void set_pwrctrl_pcm_flags(struct pwr_ctrl *pwrctrl,
816*5f748b3cSKun Lu 					 uint32_t flags)
817*5f748b3cSKun Lu {
818*5f748b3cSKun Lu 	if (!pwrctrl)
819*5f748b3cSKun Lu 		return;
820*5f748b3cSKun Lu 
821*5f748b3cSKun Lu 	if (pwrctrl->pcm_flags_cust == 0)
822*5f748b3cSKun Lu 		pwrctrl->pcm_flags = flags;
823*5f748b3cSKun Lu 	else
824*5f748b3cSKun Lu 		pwrctrl->pcm_flags = pwrctrl->pcm_flags_cust;
825*5f748b3cSKun Lu }
826*5f748b3cSKun Lu 
set_pwrctrl_pcm_flags1(struct pwr_ctrl * pwrctrl,uint32_t flags)827*5f748b3cSKun Lu static inline void set_pwrctrl_pcm_flags1(struct pwr_ctrl *pwrctrl,
828*5f748b3cSKun Lu 					  uint32_t flags)
829*5f748b3cSKun Lu {
830*5f748b3cSKun Lu 	if (!pwrctrl)
831*5f748b3cSKun Lu 		return;
832*5f748b3cSKun Lu 
833*5f748b3cSKun Lu 	if (pwrctrl->pcm_flags1_cust == 0)
834*5f748b3cSKun Lu 		pwrctrl->pcm_flags1 = flags;
835*5f748b3cSKun Lu 	else
836*5f748b3cSKun Lu 		pwrctrl->pcm_flags1 = pwrctrl->pcm_flags1_cust;
837*5f748b3cSKun Lu }
838*5f748b3cSKun Lu 
839*5f748b3cSKun Lu void __spm_hw_s1_state_monitor(int en, uint32_t *status);
840*5f748b3cSKun Lu 
spm_hw_s1_state_monitor_resume(void)841*5f748b3cSKun Lu static inline void spm_hw_s1_state_monitor_resume(void)
842*5f748b3cSKun Lu {
843*5f748b3cSKun Lu 	__spm_hw_s1_state_monitor(1, NULL);
844*5f748b3cSKun Lu }
spm_hw_s1_state_monitor_pause(uint32_t * status)845*5f748b3cSKun Lu static inline void spm_hw_s1_state_monitor_pause(uint32_t *status)
846*5f748b3cSKun Lu {
847*5f748b3cSKun Lu 	__spm_hw_s1_state_monitor(0, status);
848*5f748b3cSKun Lu }
849*5f748b3cSKun Lu 
850*5f748b3cSKun Lu void __spm_clean_before_wfi(void);
851*5f748b3cSKun Lu int32_t __spm_wait_spm_request_ack(uint32_t spm_resource_req,
852*5f748b3cSKun Lu 				   uint32_t timeout_us);
853*5f748b3cSKun Lu #endif /* MT_SPM_INTERNAL */
854