1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2019, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #include <common/desc_image_load.h> 8*91f16700Schasinglulu 9*91f16700Schasinglulu /******************************************************************************* 10*91f16700Schasinglulu * This function flushes the data structures so that they are visible 11*91f16700Schasinglulu * in memory for the next BL image. 12*91f16700Schasinglulu ******************************************************************************/ 13*91f16700Schasinglulu void plat_flush_next_bl_params(void) 14*91f16700Schasinglulu { 15*91f16700Schasinglulu flush_bl_params_desc(); 16*91f16700Schasinglulu } 17*91f16700Schasinglulu 18*91f16700Schasinglulu /******************************************************************************* 19*91f16700Schasinglulu * This function returns the list of loadable images. 20*91f16700Schasinglulu ******************************************************************************/ 21*91f16700Schasinglulu bl_load_info_t *plat_get_bl_image_load_info(void) 22*91f16700Schasinglulu { 23*91f16700Schasinglulu return get_bl_load_info_from_mem_params_desc(); 24*91f16700Schasinglulu } 25*91f16700Schasinglulu 26*91f16700Schasinglulu /******************************************************************************* 27*91f16700Schasinglulu * This function returns the list of executable images. 28*91f16700Schasinglulu ******************************************************************************/ 29*91f16700Schasinglulu bl_params_t *plat_get_next_bl_params(void) 30*91f16700Schasinglulu { 31*91f16700Schasinglulu unsigned int count; 32*91f16700Schasinglulu unsigned int img_id = 0U; 33*91f16700Schasinglulu unsigned int link_index = 0U; 34*91f16700Schasinglulu bl_params_node_t *bl_exec_node = NULL; 35*91f16700Schasinglulu bl_mem_params_node_t *desc_ptr; 36*91f16700Schasinglulu 37*91f16700Schasinglulu /* If there is no image to start with, return NULL */ 38*91f16700Schasinglulu if (bl_mem_params_desc_num == 0U) 39*91f16700Schasinglulu return NULL; 40*91f16700Schasinglulu 41*91f16700Schasinglulu /* Clean next_params_info in BL image node */ 42*91f16700Schasinglulu for (count = 0U; count < bl_mem_params_desc_num; count++) { 43*91f16700Schasinglulu 44*91f16700Schasinglulu desc_ptr = &bl_mem_params_desc_ptr[link_index]; 45*91f16700Schasinglulu bl_exec_node = &desc_ptr->params_node_mem; 46*91f16700Schasinglulu bl_exec_node->next_params_info = NULL; 47*91f16700Schasinglulu 48*91f16700Schasinglulu /* If no next hand-off image then break out */ 49*91f16700Schasinglulu img_id = desc_ptr->next_handoff_image_id; 50*91f16700Schasinglulu if (img_id == INVALID_IMAGE_ID) 51*91f16700Schasinglulu break; 52*91f16700Schasinglulu 53*91f16700Schasinglulu /* Get the index for the next hand-off image */ 54*91f16700Schasinglulu link_index = get_bl_params_node_index(img_id); 55*91f16700Schasinglulu } 56*91f16700Schasinglulu 57*91f16700Schasinglulu return get_next_bl_params_from_mem_params_desc(); 58*91f16700Schasinglulu } 59