1 /* 2 * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <bl_common.h> 8 #include <debug.h> 9 #include <plat_arm.h> 10 #include "../drivers/scp/css_scp.h" 11 12 /* Weak definition may be overridden in specific CSS based platform */ 13 #pragma weak bl2u_plat_handle_scp_bl2u 14 15 /* Data structure which holds the SCP_BL2U image info for BL2U */ 16 static image_info_t scp_bl2u_image_info; 17 18 /******************************************************************************* 19 * BL1 can pass platform dependent information to BL2U in x1. 20 * In case of ARM CSS platforms x1 contains SCP_BL2U image info. 21 * In case of ARM FVP platforms x1 is not used. 22 * In both cases, x0 contains the extents of the memory available to BL2U 23 ******************************************************************************/ bl2u_early_platform_setup(meminfo_t * mem_layout,void * plat_info)24void bl2u_early_platform_setup(meminfo_t *mem_layout, void *plat_info) 25 { 26 if (!plat_info) 27 panic(); 28 29 arm_bl2u_early_platform_setup(mem_layout, plat_info); 30 31 scp_bl2u_image_info = *(image_info_t *)plat_info; 32 } 33 34 /******************************************************************************* 35 * Transfer SCP_BL2U from Trusted RAM using the SCP Download protocol. 36 ******************************************************************************/ bl2u_plat_handle_scp_bl2u(void)37int bl2u_plat_handle_scp_bl2u(void) 38 { 39 int ret; 40 41 INFO("BL2U: Initiating SCP_BL2U transfer to SCP\n"); 42 43 ret = css_scp_boot_image_xfer((void *)scp_bl2u_image_info.image_base, 44 scp_bl2u_image_info.image_size); 45 46 if (ret == 0) 47 ret = css_scp_boot_ready(); 48 49 if (ret == 0) 50 INFO("BL2U: SCP_BL2U transferred to SCP\n"); 51 else 52 ERROR("BL2U: SCP_BL2U transfer failure\n"); 53 54 return ret; 55 } 56