xref: /rk3399_ARM-atf/plat/mediatek/drivers/spm/mt8196/mt_spm_conservation.h (revision cf2df874cd09305ac7282fadb0fef6be597dfffb)
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_CONSERVATION_H
8*a24b53e0SWenzhen Yu #define MT_SPM_CONSERVATION_H
9*a24b53e0SWenzhen Yu 
10*a24b53e0SWenzhen Yu #include <mt_spm.h>
11*a24b53e0SWenzhen Yu #include <mt_spm_internal.h>
12*a24b53e0SWenzhen Yu 
13*a24b53e0SWenzhen Yu int spm_conservation(int state_id, uint32_t ext_opand,
14*a24b53e0SWenzhen Yu 		     struct spm_lp_scen *spm_lp,
15*a24b53e0SWenzhen Yu 		     uint32_t resource_req);
16*a24b53e0SWenzhen Yu 
17*a24b53e0SWenzhen Yu void spm_conservation_finish(int state_id, uint32_t ext_opand,
18*a24b53e0SWenzhen Yu 			     struct spm_lp_scen *spm_lp,
19*a24b53e0SWenzhen Yu 			     struct wake_status **status);
20*a24b53e0SWenzhen Yu 
21*a24b53e0SWenzhen Yu int spm_conservation_get_result(struct wake_status **res);
22*a24b53e0SWenzhen Yu 
23*a24b53e0SWenzhen Yu int spm_conservation_fw_run(uint32_t first, void *pwrctrl);
24*a24b53e0SWenzhen Yu 
25*a24b53e0SWenzhen Yu int spm_conservation_wakeup_obs(int IsSet, int cat,
26*a24b53e0SWenzhen Yu 				uint32_t wake_src_bits);
27*a24b53e0SWenzhen Yu 
28*a24b53e0SWenzhen Yu void mt_uart_save(void);
29*a24b53e0SWenzhen Yu void mt_uart_restore(void);
30*a24b53e0SWenzhen Yu #endif /* MT_SPM_CONSERVATION_H */
31