spl: Add an arch-specific hook for writing to SPL handoff

At present there is an arch-specific area in the SPL handoff area intended
for use by arch-specific code, but there is no explicit call to fill in
this data. Add a hook for this.

Also use the hook to remove the sandbox-specific test code from
write_spl_handoff().

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Simon Glass 2019-09-25 08:11:18 -06:00 committed by Bin Meng
parent a7da3d984d
commit 366291afe6
3 changed files with 29 additions and 3 deletions

View File

@ -78,3 +78,10 @@ void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
}
hang();
}
int handoff_arch_save(struct spl_handoff *ho)
{
ho->arch.magic = TEST_HANDOFF_MAGIC;
return 0;
}

View File

@ -356,17 +356,23 @@ static int setup_spl_handoff(void)
return 0;
}
__weak int handoff_arch_save(struct spl_handoff *ho)
{
return 0;
}
static int write_spl_handoff(void)
{
struct spl_handoff *ho;
int ret;
ho = bloblist_find(BLOBLISTT_SPL_HANDOFF, sizeof(struct spl_handoff));
if (!ho)
return -ENOENT;
handoff_save_dram(ho);
#ifdef CONFIG_SANDBOX
ho->arch.magic = TEST_HANDOFF_MAGIC;
#endif
ret = handoff_arch_save(ho);
if (ret)
return ret;
debug(SPL_TPL_PROMPT "Wrote SPL handoff\n");
return 0;

View File

@ -31,6 +31,19 @@ struct spl_handoff {
void handoff_save_dram(struct spl_handoff *ho);
void handoff_load_dram_size(struct spl_handoff *ho);
void handoff_load_dram_banks(struct spl_handoff *ho);
/**
* handoff_arch_save() - Save arch-specific info into the handoff area
*
* This is defined to an empty function by default, but arch-specific code can
* define it to write to spi_handoff->arch. It is called from
* write_spl_handoff().
*
* @ho: Handoff area to fill in
* @return 0 if OK, -ve on error
*/
int handoff_arch_save(struct spl_handoff *ho);
#endif
#endif