x86: Notify the FSP of the 'end firmware' event

Send this notification when U-Boot is about to boot into Linux, as
requested by the FSP.

Currently this causes a crash with the APL FSP, so leave it disabled for
now.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass 2020-09-22 12:45:28 -06:00 committed by Bin Meng
parent f31b02c84e
commit 7c73cea442
2 changed files with 31 additions and 0 deletions

View File

@ -189,6 +189,14 @@ __weak void board_final_init(void)
{
}
/*
* Implement a weak default function for boards that need to do some final
* processing before booting the OS.
*/
__weak void board_final_cleanup(void)
{
}
int last_stage_init(void)
{
struct acpi_fadt __maybe_unused *fadt;
@ -218,6 +226,13 @@ int last_stage_init(void)
}
}
/*
* TODO(sjg@chromium.org): Move this to bootm_announce_and_cleanup()
* once APL FSP-S at 0x200000 does not overlap with the bzimage at
* 0x100000.
*/
board_final_cleanup();
return 0;
}
#endif

View File

@ -60,6 +60,22 @@ void board_final_init(void)
debug("OK\n");
}
void board_final_cleanup(void)
{
u32 status;
/* TODO(sjg@chromium.org): This causes Linux to crash */
return;
/* call into FspNotify */
debug("Calling into FSP (notify phase INIT_PHASE_END_FIRMWARE): ");
status = fsp_notify(NULL, INIT_PHASE_END_FIRMWARE);
if (status)
debug("fail, error code %x\n", status);
else
debug("OK\n");
}
int fsp_save_s3_stack(void)
{
struct udevice *dev;