xref: /rk3399_ARM-atf/plat/xilinx/common/include/plat_startup.h (revision fbf7aef408a9f67fabc712bbfd52438290364879)
1 /*
2  * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved.
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  */
6 
7 #ifndef PLAT_STARTUP_H
8 #define PLAT_STARTUP_H
9 
10 /* For FSBL handover */
11 enum fsbl_handoff {
12 	FSBL_HANDOFF_SUCCESS = 0,
13 	FSBL_HANDOFF_NO_STRUCT,
14 	FSBL_HANDOFF_INVAL_STRUCT,
15 	FSBL_HANDOFF_TOO_MANY_PARTS
16 };
17 
18 #define FSBL_MAX_PARTITIONS		8U
19 
20 /* Structure corresponding to each partition entry */
21 struct xfsbl_partition {
22 	uint64_t entry_point;
23 	uint64_t flags;
24 };
25 
26 /* Structure for handoff parameters to ARM Trusted Firmware (ATF) */
27 struct xfsbl_atf_handoff_params {
28 	uint8_t magic[4];
29 	uint32_t num_entries;
30 	struct xfsbl_partition partition[FSBL_MAX_PARTITIONS];
31 };
32 
33 #define ATF_HANDOFF_PARAMS_MAX_SIZE	sizeof(struct xfsbl_atf_handoff_params)
34 
35 enum fsbl_handoff fsbl_atf_handover(entry_point_info_t *bl32,
36 					entry_point_info_t *bl33,
37 					uint64_t atf_handoff_addr);
38 
39 #endif /* PLAT_STARTUP_H */
40