xref: /rk3399_ARM-atf/plat/mediatek/drivers/spm/mt8196/mt_spm_idle.h (revision cf2df874cd09305ac7282fadb0fef6be597dfffb)
1*01ce1d5dSWenzhen Yu /*
2*01ce1d5dSWenzhen Yu  * Copyright (c) 2025, Mediatek Inc. All rights reserved.
3*01ce1d5dSWenzhen Yu  *
4*01ce1d5dSWenzhen Yu  * SPDX-License-Identifier: BSD-3-Clause
5*01ce1d5dSWenzhen Yu  */
6*01ce1d5dSWenzhen Yu 
7*01ce1d5dSWenzhen Yu #ifndef MT_SPM_IDLE_H
8*01ce1d5dSWenzhen Yu #define MT_SPM_IDLE_H
9*01ce1d5dSWenzhen Yu 
10*01ce1d5dSWenzhen Yu #include <mt_spm_internal.h>
11*01ce1d5dSWenzhen Yu 
12*01ce1d5dSWenzhen Yu typedef int (*spm_idle_conduct)(int state_id, struct spm_lp_scen *spm_lp,
13*01ce1d5dSWenzhen Yu 				uint32_t *resource_req);
14*01ce1d5dSWenzhen Yu 
15*01ce1d5dSWenzhen Yu typedef int (*spm_idle_conduct_restore)(int state_id,
16*01ce1d5dSWenzhen Yu 					struct spm_lp_scen *spm_lp,
17*01ce1d5dSWenzhen Yu 					struct wake_status *status);
18*01ce1d5dSWenzhen Yu 
19*01ce1d5dSWenzhen Yu int mt_spm_idle_generic_enter(int state_id, uint32_t ext_opand,
20*01ce1d5dSWenzhen Yu 			      spm_idle_conduct fn);
21*01ce1d5dSWenzhen Yu void mt_spm_idle_generic_resume(int state_id, uint32_t ext_opand,
22*01ce1d5dSWenzhen Yu 				struct wake_status **status,
23*01ce1d5dSWenzhen Yu 				spm_idle_conduct_restore fn);
24*01ce1d5dSWenzhen Yu 
25*01ce1d5dSWenzhen Yu int mt_spm_idle_generic_get_spm_lp(struct spm_lp_scen **lp);
26*01ce1d5dSWenzhen Yu 
27*01ce1d5dSWenzhen Yu #endif /* MT_SPM_IDLE_H */
28