1 /*
2  * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef PLAT_LS_H
8 #define PLAT_LS_H
9 
10 #include <stdint.h>
11 
12 #include <lib/el3_runtime/cpu_data.h>
13 
14 /* BL1 utility functions */
15 void ls_bl1_platform_setup(void);
16 void ls_bl1_early_platform_setup(void);
17 
18 /* BL2 utility functions */
19 void ls_bl2_early_platform_setup(meminfo_t *mem_layout);
20 uint32_t ls_get_spsr_for_bl32_entry(void);
21 uint32_t ls_get_spsr_for_bl33_entry(void);
22 
23 /* BL3 utility functions */
24 void ls_bl31_early_platform_setup(void *from_bl2,
25 				void *plat_params_from_bl2);
26 
27 /* IO storage utility functions */
28 void plat_ls_io_setup(void);
29 
30 
31 void ls_setup_page_tables(uintptr_t total_base,
32 			size_t total_size,
33 			uintptr_t code_start,
34 			uintptr_t code_limit,
35 			uintptr_t rodata_start,
36 			uintptr_t rodata_limit
37 #if USE_COHERENT_MEM
38 			, uintptr_t coh_start,
39 			uintptr_t coh_limit
40 #endif
41 );
42 
43 /* PSCI utility functions */
44 int ls_check_mpidr(u_register_t mpidr);
45 
46 /* Security utility functions */
47 int tzc380_setup(void);
48 
49 /* Timer utility functions */
50 uint64_t ls_get_timer(uint64_t start);
51 void ls_delay_timer_init(void);
52 
53 /* TSP utility functions */
54 void ls_tsp_early_platform_setup(void);
55 
56 /* Helper functions */
57 unsigned int plat_ls_calc_core_pos(u_register_t mpidr);
58 
59 /* others */
60 unsigned int plat_ls_get_cluster_core_count(u_register_t mpidr);
61 
62 #endif /* PLAT_LS_H */
63