1*7352f329Skenny liang /* 2*7352f329Skenny liang * Copyright (c) 2019, MediaTek Inc. All rights reserved. 3*7352f329Skenny liang * 4*7352f329Skenny liang * SPDX-License-Identifier: BSD-3-Clause 5*7352f329Skenny liang */ 6*7352f329Skenny liang 7*7352f329Skenny liang #ifndef MTSPMC_H 8*7352f329Skenny liang #define MTSPMC_H 9*7352f329Skenny liang 10*7352f329Skenny liang /* 11*7352f329Skenny liang * CONFIG_SPMC_MODE: Select CPU power control mode. 12*7352f329Skenny liang * 13*7352f329Skenny liang * 0: Legacy 14*7352f329Skenny liang * Control power flow from SW through SPM register (MP*_PWR_CON). 15*7352f329Skenny liang * 1: HW 16*7352f329Skenny liang * Control power flow from SPMC. Most control flow and timing are handled 17*7352f329Skenny liang * by SPMC. 18*7352f329Skenny liang */ 19*7352f329Skenny liang #define SPMC_MODE 1 20*7352f329Skenny liang 21*7352f329Skenny liang int spmc_init(void); 22*7352f329Skenny liang 23*7352f329Skenny liang void spm_poweron_cpu(int cluster, int cpu); 24*7352f329Skenny liang void spm_poweroff_cpu(int cluster, int cpu); 25*7352f329Skenny liang 26*7352f329Skenny liang void spm_poweroff_cluster(int cluster); 27*7352f329Skenny liang void spm_poweron_cluster(int cluster); 28*7352f329Skenny liang 29*7352f329Skenny liang int spm_get_cpu_powerstate(int cluster, int cpu); 30*7352f329Skenny liang int spm_get_cluster_powerstate(int cluster); 31*7352f329Skenny liang int spm_get_powerstate(uint32_t mask); 32*7352f329Skenny liang 33*7352f329Skenny liang void spm_enable_cpu_auto_off(int cluster, int cpu); 34*7352f329Skenny liang void spm_disable_cpu_auto_off(int cluster, int cpu); 35*7352f329Skenny liang void spm_set_cpu_power_off(int cluster, int cpu); 36*7352f329Skenny liang void spm_enable_cluster_auto_off(int cluster); 37*7352f329Skenny liang 38*7352f329Skenny liang void mcucfg_init_archstate(int cluster, int cpu, int arm64); 39*7352f329Skenny liang void mcucfg_set_bootaddr(int cluster, int cpu, uintptr_t bootaddr); 40*7352f329Skenny liang uintptr_t mcucfg_get_bootaddr(int cluster, int cpu); 41*7352f329Skenny liang 42*7352f329Skenny liang #endif /* MTSPMC_H */ 43