PSCI: Introduce PSCI Library argument structure
This patch introduces a `psci_lib_args_t` structure which must be
passed into `psci_setup()` which is then used to initialize the PSCI
library. The `psci_lib_args_t` is a versioned structure so as to enable
compatibility checks during library initialization. Both BL31 and SP_MIN
are modified to use the new structure.
SP_MIN is also modified to add version string and build message as part
of its cold boot log just like the other BLs in Trusted Firmware.
NOTE: Please be aware that this patch modifies the prototype of
`psci_setup()`, which breaks compatibility with EL3 Runtime Firmware
(excluding BL31 and SP_MIN) integrated with the PSCI Library.
Change-Id: Ic3761db0b790760a7ad664d8a437c72ea5edbcd6
diff --git a/bl31/bl31_main.c b/bl31/bl31_main.c
index f95ef41..7b0b675 100644
--- a/bl31/bl31_main.c
+++ b/bl31/bl31_main.c
@@ -58,13 +58,16 @@
******************************************************************************/
void bl31_lib_init(void)
{
+ /* Setup the arguments for PSCI Library */
+ DEFINE_STATIC_PSCI_LIB_ARGS_V1(psci_args, bl31_warm_entrypoint);
+
cm_init();
/*
* Initialize the PSCI library here. This also does EL3 architectural
* setup.
*/
- psci_setup((uintptr_t)bl31_warm_entrypoint);
+ psci_setup(&psci_args);
}
/*******************************************************************************