summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelix Held <felix-coreboot@felixheld.de>2024-07-30 14:12:21 +0200
committerFelix Held <felix-coreboot@felixheld.de>2024-07-31 20:07:32 +0000
commit930d0b16cc8754f4a768bf285000a887053fc15a (patch)
tree1ec436af7c4c8a51db343deb7ba3f568aefad6b6 /src
parente6c40f62724c9d0157b5b102c01aade30bc4c47e (diff)
soc/amd/common/psp_smm: introduce and use send_psp_command_smm
When sending mailbox commands to the PSP from SMM, the SMM flag needs to be set right before sending the mailbox command and cleared right after the command is sent. In order to not have this code duplicated, factor it out into a function. Signed-off-by: Felix Held <felix-coreboot@felixheld.de> Change-Id: I3628463dece9d11703d5a068fe7c604108b69c1f Reviewed-on: https://review.coreboot.org/c/coreboot/+/83700 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Matt DeVillier <matt.devillier@amd.corp-partner.google.com>
Diffstat (limited to 'src')
-rw-r--r--src/soc/amd/common/block/psp/psp_smm.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/soc/amd/common/block/psp/psp_smm.c b/src/soc/amd/common/block/psp/psp_smm.c
index eecdf02be7..8fcf80faf9 100644
--- a/src/soc/amd/common/block/psp/psp_smm.c
+++ b/src/soc/amd/common/block/psp/psp_smm.c
@@ -47,6 +47,17 @@ static void clear_smm_flag(void)
smm_flag = 0;
}
+static int send_psp_command_smm(u32 command, void *buffer)
+{
+ int cmd_status;
+
+ set_smm_flag();
+ cmd_status = send_psp_command(command, buffer);
+ clear_smm_flag();
+
+ return cmd_status;
+}
+
/*
* The MBOX_BIOS_CMD_SMM_INFO PSP mailbox command doesn't necessarily need be sent from SMM,
* but doing so allows the linker to sort out the addresses of c2p_buffer, p2c_buffer and
@@ -83,9 +94,7 @@ int psp_notify_smm(void)
printk(BIOS_DEBUG, "PSP: Notify SMM info... ");
- set_smm_flag();
- cmd_status = send_psp_command(MBOX_BIOS_CMD_SMM_INFO, &buffer);
- clear_smm_flag();
+ cmd_status = send_psp_command_smm(MBOX_BIOS_CMD_SMM_INFO, &buffer);
/* buffer's status shouldn't change but report it if it does */
psp_print_cmd_status(cmd_status, &buffer.header);
@@ -113,9 +122,7 @@ void psp_notify_sx_info(u8 sleep_type)
buffer->sleep_type = sleep_type;
- set_smm_flag();
- cmd_status = send_psp_command(MBOX_BIOS_CMD_SX_INFO, buffer);
- clear_smm_flag();
+ cmd_status = send_psp_command_smm(MBOX_BIOS_CMD_SX_INFO, buffer);
/* buffer's status shouldn't change but report it if it does */
psp_print_cmd_status(cmd_status, &buffer->header);