summaryrefslogtreecommitdiff
path: root/src/southbridge/intel
diff options
context:
space:
mode:
authorTristan Corrick <tristan@corrick.kiwi>2018-11-30 22:53:27 +1300
committerPatrick Georgi <pgeorgi@google.com>2018-12-03 13:13:17 +0000
commit32ceed8f269e48d9d500ee2ec9ba5b3f4435285e (patch)
tree08a34222c10d80ff373da0b2343764b561ff0b29 /src/southbridge/intel
parent09fc6342d27bef78aa10e03a5e27bb6322732c66 (diff)
downloadcoreboot-32ceed8f269e48d9d500ee2ec9ba5b3f4435285e.tar.xz
sb/intel/lynxpoint: Ensure the finalise handler is called
The finalise handler is not called during S3 resume when using the `BS_PAYLOAD_BOOT` approach. So, adopt the `lpc_final` approach used by bd82x6x and others. Tested on an ASRock H81M-HDS. The finalise handler is now called on the normal boot path, and during S3 resume. Change-Id: I9766a8dcbcb38420e937c810d252fef071851e92 Signed-off-by: Tristan Corrick <tristan@corrick.kiwi> Reviewed-on: https://review.coreboot.org/c/29976 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'src/southbridge/intel')
-rw-r--r--src/southbridge/intel/lynxpoint/lpc.c6
-rw-r--r--src/southbridge/intel/lynxpoint/smi.c14
2 files changed, 6 insertions, 14 deletions
diff --git a/src/southbridge/intel/lynxpoint/lpc.c b/src/southbridge/intel/lynxpoint/lpc.c
index ca850c0ae6..437db812af 100644
--- a/src/southbridge/intel/lynxpoint/lpc.c
+++ b/src/southbridge/intel/lynxpoint/lpc.c
@@ -967,6 +967,11 @@ static unsigned long southbridge_write_acpi_tables(struct device *device,
return current;
}
+static void lpc_final(struct device *dev)
+{
+ if (acpi_is_wakeup_s3() || IS_ENABLED(CONFIG_INTEL_CHIPSET_LOCKDOWN))
+ outb(APM_CNT_FINALIZE, APM_CNT);
+}
static struct pci_operations pci_ops = {
.set_subsystem = set_subsystem,
@@ -981,6 +986,7 @@ static struct device_operations device_ops = {
.acpi_name = lpc_acpi_name,
.write_acpi_tables = southbridge_write_acpi_tables,
.init = lpc_init,
+ .final = lpc_final,
.enable = pch_lpc_enable,
.scan_bus = scan_lpc_bus,
.ops_pci = &pci_ops,
diff --git a/src/southbridge/intel/lynxpoint/smi.c b/src/southbridge/intel/lynxpoint/smi.c
index 5dab05c5cf..cf70d21ad9 100644
--- a/src/southbridge/intel/lynxpoint/smi.c
+++ b/src/southbridge/intel/lynxpoint/smi.c
@@ -118,17 +118,3 @@ void smm_setup_structures(void *gnvs, void *tcg, void *smi1)
"d" (APM_CNT)
);
}
-
-/*
- * Finalize system before payload boot if INTEL_CHIPSET_LOCKDOWN=y
- */
-#if IS_ENABLED(CONFIG_INTEL_CHIPSET_LOCKDOWN)
-
-static void finalize_boot(void *unused)
-{
- outb(APM_CNT_FINALIZE, APM_CNT);
-}
-
-BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY, finalize_boot, NULL);
-
-#endif