soc/intel: transition full control over PM Timer from FSP to coreboot
Set `EnableTcoTimer=1` in order to keep FSP from
1) enabling ACPI Timer emulation in uCode.
2) disabling the PM ACPI Timer.
Both actions are now done in coreboot.
`EnableTcoTimer=1` makes FSP skip these steps in any possible case
including `SkipMpInit=0`, `SkipMpInit=1`, use of the MP PPI or FSP
Multiphase Init. This way full control is left to coreboot.
Change-Id: I8005daed732c031980ccc379375ff5b09df8dac1
Signed-off-by: Michael Niewöhner <foss@mniewoehner.de>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/57933
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Reviewed-by: Lance Zhao
diff --git a/src/soc/intel/alderlake/fsp_params.c b/src/soc/intel/alderlake/fsp_params.c
index f9569f9..6e90cf1 100644
--- a/src/soc/intel/alderlake/fsp_params.c
+++ b/src/soc/intel/alderlake/fsp_params.c
@@ -574,6 +574,19 @@
s_cfg->Enable8254ClockGatingOnS3 = !use_8254;
}
+static void fill_fsps_pm_timer_params(FSP_S_CONFIG *s_cfg,
+ const struct soc_intel_alderlake_config *config)
+{
+ /*
+ * Legacy PM ACPI Timer (and TCO Timer)
+ * This *must* be 1 in any case to keep FSP from
+ * 1) enabling PM ACPI Timer emulation in uCode.
+ * 2) disabling the PM ACPI Timer.
+ * We handle both by ourself!
+ */
+ s_cfg->EnableTcoTimer = 1;
+}
+
static void fill_fsps_storage_params(FSP_S_CONFIG *s_cfg,
const struct soc_intel_alderlake_config *config)
{
@@ -742,6 +755,7 @@
fill_fsps_thc_params,
fill_fsps_tbt_params,
fill_fsps_8254_params,
+ fill_fsps_pm_timer_params,
fill_fsps_storage_params,
fill_fsps_pcie_params,
fill_fsps_misc_power_params,