xref: /rk3399_ARM-atf/plat/intel/soc/common/socfpga_image_load.c (revision 32cf34acacd29b2abdf04c4913d9e09a1d194fb8)
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/desc_image_load.h>
8d8820789SHadi Asyrafi 
9d8820789SHadi Asyrafi /*******************************************************************************
10d8820789SHadi Asyrafi  * This function flushes the data structures so that they are visible
11d8820789SHadi Asyrafi  * in memory for the next BL image.
12d8820789SHadi Asyrafi  ******************************************************************************/
13d8820789SHadi Asyrafi void plat_flush_next_bl_params(void)
14d8820789SHadi Asyrafi {
15d8820789SHadi Asyrafi 	flush_bl_params_desc();
16d8820789SHadi Asyrafi }
17d8820789SHadi Asyrafi 
18d8820789SHadi Asyrafi /*******************************************************************************
19d8820789SHadi Asyrafi  * This function returns the list of loadable images.
20d8820789SHadi Asyrafi  ******************************************************************************/
21d8820789SHadi Asyrafi bl_load_info_t *plat_get_bl_image_load_info(void)
22d8820789SHadi Asyrafi {
23d8820789SHadi Asyrafi 	return get_bl_load_info_from_mem_params_desc();
24d8820789SHadi Asyrafi }
25d8820789SHadi Asyrafi 
26d8820789SHadi Asyrafi /*******************************************************************************
27d8820789SHadi Asyrafi  * This function returns the list of executable images.
28d8820789SHadi Asyrafi  ******************************************************************************/
29d8820789SHadi Asyrafi bl_params_t *plat_get_next_bl_params(void)
30d8820789SHadi Asyrafi {
31*32cf34acSHadi Asyrafi 	unsigned int count;
32*32cf34acSHadi Asyrafi 	unsigned int img_id = 0U;
33*32cf34acSHadi Asyrafi 	unsigned int link_index = 0U;
34*32cf34acSHadi Asyrafi 	bl_params_node_t *bl_exec_node = NULL;
35*32cf34acSHadi Asyrafi 	bl_mem_params_node_t *desc_ptr;
36*32cf34acSHadi Asyrafi 
37*32cf34acSHadi Asyrafi 	/* If there is no image to start with, return NULL */
38*32cf34acSHadi Asyrafi 	if (bl_mem_params_desc_num == 0U)
39*32cf34acSHadi Asyrafi 		return NULL;
40*32cf34acSHadi Asyrafi 
41*32cf34acSHadi Asyrafi 	/* Clean next_params_info in BL image node */
42*32cf34acSHadi Asyrafi 	for (count = 0U; count < bl_mem_params_desc_num; count++) {
43*32cf34acSHadi Asyrafi 
44*32cf34acSHadi Asyrafi 		desc_ptr = &bl_mem_params_desc_ptr[link_index];
45*32cf34acSHadi Asyrafi 		bl_exec_node = &desc_ptr->params_node_mem;
46*32cf34acSHadi Asyrafi 		bl_exec_node->next_params_info = NULL;
47*32cf34acSHadi Asyrafi 
48*32cf34acSHadi Asyrafi 		/* If no next hand-off image then break out */
49*32cf34acSHadi Asyrafi 		img_id = desc_ptr->next_handoff_image_id;
50*32cf34acSHadi Asyrafi 		if (img_id == INVALID_IMAGE_ID)
51*32cf34acSHadi Asyrafi 			break;
52*32cf34acSHadi Asyrafi 
53*32cf34acSHadi Asyrafi 		/* Get the index for the next hand-off image */
54*32cf34acSHadi Asyrafi 		link_index = get_bl_params_node_index(img_id);
55*32cf34acSHadi Asyrafi 	}
56*32cf34acSHadi Asyrafi 
57d8820789SHadi Asyrafi 	return get_next_bl_params_from_mem_params_desc();
58d8820789SHadi Asyrafi }
59