xref: /arm-trusted-firmware/plat/mediatek/common/mtk_plat_common.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2016-2022, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  *
4*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu  */
6*91f16700Schasinglulu #ifndef MTK_PLAT_COMMON_H
7*91f16700Schasinglulu #define MTK_PLAT_COMMON_H
8*91f16700Schasinglulu 
9*91f16700Schasinglulu #include <stdint.h>
10*91f16700Schasinglulu 
11*91f16700Schasinglulu #include <common/bl_common.h>
12*91f16700Schasinglulu #include <common/param_header.h>
13*91f16700Schasinglulu 
14*91f16700Schasinglulu /*******************************************************************************
15*91f16700Schasinglulu  * Function and variable prototypes
16*91f16700Schasinglulu  ******************************************************************************/
17*91f16700Schasinglulu #define SMC32_PARAM_MASK		(0xFFFFFFFF)
18*91f16700Schasinglulu 
19*91f16700Schasinglulu #define JEDEC_MTK_BKID U(4)
20*91f16700Schasinglulu #define JEDEC_MTK_MFID U(0x26)
21*91f16700Schasinglulu 
22*91f16700Schasinglulu struct mtk_bl31_params {
23*91f16700Schasinglulu        param_header_t h;
24*91f16700Schasinglulu        image_info_t *bl31_image_info;
25*91f16700Schasinglulu        entry_point_info_t *bl32_ep_info;
26*91f16700Schasinglulu        image_info_t *bl32_image_info;
27*91f16700Schasinglulu        entry_point_info_t *bl33_ep_info;
28*91f16700Schasinglulu        image_info_t *bl33_image_info;
29*91f16700Schasinglulu };
30*91f16700Schasinglulu 
31*91f16700Schasinglulu /* Declarations for mtk_plat_common.c */
32*91f16700Schasinglulu uint32_t plat_get_spsr_for_bl32_entry(void);
33*91f16700Schasinglulu uint32_t plat_get_spsr_for_bl33_entry(void);
34*91f16700Schasinglulu void clean_top_32b_of_param(uint32_t smc_fid, u_register_t *x1,
35*91f16700Schasinglulu 				u_register_t *x2,
36*91f16700Schasinglulu 				u_register_t *x3,
37*91f16700Schasinglulu 				u_register_t *x4);
38*91f16700Schasinglulu void bl31_prepare_kernel_entry(uint64_t k32_64);
39*91f16700Schasinglulu void enable_ns_access_to_cpuectlr(void);
40*91f16700Schasinglulu void boot_to_kernel(uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4);
41*91f16700Schasinglulu uint64_t get_kernel_info_pc(void);
42*91f16700Schasinglulu uint64_t get_kernel_info_r0(void);
43*91f16700Schasinglulu uint64_t get_kernel_info_r1(void);
44*91f16700Schasinglulu uint64_t get_kernel_info_r2(void);
45*91f16700Schasinglulu 
46*91f16700Schasinglulu extern struct atf_arg_t gteearg;
47*91f16700Schasinglulu #endif /* MTK_PLAT_COMMON_H */
48