diff --git a/src/soc/amd/common/block/smu/Kconfig b/src/soc/amd/common/block/smu/Kconfig index 40195c9db3..4a76edb6f8 100644 --- a/src/soc/amd/common/block/smu/Kconfig +++ b/src/soc/amd/common/block/smu/Kconfig @@ -3,3 +3,10 @@ config SOC_AMD_COMMON_BLOCK_SMU select SOC_AMD_COMMON_BLOCK_SMN help Select this option to add functions to communicate with the SMU to the build. + +config SOC_AMD_COMMON_BLOCK_SMU_SX_ENTRY + bool + depends on SOC_AMD_COMMON_BLOCK_SMU + help + Select this option to add the function to send the S3/4/5 entry + message to the SMU. diff --git a/src/soc/amd/common/block/smu/Makefile.inc b/src/soc/amd/common/block/smu/Makefile.inc index 65ad6a7bcc..42bdf7006a 100644 --- a/src/soc/amd/common/block/smu/Makefile.inc +++ b/src/soc/amd/common/block/smu/Makefile.inc @@ -3,3 +3,5 @@ smm-$(CONFIG_SOC_AMD_COMMON_BLOCK_SMU) += smu.c bootblock-$(CONFIG_SOC_AMD_COMMON_BLOCK_SMU) += smu.c romstage-$(CONFIG_SOC_AMD_COMMON_BLOCK_SMU) += smu.c ramstage-$(CONFIG_SOC_AMD_COMMON_BLOCK_SMU) += smu.c + +smm-$(CONFIG_SOC_AMD_COMMON_BLOCK_SMU_SX_ENTRY) += smu_sx_entry.c diff --git a/src/soc/amd/common/block/smu/smu_sx_entry.c b/src/soc/amd/common/block/smu/smu_sx_entry.c new file mode 100644 index 0000000000..1496957117 --- /dev/null +++ b/src/soc/amd/common/block/smu/smu_sx_entry.c @@ -0,0 +1,17 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include +#include +#include + +/* + * Request the SMU to put system into S3, S4, or S5. On entry, SlpTyp determines S-State and + * SlpTypeEn gets set by the SMU. Function does not return if successful. + */ +void smu_sx_entry(void) +{ + struct smu_payload msg = { 0 }; /* Unused for SMC_MSG_S3ENTRY */ + + printk(BIOS_DEBUG, "SMU: Put system into S3/S4/S5\n"); + send_smu_message(SMC_MSG_S3ENTRY, &msg); +}