1 // © 2021 Qualcomm Innovation Center, Inc. All rights reserved.
2 //
3 // SPDX-License-Identifier: BSD-3-Clause
4 
5 // Called by psci_common
6 
7 error_t
8 psci_vcpu_suspend(thread_t *current) REQUIRE_PREEMPT_DISABLED;
9 
10 void
11 psci_vcpu_resume(thread_t *thread) REQUIRE_PREEMPT_DISABLED;
12 
13 void
14 psci_vcpu_clear_vcpu_state(thread_t *thread, cpu_index_t target_cpu)
15 	REQUIRE_PREEMPT_DISABLED REQUIRE_SCHEDULER_LOCK(thread);
16 
17 uint32_t
18 psci_cpu_suspend_features(void);
19 
20 // Implemented by psci_common
21 
22 psci_ret_t
23 psci_suspend(psci_suspend_powerstate_t suspend_state,
24 	     paddr_t entry_point_address, register_t context_id)
25 	EXCLUDE_PREEMPT_DISABLED;
26 
27 bool
28 psci_set_vpm_active_pcpus_bit(cpu_index_t bit);
29 
30 bool
31 psci_clear_vpm_active_pcpus_bit(cpu_index_t bit);
32 
33 void
34 psci_vpm_active_vcpus_get(cpu_index_t cpu, thread_t *vcpu)
35 	REQUIRE_SCHEDULER_LOCK(vcpu);
36 
37 void
38 psci_vpm_active_vcpus_put(cpu_index_t cpu, thread_t *vcpu)
39 	REQUIRE_SCHEDULER_LOCK(vcpu);
40 
41 bool
42 psci_vpm_active_vcpus_is_zero(cpu_index_t cpu);
43 
44 bool
45 vcpus_state_is_any_awake(vpm_group_suspend_state_t vm_state, uint32_t level,
46 			 cpu_index_t cpu);
47 
48 void
49 vcpus_state_set(vpm_group_suspend_state_t *vm_state, cpu_index_t cpu,
50 		psci_cpu_state_t cpu_state);
51 
52 void
53 vcpus_state_clear(vpm_group_suspend_state_t *vm_state, cpu_index_t cpu);
54