Commit 1f37b944 authored by Dan Handley's avatar Dan Handley
Browse files

FWU: Pass client cookie to FWU_SMC_UPDATE_DONE

The current FWU_SMC_UPDATE_DONE implementation incorrectly passes
an unused framework cookie through to the 1st argument in the
platform function `bl1_plat_fwu_done`. The intent is to allow
the SMC caller to pass a cookie through to this function.

This patch fixes FWU_SMC_UPDATE_DONE to pass x1 from the caller
through to `bl1_plat_fwu_done`. The argument names are updated
for clarity.

Upstream platforms currently do not use this argument so no
impact is expected.

Change-Id: I107f4b51eb03e7394f66d9a534ffab1cbc09a9b2
parent 8e4f8291
...@@ -64,7 +64,7 @@ static register_t bl1_fwu_image_resume(unsigned int image_id, ...@@ -64,7 +64,7 @@ static register_t bl1_fwu_image_resume(unsigned int image_id,
unsigned int flags); unsigned int flags);
static int bl1_fwu_sec_image_done(void **handle, static int bl1_fwu_sec_image_done(void **handle,
unsigned int flags); unsigned int flags);
__dead2 static void bl1_fwu_done(void *cookie, void *reserved); __dead2 static void bl1_fwu_done(void *client_cookie, void *reserved);
/* /*
* This keeps track of last executed secure image id. * This keeps track of last executed secure image id.
...@@ -101,7 +101,7 @@ register_t bl1_fwu_smc_handler(unsigned int smc_fid, ...@@ -101,7 +101,7 @@ register_t bl1_fwu_smc_handler(unsigned int smc_fid,
SMC_RET1(handle, bl1_fwu_sec_image_done(&handle, flags)); SMC_RET1(handle, bl1_fwu_sec_image_done(&handle, flags));
case FWU_SMC_UPDATE_DONE: case FWU_SMC_UPDATE_DONE:
bl1_fwu_done(cookie, NULL); bl1_fwu_done((void *)x1, NULL);
/* We should never return from bl1_fwu_done() */ /* We should never return from bl1_fwu_done() */
default: default:
...@@ -492,13 +492,13 @@ static int bl1_fwu_sec_image_done(void **handle, unsigned int flags) ...@@ -492,13 +492,13 @@ static int bl1_fwu_sec_image_done(void **handle, unsigned int flags)
* This function provides the opportunity for users to perform any * This function provides the opportunity for users to perform any
* platform specific handling after the Firmware update is done. * platform specific handling after the Firmware update is done.
******************************************************************************/ ******************************************************************************/
__dead2 static void bl1_fwu_done(void *cookie, void *reserved) __dead2 static void bl1_fwu_done(void *client_cookie, void *reserved)
{ {
NOTICE("BL1-FWU: *******FWU Process Completed*******\n"); NOTICE("BL1-FWU: *******FWU Process Completed*******\n");
/* /*
* Call platform done function. * Call platform done function.
*/ */
bl1_plat_fwu_done(cookie, reserved); bl1_plat_fwu_done(client_cookie, reserved);
assert(0); assert(0);
} }
...@@ -121,7 +121,7 @@ struct image_desc *bl1_plat_get_image_desc(unsigned int image_id); ...@@ -121,7 +121,7 @@ struct image_desc *bl1_plat_get_image_desc(unsigned int image_id);
* The following functions are used by firmware update * The following functions are used by firmware update
* feature and may optionally be overridden. * feature and may optionally be overridden.
*/ */
__dead2 void bl1_plat_fwu_done(void *cookie, void *reserved); __dead2 void bl1_plat_fwu_done(void *client_cookie, void *reserved);
/******************************************************************************* /*******************************************************************************
......
...@@ -72,7 +72,7 @@ void bl1_plat_set_ep_info(unsigned int image_id, ...@@ -72,7 +72,7 @@ void bl1_plat_set_ep_info(unsigned int image_id,
/******************************************************************************* /*******************************************************************************
* On Juno clear SYS_NVFLAGS and wait for watchdog reset. * On Juno clear SYS_NVFLAGS and wait for watchdog reset.
******************************************************************************/ ******************************************************************************/
__dead2 void bl1_plat_fwu_done(void *cookie, void *rsvd_ptr) __dead2 void bl1_plat_fwu_done(void *client_cookie, void *reserved)
{ {
unsigned int *nv_flags_clr = (unsigned int *) unsigned int *nv_flags_clr = (unsigned int *)
(V2M_SYSREGS_BASE + V2M_SYS_NVFLAGSCLR); (V2M_SYSREGS_BASE + V2M_SYS_NVFLAGSCLR);
......
...@@ -69,7 +69,7 @@ image_desc_t *bl1_plat_get_image_desc(unsigned int image_id) ...@@ -69,7 +69,7 @@ image_desc_t *bl1_plat_get_image_desc(unsigned int image_id)
return &bl2_img_desc; return &bl2_img_desc;
} }
__dead2 void bl1_plat_fwu_done(void *cookie, void *rsvd_ptr) __dead2 void bl1_plat_fwu_done(void *client_cookie, void *reserved)
{ {
while (1) while (1)
wfi(); wfi();
......
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