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