soc/amd/common/psp_verstage: Write postcodes after ESPI init

On boards where PSP uses ESPI to write postcodes, update the verstage to
do it after ESPI initialization.

BUG=b:224543620
TEST=Build and boot to OS in Nipperkin. Ensure that there are no
attempts to write the post code from PSP verstage before ESPI
initialization.

Change-Id: I1b78931c741c75dc845c9b34e3b2b896221f2364
Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/62880
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Mohan Viswanathan
Reviewed-by: Raul Rangel <rrangel@chromium.org>
This commit is contained in:
Karthikeyan Ramasubramanian 2022-03-16 16:27:49 -06:00 committed by Raul Rangel
parent 2bd4c98c42
commit 1a24d84566
2 changed files with 16 additions and 3 deletions

View File

@ -345,6 +345,14 @@ config PSP_DISABLE_POSTCODES
help help
Disables the output of port80 post codes from PSP. Disables the output of port80 post codes from PSP.
config PSP_POSTCODES_ON_ESPI
bool "Use eSPI bus for PSP post codes"
depends on !PSP_DISABLE_POSTCODES
default y
help
Select to send PSP port80 post codes on eSPI bus.
If not selected, PSP port80 codes will be sent on LPC bus.
config PSP_INIT_ESPI config PSP_INIT_ESPI
bool "Initialize eSPI in PSP Stage 2 Boot Loader" bool "Initialize eSPI in PSP Stage 2 Boot Loader"
help help

View File

@ -206,16 +206,21 @@ void Main(void)
/* /*
* Do not use printk() before console_init() * Do not use printk() before console_init()
* Do not use post_code() before verstage_mainboard_init() * Do not use post_code() before verstage_mainboard_init()
* Do not use svc_write_postcode before verstage_soc_espi_init() if PSP uses ESPI
* to write postcodes.
*/ */
timestamp_init(timestamp_get()); timestamp_init(timestamp_get());
svc_write_postcode(POSTCODE_ENTERED_PSP_VERSTAGE); if (!CONFIG(PSP_POSTCODES_ON_ESPI))
svc_write_postcode(POSTCODE_ENTERED_PSP_VERSTAGE);
svc_debug_print("Entering verstage on PSP\n"); svc_debug_print("Entering verstage on PSP\n");
memset(&_bss_start, '\0', &_bss_end - &_bss_start); memset(&_bss_start, '\0', &_bss_end - &_bss_start);
svc_write_postcode(POSTCODE_CONSOLE_INIT); if (!CONFIG(PSP_POSTCODES_ON_ESPI))
svc_write_postcode(POSTCODE_CONSOLE_INIT);
console_init(); console_init();
svc_write_postcode(POSTCODE_EARLY_INIT); if (!CONFIG(PSP_POSTCODES_ON_ESPI))
svc_write_postcode(POSTCODE_EARLY_INIT);
retval = verstage_soc_early_init(); retval = verstage_soc_early_init();
if (retval) { if (retval) {
/* /*