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: Masahiro Yamada <yamada.masahiro@socionext.com>
This commit is contained in:
Masahiro Yamada 2018-02-01 16:46:18 +09:00
parent ba68ef557b
commit 11f001cb7f
4 changed files with 60 additions and 2 deletions

View File

@ -1,5 +1,5 @@
/* /*
* 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)
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)
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)
* 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;

View File

@ -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]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -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

View File

@ -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)
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)
{ {
} }