summaryrefslogtreecommitdiff
path: root/src/soc/intel/xeon_sp/finalize.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/soc/intel/xeon_sp/finalize.c')
-rw-r--r--src/soc/intel/xeon_sp/finalize.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/soc/intel/xeon_sp/finalize.c b/src/soc/intel/xeon_sp/finalize.c
index 044c1cc138..76e3ef1125 100644
--- a/src/soc/intel/xeon_sp/finalize.c
+++ b/src/soc/intel/xeon_sp/finalize.c
@@ -7,6 +7,7 @@
#include <device/pci.h>
#include <intelpch/lockdown.h>
#include <soc/pci_devs.h>
+#include <soc/pm.h>
#include <soc/util.h>
#include "chip.h"
@@ -26,6 +27,19 @@ static void soc_finalize(void *unused)
{
printk(BIOS_DEBUG, "Finalizing chipset.\n");
+ /*
+ * Disable ACPI PM timer based on Kconfig
+ *
+ * Disabling ACPI PM timer is necessary for XTAL OSC shutdown.
+ * Disabling ACPI PM timer also switches off TCO.
+ *
+ * Note: In contrast to other platforms supporting PM timer emulation,
+ * disabling the PM timer must be done *after* FSP has run on Xeon-SP,
+ * because FSP makes use of the PM timer.
+ */
+ if (!CONFIG(USE_PM_ACPI_TIMER))
+ setbits8(pmc_mmio_regs() + PCH_PWRM_ACPI_TMR_CTL, ACPI_TIM_DIS);
+
apm_control(APM_CNT_FINALIZE);
lock_pam0123();