Commit 11f001cb authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

bl1: add bl1_plat_handle_{pre,post}_image_load()



Just like bl2_, add pre/post image load handlers for BL1.  No argument
is needed since BL2 is the only image loaded by BL1.
Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
parent ba68ef55
/* /*
* Copyright (c) 2013-2017, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2013-2018, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -178,6 +178,12 @@ void bl1_load_bl2(void) ...@@ -178,6 +178,12 @@ void bl1_load_bl2(void)
INFO("BL1: Loading BL2\n"); INFO("BL1: Loading BL2\n");
#if LOAD_IMAGE_V2 #if LOAD_IMAGE_V2
err = bl1_plat_handle_pre_image_load();
if (err) {
ERROR("Failure in pre image load handling of BL2 (%d)\n", err);
plat_error_handler(err);
}
err = load_auth_image(BL2_IMAGE_ID, image_info); err = load_auth_image(BL2_IMAGE_ID, image_info);
#else #else
/* Load the BL2 image */ /* Load the BL2 image */
...@@ -194,6 +200,14 @@ void bl1_load_bl2(void) ...@@ -194,6 +200,14 @@ void bl1_load_bl2(void)
plat_error_handler(err); plat_error_handler(err);
} }
#if LOAD_IMAGE_V2
/* Allow platform to handle image information. */
err = bl1_plat_handle_post_image_load();
if (err) {
ERROR("Failure in post image load handling of BL2 (%d)\n", err);
plat_error_handler(err);
}
/* /*
* Create a new layout of memory for BL2 as seen by BL1 i.e. * Create a new layout of memory for BL2 as seen by BL1 i.e.
* tell it the amount of total and free memory available. * tell it the amount of total and free memory available.
...@@ -201,7 +215,6 @@ void bl1_load_bl2(void) ...@@ -201,7 +215,6 @@ void bl1_load_bl2(void)
* to BL2. BL2 will read the memory layout before using its * to BL2. BL2 will read the memory layout before using its
* memory for other purposes. * memory for other purposes.
*/ */
#if LOAD_IMAGE_V2
bl2_tzram_layout = (meminfo_t *) bl1_tzram_layout->total_base; bl2_tzram_layout = (meminfo_t *) bl1_tzram_layout->total_base;
#else #else
bl2_tzram_layout = (meminfo_t *) bl1_tzram_layout->free_base; bl2_tzram_layout = (meminfo_t *) bl1_tzram_layout->free_base;
......
...@@ -1259,6 +1259,30 @@ standard platforms return an image descriptor corresponding to BL2 or one of ...@@ -1259,6 +1259,30 @@ standard platforms return an image descriptor corresponding to BL2 or one of
the firmware update images defined in the Trusted Board Boot Requirements the firmware update images defined in the Trusted Board Boot Requirements
specification. specification.
Function : bl1\_plat\_handle\_pre\_image\_load() [optional]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
Argument : void
Return : int
This function can be used by the platforms to update/use image information
for BL2. This function is currently invoked in BL1 before loading BL2,
when LOAD\_IMAGE\_V2 is enabled.
Function : bl1\_plat\_handle\_post\_image\_load() [optional]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
::
Argument : void
Return : int
This function can be used by the platforms to update/use image information
for BL2. This function is currently invoked in BL1 after loading BL2,
when LOAD\_IMAGE\_V2 is enabled.
Function : bl1\_plat\_fwu\_done() [optional] Function : bl1\_plat\_fwu\_done() [optional]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
...@@ -155,6 +155,15 @@ struct image_desc *bl1_plat_get_image_desc(unsigned int image_id); ...@@ -155,6 +155,15 @@ struct image_desc *bl1_plat_get_image_desc(unsigned int image_id);
*/ */
__dead2 void bl1_plat_fwu_done(void *client_cookie, void *reserved); __dead2 void bl1_plat_fwu_done(void *client_cookie, void *reserved);
#if LOAD_IMAGE_V2
/*
* This function can be used by the platforms to update/use image
* information for BL2.
*/
int bl1_plat_handle_pre_image_load(void);
int bl1_plat_handle_post_image_load(void);
#endif /* LOAD_IMAGE_V2 */
/******************************************************************************* /*******************************************************************************
* Mandatory BL2 functions * Mandatory BL2 functions
......
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
*/ */
#pragma weak plat_error_handler #pragma weak plat_error_handler
#pragma weak bl1_plat_handle_pre_image_load
#pragma weak bl1_plat_handle_post_image_load
#pragma weak bl2_plat_preload_setup #pragma weak bl2_plat_preload_setup
#pragma weak bl2_plat_handle_pre_image_load #pragma weak bl2_plat_handle_pre_image_load
#pragma weak bl2_plat_handle_post_image_load #pragma weak bl2_plat_handle_post_image_load
...@@ -23,6 +25,16 @@ void __dead2 plat_error_handler(int err) ...@@ -23,6 +25,16 @@ void __dead2 plat_error_handler(int err)
wfi(); wfi();
} }
int bl1_plat_handle_pre_image_load(void)
{
return 0;
}
int bl1_plat_handle_post_image_load(void)
{
return 0;
}
void bl2_plat_preload_setup(void) void bl2_plat_preload_setup(void)
{ {
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment