soc/amd/common/psp: add and call PSP SMI SPI RPMC function stubs

In the case where the x86 owns the SPI controller and the RPMC feature
is used, the PSP will send an SMI to the x86 side for it to send the
RPMC increment monotonic counter and RPMC request monotonic counter
commands to the SPI flash and return the result to the PSP. Add stubs
as handlers for those two PSP SMI commands.

Change-Id: If6091d2b0002f817922cac4cba373f0f981b646e
Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/84702
Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Ana Cabral
This commit is contained in:
Felix Held 2024-10-01 12:40:48 +02:00 committed by Martin L Roth
commit d1e8873e08
3 changed files with 24 additions and 0 deletions

View file

@ -14,6 +14,8 @@
#define MBOX_PSP_CMD_SPI_READ 0x84
#define MBOX_PSP_CMD_SPI_WRITE 0x85
#define MBOX_PSP_CMD_SPI_ERASE 0x86
#define MBOX_PSP_CMD_SPI_RPMC_INC_MC 0x88
#define MBOX_PSP_CMD_SPI_RPMC_REQ_MC 0x89
extern struct {
uint8_t buffer[P2C_BUFFER_MAXSIZE];
@ -154,6 +156,12 @@ static void handle_psp_command(void)
case MBOX_PSP_CMD_SPI_ERASE:
status = psp_smi_spi_erase(buffer);
break;
case MBOX_PSP_CMD_SPI_RPMC_INC_MC:
status = psp_smi_spi_rpmc_inc_mc(buffer);
break;
case MBOX_PSP_CMD_SPI_RPMC_REQ_MC:
status = psp_smi_spi_rpmc_req_mc(buffer);
break;
default:
printk(BIOS_ERR, "PSP: Unknown command %d\n", cmd);
status = MBOX_PSP_UNSUPPORTED;

View file

@ -269,3 +269,17 @@ enum mbox_p2c_status psp_smi_spi_erase(struct mbox_default_buffer *buffer)
return MBOX_PSP_SUCCESS;
}
enum mbox_p2c_status psp_smi_spi_rpmc_inc_mc(struct mbox_default_buffer *buffer)
{
printk(BIOS_SPEW, "PSP: SPI RPMC increment monotonic counter request\n");
return MBOX_PSP_UNSUPPORTED;
}
enum mbox_p2c_status psp_smi_spi_rpmc_req_mc(struct mbox_default_buffer *buffer)
{
printk(BIOS_SPEW, "PSP: SPI RPMC request monotonic counter request\n");
return MBOX_PSP_UNSUPPORTED;
}

View file

@ -66,3 +66,5 @@ enum mbox_p2c_status psp_smi_spi_get_info(struct mbox_default_buffer *buffer);
enum mbox_p2c_status psp_smi_spi_read(struct mbox_default_buffer *buffer);
enum mbox_p2c_status psp_smi_spi_write(struct mbox_default_buffer *buffer);
enum mbox_p2c_status psp_smi_spi_erase(struct mbox_default_buffer *buffer);
enum mbox_p2c_status psp_smi_spi_rpmc_inc_mc(struct mbox_default_buffer *buffer);
enum mbox_p2c_status psp_smi_spi_rpmc_req_mc(struct mbox_default_buffer *buffer);