1*0d82eff6SJames Liao /* 2*0d82eff6SJames Liao * Copyright (c) 2020, MediaTek Inc. All rights reserved. 3*0d82eff6SJames Liao * 4*0d82eff6SJames Liao * SPDX-License-Identifier: BSD-3-Clause 5*0d82eff6SJames Liao */ 6*0d82eff6SJames Liao 7*0d82eff6SJames Liao #ifndef MTSPMC_H 8*0d82eff6SJames Liao #define MTSPMC_H 9*0d82eff6SJames Liao 10*0d82eff6SJames Liao #include <stdint.h> 11*0d82eff6SJames Liao 12*0d82eff6SJames Liao int spmc_init(void); 13*0d82eff6SJames Liao 14*0d82eff6SJames Liao void spm_poweron_cpu(uint32_t cluster, uint32_t cpu); 15*0d82eff6SJames Liao void spm_poweroff_cpu(uint32_t cluster, uint32_t cpu); 16*0d82eff6SJames Liao 17*0d82eff6SJames Liao void spm_poweroff_cluster(uint32_t cluster); 18*0d82eff6SJames Liao void spm_poweron_cluster(uint32_t cluster); 19*0d82eff6SJames Liao 20*0d82eff6SJames Liao bool spm_get_cpu_powerstate(uint32_t cluster, uint32_t cpu); 21*0d82eff6SJames Liao bool spm_get_cluster_powerstate(uint32_t cluster); 22*0d82eff6SJames Liao bool spm_get_powerstate(uint32_t mask); 23*0d82eff6SJames Liao 24*0d82eff6SJames Liao void mcucfg_init_archstate(uint32_t cluster, uint32_t cpu, bool arm64); 25*0d82eff6SJames Liao void mcucfg_set_bootaddr(uint32_t cluster, uint32_t cpu, uintptr_t bootaddr); 26*0d82eff6SJames Liao uintptr_t mcucfg_get_bootaddr(uint32_t cluster, uint32_t cpu); 27*0d82eff6SJames Liao 28*0d82eff6SJames Liao void mcucfg_disable_gic_wakeup(uint32_t cluster, uint32_t cpu); 29*0d82eff6SJames Liao void mcucfg_enable_gic_wakeup(uint32_t cluster, uint32_t cpu); 30*0d82eff6SJames Liao 31*0d82eff6SJames Liao #endif /* MTSPMC_H */ 32