xref: /rk3399_ARM-atf/plat/intel/soc/common/bl2_plat_mem_params_desc.c (revision 51ff56e447e05b8f09d88aef3adbabc616ec4b24)
1d8820789SHadi Asyrafi /*
2d8820789SHadi Asyrafi  * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved.
3d8820789SHadi Asyrafi  *
4d8820789SHadi Asyrafi  * SPDX-License-Identifier: BSD-3-Clause
5d8820789SHadi Asyrafi  */
6d8820789SHadi Asyrafi 
7d8820789SHadi Asyrafi #include <common/bl_common.h>
8d8820789SHadi Asyrafi #include <common/desc_image_load.h>
9d8820789SHadi Asyrafi #include <platform_def.h>
10d8820789SHadi Asyrafi #include <plat/common/platform.h>
11d8820789SHadi Asyrafi 
12d8820789SHadi Asyrafi 
13d8820789SHadi Asyrafi /*******************************************************************************
14d8820789SHadi Asyrafi  * Following descriptor provides BL image/ep information that gets used
15d8820789SHadi Asyrafi  * by BL2 to load the images and also subset of this information is
16d8820789SHadi Asyrafi  * passed to next BL image. The image loading sequence is managed by
17d8820789SHadi Asyrafi  * populating the images in required loading order. The image execution
18d8820789SHadi Asyrafi  * sequence is managed by populating the `next_handoff_image_id` with
19d8820789SHadi Asyrafi  * the next executable image id.
20d8820789SHadi Asyrafi  ******************************************************************************/
21d8820789SHadi Asyrafi static bl_mem_params_node_t bl2_mem_params_descs[] = {
22d8820789SHadi Asyrafi #ifdef SCP_BL2_BASE
23d8820789SHadi Asyrafi 	/* Fill SCP_BL2 related information if it exists */
24d8820789SHadi Asyrafi 	{
25d8820789SHadi Asyrafi 		.image_id = SCP_BL2_IMAGE_ID,
26d8820789SHadi Asyrafi 
27d8820789SHadi Asyrafi 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
28d8820789SHadi Asyrafi 			VERSION_2, entry_point_info_t, SECURE | NON_EXECUTABLE),
29d8820789SHadi Asyrafi 
30d8820789SHadi Asyrafi 		SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
31d8820789SHadi Asyrafi 			VERSION_2, image_info_t, 0),
32d8820789SHadi Asyrafi 		.image_info.image_base = SCP_BL2_BASE,
33d8820789SHadi Asyrafi 		.image_info.image_max_size = SCP_BL2_SIZE,
34d8820789SHadi Asyrafi 
35d8820789SHadi Asyrafi 		.next_handoff_image_id = INVALID_IMAGE_ID,
36d8820789SHadi Asyrafi 	},
37d8820789SHadi Asyrafi #endif /* SCP_BL2_BASE */
38d8820789SHadi Asyrafi 
39d8820789SHadi Asyrafi #ifdef EL3_PAYLOAD_BASE
40d8820789SHadi Asyrafi 	/* Fill EL3 payload related information (BL31 is EL3 payload)*/
41d8820789SHadi Asyrafi 	{
42d8820789SHadi Asyrafi 		.image_id = BL31_IMAGE_ID,
43d8820789SHadi Asyrafi 
44d8820789SHadi Asyrafi 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
45d8820789SHadi Asyrafi 			VERSION_2, entry_point_info_t,
46d8820789SHadi Asyrafi 			SECURE | EXECUTABLE | EP_FIRST_EXE),
47d8820789SHadi Asyrafi 		.ep_info.pc = EL3_PAYLOAD_BASE,
48d8820789SHadi Asyrafi 		.ep_info.spsr = SPSR_64(MODE_EL3, MODE_SP_ELX,
49d8820789SHadi Asyrafi 			DISABLE_ALL_EXCEPTIONS),
50d8820789SHadi Asyrafi 
51d8820789SHadi Asyrafi 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
52d8820789SHadi Asyrafi 			VERSION_2, image_info_t,
53d8820789SHadi Asyrafi 			IMAGE_ATTRIB_PLAT_SETUP | IMAGE_ATTRIB_SKIP_LOADING),
54d8820789SHadi Asyrafi 
55d8820789SHadi Asyrafi 		.next_handoff_image_id = INVALID_IMAGE_ID,
56d8820789SHadi Asyrafi 	},
57d8820789SHadi Asyrafi 
58d8820789SHadi Asyrafi #else /* EL3_PAYLOAD_BASE */
59d8820789SHadi Asyrafi 
60d8820789SHadi Asyrafi 	/* Fill BL31 related information */
61d8820789SHadi Asyrafi 	{
62d8820789SHadi Asyrafi 		.image_id = BL31_IMAGE_ID,
63d8820789SHadi Asyrafi 
64d8820789SHadi Asyrafi 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
65d8820789SHadi Asyrafi 			VERSION_2, entry_point_info_t,
66d8820789SHadi Asyrafi 			SECURE | EXECUTABLE | EP_FIRST_EXE),
67d8820789SHadi Asyrafi 		.ep_info.pc = BL31_BASE,
68d8820789SHadi Asyrafi 		.ep_info.spsr = SPSR_64(MODE_EL3, MODE_SP_ELX,
69d8820789SHadi Asyrafi 			DISABLE_ALL_EXCEPTIONS),
70d8820789SHadi Asyrafi 
71d8820789SHadi Asyrafi 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
72d8820789SHadi Asyrafi 			VERSION_2, image_info_t, IMAGE_ATTRIB_PLAT_SETUP),
73d8820789SHadi Asyrafi 		.image_info.image_base = BL31_BASE,
74d8820789SHadi Asyrafi 		.image_info.image_max_size = BL31_LIMIT - BL31_BASE,
75d8820789SHadi Asyrafi 
76d8820789SHadi Asyrafi 		.next_handoff_image_id = BL33_IMAGE_ID,
77d8820789SHadi Asyrafi 	},
78d8820789SHadi Asyrafi #endif /* EL3_PAYLOAD_BASE */
79d8820789SHadi Asyrafi 
80d8820789SHadi Asyrafi 	{
81d8820789SHadi Asyrafi 		.image_id = BL33_IMAGE_ID,
82d8820789SHadi Asyrafi 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
83d8820789SHadi Asyrafi 			VERSION_2, entry_point_info_t, NON_SECURE | EXECUTABLE),
84d8820789SHadi Asyrafi 		.ep_info.pc = PLAT_NS_IMAGE_OFFSET,
85d8820789SHadi Asyrafi 
86d8820789SHadi Asyrafi 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
87d8820789SHadi Asyrafi 			VERSION_2, image_info_t, 0),
88d8820789SHadi Asyrafi 		.image_info.image_base = PLAT_NS_IMAGE_OFFSET,
89d8820789SHadi Asyrafi 		.image_info.image_max_size =
90d8820789SHadi Asyrafi 			0x0 + 0x40000000 - PLAT_NS_IMAGE_OFFSET,
91*32a87d44SJit Loon Lim # if ARM_LINUX_KERNEL_AS_BL33 != 0
92*32a87d44SJit Loon Lim 		.next_handoff_image_id = NT_FW_CONFIG_ID,
93*32a87d44SJit Loon Lim 	},
94*32a87d44SJit Loon Lim 
95*32a87d44SJit Loon Lim 	{
96*32a87d44SJit Loon Lim 		.image_id = NT_FW_CONFIG_ID,
97*32a87d44SJit Loon Lim 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
98*32a87d44SJit Loon Lim 			VERSION_2, entry_point_info_t,
99*32a87d44SJit Loon Lim 			NON_SECURE | NON_EXECUTABLE),
100*32a87d44SJit Loon Lim 		SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
101*32a87d44SJit Loon Lim 			VERSION_2, image_info_t, 0),
102*32a87d44SJit Loon Lim 		.image_info.image_base = ARM_PRELOADED_DTB_BASE,
103*32a87d44SJit Loon Lim 		.image_info.image_max_size =
104*32a87d44SJit Loon Lim 			0x0 + 0x40000000 - ARM_PRELOADED_DTB_BASE,
105d8820789SHadi Asyrafi 
106d8820789SHadi Asyrafi 		.next_handoff_image_id = INVALID_IMAGE_ID,
107d8820789SHadi Asyrafi 	},
108*32a87d44SJit Loon Lim #else
109*32a87d44SJit Loon Lim 	.next_handoff_image_id = INVALID_IMAGE_ID,
110*32a87d44SJit Loon Lim 	},
111*32a87d44SJit Loon Lim # endif
112d8820789SHadi Asyrafi };
113d8820789SHadi Asyrafi 
114d8820789SHadi Asyrafi REGISTER_BL_IMAGE_DESCS(bl2_mem_params_descs)
115