soc/amd/picasso: Print values from PSP transfer buffer

The PSP will now pass us data on the PSP boot mode and the production
silicon level.  Print these values out to save in the log.

These definitions are in a vendorcode include directory that was
previously only included in verstage.  Add the include directory
to all stages.

BUG=b:170237834
TEST=Build & Boot - See values printed.
BRANCH=Zork

Signed-off-by: Martin Roth <martinroth@chromium.org>
Change-Id: Iee87413d1473786cf0e148a8088d27f8d24a47a1
Reviewed-on: https://review.coreboot.org/c/coreboot/+/46113
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
Reviewed-by: Sam McNally <sammc@google.com>
This commit is contained in:
Martin Roth 2020-10-06 18:11:12 -06:00 committed by Edward O'Callaghan
parent 4b34193d59
commit 0f3ef704bb
4 changed files with 25 additions and 0 deletions

View File

@ -100,6 +100,7 @@ CPPFLAGS_common += -I$(src)/soc/amd/picasso
CPPFLAGS_common += -I$(src)/soc/amd/picasso/include CPPFLAGS_common += -I$(src)/soc/amd/picasso/include
CPPFLAGS_common += -I$(src)/soc/amd/picasso/acpi CPPFLAGS_common += -I$(src)/soc/amd/picasso/acpi
CPPFLAGS_common += -I$(src)/vendorcode/amd/fsp/picasso CPPFLAGS_common += -I$(src)/vendorcode/amd/fsp/picasso
CPPFLAGS_common += -I$(src)/vendorcode/amd/fsp/picasso/include
MAINBOARD_BLOBS_DIR:=$(top)/3rdparty/blobs/mainboard/$(MAINBOARDDIR) MAINBOARD_BLOBS_DIR:=$(top)/3rdparty/blobs/mainboard/$(MAINBOARDDIR)

View File

@ -129,6 +129,7 @@ void bootblock_soc_init(void)
if (CONFIG(VBOOT_STARTS_BEFORE_BOOTBLOCK)) { if (CONFIG(VBOOT_STARTS_BEFORE_BOOTBLOCK)) {
verify_psp_transfer_buf(); verify_psp_transfer_buf();
show_psp_transfer_info();
} }
fch_early_init(); fch_early_init();

View File

@ -1,6 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */ /* SPDX-License-Identifier: GPL-2.0-only */
#include <amdblocks/reset.h> #include <amdblocks/reset.h>
#include <bl_uapp/bl_syscall_public.h>
#include <console/console.h> #include <console/console.h>
#include <pc80/mc146818rtc.h> #include <pc80/mc146818rtc.h>
#include <security/vboot/vbnv.h> #include <security/vboot/vbnv.h>
@ -30,3 +31,23 @@ void verify_psp_transfer_buf(void)
cmos_write(CMOS_RECOVERY_MAGIC_VAL, CMOS_RECOVERY_BYTE); cmos_write(CMOS_RECOVERY_MAGIC_VAL, CMOS_RECOVERY_BYTE);
warm_reset(); warm_reset();
} }
void show_psp_transfer_info(void)
{
struct transfer_info_struct *info = (struct transfer_info_struct *)
(void *)(uintptr_t)_transfer_buffer;
if (info->magic_val == TRANSFER_MAGIC_VAL) {
if ((info->psp_info & PSP_INFO_VALID) == 0) {
printk(BIOS_INFO, "No PSP info found in transfer buffer.\n");
return;
}
printk(BIOS_INFO, "PSP boot mode: %s\n",
info->psp_info & PSP_INFO_PRODUCTION_MODE ?
"Production" : "Development");
printk(BIOS_INFO, "Silicon level: %s\n",
info->psp_info & PSP_INFO_PRODUCTION_SILICON ?
"Production" : "Pre-Production");
}
}

View File

@ -44,6 +44,8 @@ _Static_assert(sizeof(struct transfer_info_struct) == TRANSFER_INFO_SIZE, \
/* Make sure the PSP transferred information over to x86 side. */ /* Make sure the PSP transferred information over to x86 side. */
void verify_psp_transfer_buf(void); void verify_psp_transfer_buf(void);
/* Display the transfer block's PSP_info data */
void show_psp_transfer_info(void);
#endif #endif