soc/amd/stoneyridge/romstage: pass C state control IO base address

Instead of hoping that the default the C state control IO address in
binaryPI won't interfere with any other IO space usage in coreboot,
assign the ACPI_CSTATE_CONTROL value to the CStateIoBaseAddress platform
config structure element to make sure that binaryPI will use a known
address for the IO port based C state control. binaryPI will write this
address to the MSR_CSTATE_ADDRESS and will then also use these IO ports
in the _CST packages in the PSTATE SSDT, so changing this won't cause
a mismatch between those two.

The default CStateIoBaseAddress in the FT4 Stoneyridge binaryPI used on
Careena is 0x1770, so this didn't collide with any other IO space
registers, but it's still much better to tell binaryPI which exact IO
addresses to use.

TEST=On Careena MSR_CSTATE_ADDRESS now contains the ACPI_CSTATE_CONTROL
IO base address 0x420 and the PSTATE SSDT has the IO address 0x421 in
the _CST package entry for the second C state which are both the
expected values.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I207202802427d4bf00f283bcbd83a174ab0a2846
Reviewed-on: https://review.coreboot.org/c/coreboot/+/73497
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com>
This commit is contained in:
Felix Held 2023-03-03 16:08:57 +01:00
parent 84fb9eac96
commit 4892d737e3
2 changed files with 6 additions and 0 deletions

View File

@ -30,6 +30,7 @@
#define ACPI_GPE0_STS (ACPI_GPE0_BLK + 0x00) /* 4 bytes */ #define ACPI_GPE0_STS (ACPI_GPE0_BLK + 0x00) /* 4 bytes */
#define ACPI_GPE0_EN (ACPI_GPE0_BLK + 0x04) /* 4 bytes */ #define ACPI_GPE0_EN (ACPI_GPE0_BLK + 0x04) /* 4 bytes */
#define ACPI_PM_TMR_BLK (ACPI_IO_BASE + 0x18) /* 4 bytes */ #define ACPI_PM_TMR_BLK (ACPI_IO_BASE + 0x18) /* 4 bytes */
#define ACPI_CSTATE_CONTROL (ACPI_IO_BASE + 0x20) /* 8 bytes */
#define SMB_BASE_ADDR 0xb00 #define SMB_BASE_ADDR 0xb00
#define PM2_INDEX 0xcd0 #define PM2_INDEX 0xcd0
#define PM2_DATA 0xcd1 #define PM2_DATA 0xcd1

View File

@ -22,6 +22,7 @@
#include <program_loading.h> #include <program_loading.h>
#include <romstage_common.h> #include <romstage_common.h>
#include <romstage_handoff.h> #include <romstage_handoff.h>
#include <soc/iomap.h>
#include <soc/northbridge.h> #include <soc/northbridge.h>
#include <soc/pci_devs.h> #include <soc/pci_devs.h>
#include <soc/southbridge.h> #include <soc/southbridge.h>
@ -190,6 +191,10 @@ void soc_customize_init_early(AMD_EARLY_PARAMS *InitEarly)
platform->PkgPwrLimitAC = cfg->stapm_power_mw; platform->PkgPwrLimitAC = cfg->stapm_power_mw;
platform->PlatStapmConfig.CfgStapmBoost = StapmBoostEnabled; platform->PlatStapmConfig.CfgStapmBoost = StapmBoostEnabled;
} }
/* Make binaryPi use ACPI_CSTATE_CONTROL as C state control IO range. It gets written
into MSR_CSTATE_ADDRESS and used in the _CST packages in the PSTATE SSDT. */
platform->CStateIoBaseAddress = ACPI_CSTATE_CONTROL;
} }
static void migrate_power_state(int is_recovery) static void migrate_power_state(int is_recovery)