blob: 9ca09307f4d1d84d7302e34c19c166b1ab3a00b7 [file] [log] [blame]
Yann Gautier4b0c72a2018-07-16 10:54:09 +02001/*
Yann Gautiere622a3d2022-06-20 11:43:17 +02002 * Copyright (c) 2016-2022, ARM Limited and Contributors. All rights reserved.
Yann Gautier4b0c72a2018-07-16 10:54:09 +02003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
Antonio Nino Diaze0f90632018-12-14 00:18:21 +00007#include <common/bl_common.h>
8#include <common/desc_image_load.h>
9#include <plat/common/platform.h>
10
Yann Gautier0ed7b2a2021-05-19 18:48:16 +020011#include <platform_def.h>
12
Yann Gautier4b0c72a2018-07-16 10:54:09 +020013/*******************************************************************************
14 * Following descriptor provides BL image/ep information that gets used
15 * by BL2 to load the images and also subset of this information is
16 * passed to next BL image. The image loading sequence is managed by
17 * populating the images in required loading order. The image execution
18 * sequence is managed by populating the `next_handoff_image_id` with
19 * the next executable image id.
20 ******************************************************************************/
21static bl_mem_params_node_t bl2_mem_params_descs[] = {
Yann Gautier658775c2021-07-06 10:00:44 +020022 /* Fill FW_CONFIG related information if it exists */
23 {
24 .image_id = FW_CONFIG_ID,
25 SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
26 VERSION_2, entry_point_info_t,
27 SECURE | NON_EXECUTABLE),
28 SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
29 VERSION_2, image_info_t,
30 IMAGE_ATTRIB_PLAT_SETUP),
31
32 .image_info.image_base = STM32MP_FW_CONFIG_BASE,
33 .image_info.image_max_size = STM32MP_FW_CONFIG_MAX_SIZE,
34
35 .next_handoff_image_id = INVALID_IMAGE_ID,
36 },
37
Yann Gautier4b0c72a2018-07-16 10:54:09 +020038 /* Fill BL32 related information */
39 {
40 .image_id = BL32_IMAGE_ID,
41
42 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
43 VERSION_2, entry_point_info_t,
44 SECURE | EXECUTABLE | EP_FIRST_EXE),
45
Yann Gautier4b0c72a2018-07-16 10:54:09 +020046 .ep_info.spsr = SPSR_MODE32(MODE32_svc, SPSR_T_ARM,
47 SPSR_E_LITTLE,
48 DISABLE_ALL_EXCEPTIONS),
49
50 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
51 VERSION_2, image_info_t,
Yann Gautier658775c2021-07-06 10:00:44 +020052 IMAGE_ATTRIB_SKIP_LOADING),
Yann Gautier90f84d72021-07-13 14:44:09 +020053
Yann Gautier4b0c72a2018-07-16 10:54:09 +020054 .next_handoff_image_id = BL33_IMAGE_ID,
55 },
Yann Gautierb3386f72019-04-19 09:41:01 +020056
Yann Gautierb3386f72019-04-19 09:41:01 +020057 /* Fill BL32 external 1 image related information */
58 {
59 .image_id = BL32_EXTRA1_IMAGE_ID,
60
61 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
62 VERSION_2, entry_point_info_t,
63 SECURE | NON_EXECUTABLE),
64
65 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
66 VERSION_2, image_info_t,
67 IMAGE_ATTRIB_SKIP_LOADING),
68
69 .next_handoff_image_id = INVALID_IMAGE_ID,
70 },
Yann Gautiere622a3d2022-06-20 11:43:17 +020071#if STM32MP15
Yann Gautierb3386f72019-04-19 09:41:01 +020072 /* Fill BL32 external 2 image related information */
73 {
74 .image_id = BL32_EXTRA2_IMAGE_ID,
75
76 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
77 VERSION_2, entry_point_info_t,
78 SECURE | NON_EXECUTABLE),
79
80 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
81 VERSION_2, image_info_t,
82 IMAGE_ATTRIB_SKIP_LOADING),
83
84 .next_handoff_image_id = INVALID_IMAGE_ID,
85 },
Yann Gautiere622a3d2022-06-20 11:43:17 +020086#endif
Yann Gautier658775c2021-07-06 10:00:44 +020087
Yann Gautier0ed7b2a2021-05-19 18:48:16 +020088 /* Fill HW_CONFIG related information if it exists */
89 {
90 .image_id = HW_CONFIG_ID,
91 SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
92 VERSION_2, entry_point_info_t,
93 NON_SECURE | NON_EXECUTABLE),
94 SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
95 VERSION_2, image_info_t,
Yann Gautier658775c2021-07-06 10:00:44 +020096 IMAGE_ATTRIB_SKIP_LOADING),
Yann Gautier0ed7b2a2021-05-19 18:48:16 +020097
98 .next_handoff_image_id = INVALID_IMAGE_ID,
99 },
Yann Gautier658775c2021-07-06 10:00:44 +0200100
101 /* Fill TOS_FW_CONFIG related information if it exists */
Yann Gautier0ed7b2a2021-05-19 18:48:16 +0200102 {
103 .image_id = TOS_FW_CONFIG_ID,
104 SET_STATIC_PARAM_HEAD(ep_info, PARAM_IMAGE_BINARY,
105 VERSION_2, entry_point_info_t,
106 SECURE | NON_EXECUTABLE),
107 SET_STATIC_PARAM_HEAD(image_info, PARAM_IMAGE_BINARY,
108 VERSION_2, image_info_t,
Yann Gautier658775c2021-07-06 10:00:44 +0200109 IMAGE_ATTRIB_SKIP_LOADING),
Yann Gautier0ed7b2a2021-05-19 18:48:16 +0200110
Yann Gautier0ed7b2a2021-05-19 18:48:16 +0200111 .next_handoff_image_id = INVALID_IMAGE_ID,
112 },
Yann Gautier658775c2021-07-06 10:00:44 +0200113
Yann Gautier4b0c72a2018-07-16 10:54:09 +0200114 /* Fill BL33 related information */
115 {
116 .image_id = BL33_IMAGE_ID,
117
118 SET_STATIC_PARAM_HEAD(ep_info, PARAM_EP,
119 VERSION_2, entry_point_info_t,
120 NON_SECURE | EXECUTABLE),
121
Yann Gautier4b0c72a2018-07-16 10:54:09 +0200122 .ep_info.spsr = SPSR_MODE32(MODE32_svc, SPSR_T_ARM,
123 SPSR_E_LITTLE,
124 DISABLE_ALL_EXCEPTIONS),
125
126 SET_STATIC_PARAM_HEAD(image_info, PARAM_EP,
Yann Gautier658775c2021-07-06 10:00:44 +0200127 VERSION_2, image_info_t,
128 IMAGE_ATTRIB_SKIP_LOADING),
Yann Gautier4b0c72a2018-07-16 10:54:09 +0200129
130 .next_handoff_image_id = INVALID_IMAGE_ID,
131 }
132};
133
134REGISTER_BL_IMAGE_DESCS(bl2_mem_params_descs)