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