xref: /rk3399_ARM-atf/plat/mediatek/drivers/cpu_pm/topology/inc/pwr_topology.h (revision cf2df874cd09305ac7282fadb0fef6be597dfffb)
1*da54c724SKai Liang /*
2*da54c724SKai Liang  * Copyright (c) 2025, MediaTek Inc. All rights reserved.
3*da54c724SKai Liang  *
4*da54c724SKai Liang  * SPDX-License-Identifier: BSD-3-Clause
5*da54c724SKai Liang  */
6*da54c724SKai Liang 
7*da54c724SKai Liang #ifndef PWR_TOPOLOGY_H
8*da54c724SKai Liang #define PWR_TOPOLOGY_H
9*da54c724SKai Liang 
10*da54c724SKai Liang #include <lib/pm/mtk_pm.h>
11*da54c724SKai Liang 
12*da54c724SKai Liang enum pwr_domain_status {
13*da54c724SKai Liang 	PWR_DOMAIN_ON,
14*da54c724SKai Liang 	PWR_DOMAIN_OFF,
15*da54c724SKai Liang 	PWR_DOMAIN_SMP_ON,
16*da54c724SKai Liang 	PWR_DOMAIN_SMP_OFF,
17*da54c724SKai Liang };
18*da54c724SKai Liang 
19*da54c724SKai Liang struct pwr_toplogy {
20*da54c724SKai Liang 	unsigned int cur_group_bit;
21*da54c724SKai Liang 	unsigned int group;
22*da54c724SKai Liang };
23*da54c724SKai Liang 
24*da54c724SKai Liang typedef int (*afflv_prepare)(unsigned int,
25*da54c724SKai Liang 			     const struct mtk_cpupm_pwrstate *,
26*da54c724SKai Liang 			     const struct pwr_toplogy *);
27*da54c724SKai Liang 
28*da54c724SKai Liang void pwr_topology_init(void);
29*da54c724SKai Liang 
30*da54c724SKai Liang unsigned int pwr_domain_coordination(enum pwr_domain_status pwr,
31*da54c724SKai Liang 				     const mtk_pstate_type psci_state,
32*da54c724SKai Liang 				     const struct mtk_cpupm_pwrstate *state,
33*da54c724SKai Liang 				     afflv_prepare fn);
34*da54c724SKai Liang 
35*da54c724SKai Liang #endif
36