xref: /rk3399_ARM-atf/plat/st/stm32mp2/plat_bl2_mem_params_desc.c (revision 34088d7d80e5d556d7238ef33a4acf17cac244e8)
135527fb4SYann Gautier /*
2a846a235SYann Gautier  * Copyright (c) 2023-2024, STMicroelectronics - All Rights Reserved
335527fb4SYann Gautier  *
435527fb4SYann Gautier  * SPDX-License-Identifier: BSD-3-Clause
535527fb4SYann Gautier  */
635527fb4SYann Gautier 
7a846a235SYann Gautier #include <common/bl_common.h>
835527fb4SYann Gautier #include <common/desc_image_load.h>
9a846a235SYann Gautier #include <plat/common/platform.h>
10a846a235SYann Gautier 
11a846a235SYann Gautier #include <platform_def.h>
1235527fb4SYann Gautier 
13*c900760dSYann Gautier #if STM32MP_BL33_EL1
14*c900760dSYann Gautier #define BL33_MODE MODE_EL1
15*c900760dSYann Gautier #else
16*c900760dSYann Gautier #define BL33_MODE MODE_EL2
17*c900760dSYann Gautier #endif
18*c900760dSYann Gautier 
1935527fb4SYann Gautier /*******************************************************************************
2035527fb4SYann Gautier  * Following descriptor provides BL image/ep information that gets used
2135527fb4SYann Gautier  * by BL2 to load the images and also subset of this information is
2235527fb4SYann Gautier  * passed to next BL image. The image loading sequence is managed by
2335527fb4SYann Gautier  * populating the images in required loading order. The image execution
2435527fb4SYann Gautier  * sequence is managed by populating the `next_handoff_image_id` with
2535527fb4SYann Gautier  * the next executable image id.
2635527fb4SYann Gautier  ******************************************************************************/
2735527fb4SYann Gautier static bl_mem_params_node_t bl2_mem_params_descs[] = {
28ae84525fSMaxime Méré #if STM32MP_DDR_FIP_IO_STORAGE
29ae84525fSMaxime Méré 	/* Fill FW_DDR related information if it exists */
30ae84525fSMaxime Méré 	{
31ae84525fSMaxime Méré 		.image_id = DDR_FW_ID,
32ae84525fSMaxime Méré 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
33ae84525fSMaxime Méré 				      VERSION_2, entry_point_info_t,
34ae84525fSMaxime Méré 				      SECURE | NON_EXECUTABLE),
35ae84525fSMaxime Méré 		SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
36ae84525fSMaxime Méré 				      VERSION_2, image_info_t,
37ae84525fSMaxime Méré 				      0),
38ae84525fSMaxime Méré 
39ae84525fSMaxime Méré 		.image_info.image_base = STM32MP_DDR_FW_BASE,
40ae84525fSMaxime Méré 		.image_info.image_max_size = STM32MP_DDR_FW_MAX_SIZE,
41ae84525fSMaxime Méré 
42ae84525fSMaxime Méré 		.next_handoff_image_id = INVALID_IMAGE_ID,
43ae84525fSMaxime Méré 	},
44ae84525fSMaxime Méré #endif
45ae84525fSMaxime Méré 
46a846a235SYann Gautier 	/* Fill FW_CONFIG related information if it exists */
47a846a235SYann Gautier 	{
48a846a235SYann Gautier 		.image_id = FW_CONFIG_ID,
49a846a235SYann Gautier 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
50a846a235SYann Gautier 				      VERSION_2, entry_point_info_t,
51a846a235SYann Gautier 				      SECURE | NON_EXECUTABLE),
52a846a235SYann Gautier 		SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
53a846a235SYann Gautier 				      VERSION_2, image_info_t,
54a846a235SYann Gautier 				      IMAGE_ATTRIB_PLAT_SETUP),
55a846a235SYann Gautier 
56a846a235SYann Gautier 		.image_info.image_base = STM32MP_FW_CONFIG_BASE,
57a846a235SYann Gautier 		.image_info.image_max_size = STM32MP_FW_CONFIG_MAX_SIZE,
58a846a235SYann Gautier 
59a846a235SYann Gautier 		.next_handoff_image_id = INVALID_IMAGE_ID,
60a846a235SYann Gautier 	},
6103020b66SYann Gautier 
6203020b66SYann Gautier 	/* Fill BL31 related information */
6303020b66SYann Gautier 	{
6403020b66SYann Gautier 		.image_id = BL31_IMAGE_ID,
6503020b66SYann Gautier 
6603020b66SYann Gautier 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
6703020b66SYann Gautier 				      VERSION_2, entry_point_info_t,
6803020b66SYann Gautier 				      SECURE | EXECUTABLE | EP_FIRST_EXE),
6903020b66SYann Gautier 
7003020b66SYann Gautier 		.ep_info.spsr = SPSR_64(MODE_EL3, MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS),
7103020b66SYann Gautier 
7203020b66SYann Gautier 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
7303020b66SYann Gautier 				      VERSION_2, image_info_t,
7403020b66SYann Gautier 				      IMAGE_ATTRIB_SKIP_LOADING),
7503020b66SYann Gautier 
769a0cad39SYann Gautier 		.next_handoff_image_id = BL32_IMAGE_ID,
779a0cad39SYann Gautier 	},
789a0cad39SYann Gautier 
7927dd11dbSMaxime Méré 	/* Fill SoC FW config related information */
8027dd11dbSMaxime Méré 	{
8127dd11dbSMaxime Méré 		.image_id = SOC_FW_CONFIG_ID,
8227dd11dbSMaxime Méré 
8327dd11dbSMaxime Méré 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
8427dd11dbSMaxime Méré 				      VERSION_2, entry_point_info_t,
8527dd11dbSMaxime Méré 				      SECURE | NON_EXECUTABLE),
8627dd11dbSMaxime Méré 
8727dd11dbSMaxime Méré 		SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
8827dd11dbSMaxime Méré 				      VERSION_2, image_info_t,
8927dd11dbSMaxime Méré 				      IMAGE_ATTRIB_SKIP_LOADING),
9027dd11dbSMaxime Méré 
9127dd11dbSMaxime Méré 		.next_handoff_image_id = INVALID_IMAGE_ID,
9227dd11dbSMaxime Méré 	},
9327dd11dbSMaxime Méré 
949a0cad39SYann Gautier 	/* Fill BL32 related information */
959a0cad39SYann Gautier 	{
969a0cad39SYann Gautier 		.image_id = BL32_IMAGE_ID,
979a0cad39SYann Gautier 
989a0cad39SYann Gautier 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
999a0cad39SYann Gautier 				      VERSION_2, entry_point_info_t,
1009a0cad39SYann Gautier 				      SECURE | EXECUTABLE),
1019a0cad39SYann Gautier 
1029a0cad39SYann Gautier 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
1039a0cad39SYann Gautier 				      VERSION_2, image_info_t,
1049a0cad39SYann Gautier 				      IMAGE_ATTRIB_SKIP_LOADING),
1059a0cad39SYann Gautier 
1069a0cad39SYann Gautier 		.next_handoff_image_id = BL33_IMAGE_ID,
1079a0cad39SYann Gautier 	},
1089a0cad39SYann Gautier 
1099a0cad39SYann Gautier 	/* Fill BL32 external 1 image related information */
1109a0cad39SYann Gautier 	{
1119a0cad39SYann Gautier 		.image_id = BL32_EXTRA1_IMAGE_ID,
1129a0cad39SYann Gautier 
1139a0cad39SYann Gautier 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
1149a0cad39SYann Gautier 				      VERSION_2, entry_point_info_t,
1159a0cad39SYann Gautier 				      SECURE | NON_EXECUTABLE),
1169a0cad39SYann Gautier 
1179a0cad39SYann Gautier 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
1189a0cad39SYann Gautier 				      VERSION_2, image_info_t,
1199a0cad39SYann Gautier 				      IMAGE_ATTRIB_SKIP_LOADING),
1209a0cad39SYann Gautier 
12103020b66SYann Gautier 		.next_handoff_image_id = INVALID_IMAGE_ID,
12203020b66SYann Gautier 	},
1239a0cad39SYann Gautier 
1249a0cad39SYann Gautier 	/* Fill HW_CONFIG related information if it exists */
1259a0cad39SYann Gautier 	{
1269a0cad39SYann Gautier 		.image_id = HW_CONFIG_ID,
1279a0cad39SYann Gautier 
1289a0cad39SYann Gautier 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
1299a0cad39SYann Gautier 				      VERSION_2, entry_point_info_t,
1309a0cad39SYann Gautier 				      NON_SECURE | NON_EXECUTABLE),
1319a0cad39SYann Gautier 
1329a0cad39SYann Gautier 		SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
1339a0cad39SYann Gautier 				      VERSION_2, image_info_t,
1349a0cad39SYann Gautier 				      IMAGE_ATTRIB_SKIP_LOADING),
1359a0cad39SYann Gautier 
1369a0cad39SYann Gautier 		.next_handoff_image_id = INVALID_IMAGE_ID,
1379a0cad39SYann Gautier 	},
1389a0cad39SYann Gautier 
1399a0cad39SYann Gautier 	/* Fill BL33 related information */
1409a0cad39SYann Gautier 	{
1419a0cad39SYann Gautier 		.image_id = BL33_IMAGE_ID,
1429a0cad39SYann Gautier 
1439a0cad39SYann Gautier 		SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
1449a0cad39SYann Gautier 				      VERSION_2, entry_point_info_t,
1459a0cad39SYann Gautier 				      NON_SECURE | EXECUTABLE),
1469a0cad39SYann Gautier 
147*c900760dSYann Gautier 		.ep_info.spsr = SPSR_64(BL33_MODE, MODE_SP_ELX, DISABLE_ALL_EXCEPTIONS),
1489a0cad39SYann Gautier 
1499a0cad39SYann Gautier 		SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
1509a0cad39SYann Gautier 				      VERSION_2, image_info_t,
1519a0cad39SYann Gautier 				      IMAGE_ATTRIB_SKIP_LOADING),
1529a0cad39SYann Gautier 
1539a0cad39SYann Gautier 		.next_handoff_image_id = INVALID_IMAGE_ID,
1549a0cad39SYann Gautier 	}
15535527fb4SYann Gautier };
15635527fb4SYann Gautier 
15735527fb4SYann Gautier REGISTER_BL_IMAGE_DESCS(bl2_mem_params_descs)
158