xref: /rk3399_ARM-atf/plat/mediatek/common/mtk_plat_common.h (revision 5340c5a041052dc3eee8b126a8bfad2d2de4e758)
1cf906b2aSLeon Chen /*
2*394b9208SLeon Chen  * Copyright (c) 2016-2022, ARM Limited and Contributors. All rights reserved.
3cf906b2aSLeon Chen  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
5cf906b2aSLeon Chen  */
6c3cf06f1SAntonio Nino Diaz #ifndef MTK_PLAT_COMMON_H
7c3cf06f1SAntonio Nino Diaz #define MTK_PLAT_COMMON_H
8b8424642SAntonio Nino Diaz 
9cf906b2aSLeon Chen #include <stdint.h>
10b8424642SAntonio Nino Diaz 
1109d40e0eSAntonio Nino Diaz #include <common/bl_common.h>
1209d40e0eSAntonio Nino Diaz #include <common/param_header.h>
1309d40e0eSAntonio Nino Diaz 
14cf906b2aSLeon Chen /*******************************************************************************
15cf906b2aSLeon Chen  * Function and variable prototypes
16cf906b2aSLeon Chen  ******************************************************************************/
17cf906b2aSLeon Chen #define SMC32_PARAM_MASK		(0xFFFFFFFF)
18cf906b2aSLeon Chen 
1974a34600SHsin-Yi Wang #define JEDEC_MTK_BKID U(4)
2074a34600SHsin-Yi Wang #define JEDEC_MTK_MFID U(0x26)
2174a34600SHsin-Yi Wang 
22b8424642SAntonio Nino Diaz struct mtk_bl31_params {
23b8424642SAntonio Nino Diaz        param_header_t h;
24b8424642SAntonio Nino Diaz        image_info_t *bl31_image_info;
25b8424642SAntonio Nino Diaz        entry_point_info_t *bl32_ep_info;
26b8424642SAntonio Nino Diaz        image_info_t *bl32_image_info;
27b8424642SAntonio Nino Diaz        entry_point_info_t *bl33_ep_info;
28b8424642SAntonio Nino Diaz        image_info_t *bl33_image_info;
29b8424642SAntonio Nino Diaz };
30b8424642SAntonio Nino Diaz 
31cf906b2aSLeon Chen /* Declarations for mtk_plat_common.c */
32cf906b2aSLeon Chen uint32_t plat_get_spsr_for_bl32_entry(void);
33cf906b2aSLeon Chen uint32_t plat_get_spsr_for_bl33_entry(void);
3457d1e5faSMasahiro Yamada void clean_top_32b_of_param(uint32_t smc_fid, u_register_t *x1,
3557d1e5faSMasahiro Yamada 				u_register_t *x2,
3657d1e5faSMasahiro Yamada 				u_register_t *x3,
3757d1e5faSMasahiro Yamada 				u_register_t *x4);
38cf906b2aSLeon Chen void bl31_prepare_kernel_entry(uint64_t k32_64);
39cf906b2aSLeon Chen void enable_ns_access_to_cpuectlr(void);
40cf906b2aSLeon Chen void boot_to_kernel(uint64_t x1, uint64_t x2, uint64_t x3, uint64_t x4);
41cf906b2aSLeon Chen uint64_t get_kernel_info_pc(void);
42cf906b2aSLeon Chen uint64_t get_kernel_info_r0(void);
43cf906b2aSLeon Chen uint64_t get_kernel_info_r1(void);
44cf906b2aSLeon Chen uint64_t get_kernel_info_r2(void);
45cf906b2aSLeon Chen 
46cf906b2aSLeon Chen extern struct atf_arg_t gteearg;
47c3cf06f1SAntonio Nino Diaz #endif /* MTK_PLAT_COMMON_H */
48