soc/amd/cezanne: add SMU support

BUG=b:181766974

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I5b9b4c3d57945ea7c3287cf47f3d9704f42ff24b
Reviewed-on: https://review.coreboot.org/c/coreboot/+/51233
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
This commit is contained in:
Felix Held 2021-03-03 18:56:41 +01:00
parent dac1a456f9
commit 7f3f52d7c6
4 changed files with 45 additions and 0 deletions

View file

@ -42,6 +42,7 @@ config SOC_SPECIFIC_OPTIONS
select SOC_AMD_COMMON_BLOCK_SMBUS
select SOC_AMD_COMMON_BLOCK_SMI
select SOC_AMD_COMMON_BLOCK_SMM
select SOC_AMD_COMMON_BLOCK_SMU
select SOC_AMD_COMMON_BLOCK_SPI
select SOC_AMD_COMMON_BLOCK_TSC_FAM17H_19H
select SOC_AMD_COMMON_BLOCK_UART

View file

@ -37,6 +37,7 @@ ramstage-y += root_complex.c
ramstage-y += uart.c
smm-y += smihandler.c
smm-y += smu.c
smm-$(CONFIG_DEBUG_SMI) += uart.c
CPPFLAGS_common += -I$(src)/soc/amd/cezanne/include

View file

@ -0,0 +1,26 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#ifndef AMD_CEZANNE_SMU_H
#define AMD_CEZANNE_SMU_H
/*
* SMU mailbox register offsets in indirect address space accessed by an index/data pair in
* D0F00 config space.
*/
#define REG_ADDR_MESG_ID 0x3b10528
#define REG_ADDR_MESG_RESP 0x3b10564
#define REG_ADDR_MESG_ARGS_BASE 0x3b10998
#define SMU_NUM_ARGS 6
enum smu_message_id {
SMC_MSG_S3ENTRY = 0x0b,
};
/*
* Request the SMU 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);
#endif /* AMD_CEZANNE_SMU_H */

17
src/soc/amd/cezanne/smu.c Normal file
View file

@ -0,0 +1,17 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <console/console.h>
#include <amdblocks/smu.h>
#include <soc/smu.h>
/*
* 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);
}