xref: /rk3399_ARM-atf/plat/mediatek/mt8195/drivers/spmc/mtspmc.h (revision 0d82eff6fbf401a6d268a9efdb69d6e146ec510f)
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