Add support for mainboard specific suspend/resume handler
[coreboot.git] / src / arch / x86 / boot / acpi.c
index 33d730bc8c2f0eb90d5ade3c9781f9993b29a287..f17e73e3f677f2e0cfa1726310ae9b5a349cfcce 100644 (file)
@@ -32,8 +32,8 @@
 #include <device/pci.h>
 #include <cbmem.h>
 #include <cpu/x86/lapic_def.h>
-#if CONFIG_CHROMEOS
-#include <vendorcode/google/chromeos/chromeos.h>
+#if CONFIG_COLLECT_TIMESTAMPS
+#include <timestamp.h>
 #endif
 
 u8 acpi_checksum(u8 *table, u32 length)
@@ -474,8 +474,12 @@ void suspend_resume(void)
 
        /* If we happen to be resuming find wakeup vector and jump to OS. */
        wake_vec = acpi_find_wakeup_vector();
-       if (wake_vec)
+       if (wake_vec) {
+               /* Call mainboard resume handler first, if defined. */
+               if (mainboard_suspend_resume)
+                       mainboard_suspend_resume();
                acpi_jump_to_wakeup(wake_vec);
+       }
 }
 
 /* This is to be filled by SB code - startup value what was found. */
@@ -527,11 +531,6 @@ void *acpi_find_wakeup_vector(void)
        if (!acpi_is_wakeup())
                return NULL;
 
-#if CONFIG_CHROMEOS
-       printk(BIOS_DEBUG, "Verified boot TPM initialization.\n");
-       init_vboot();
-#endif
-
        printk(BIOS_DEBUG, "Trying to find the wakeup vector...\n");
 
        /* Find RSDP. */
@@ -610,6 +609,10 @@ void acpi_jump_to_wakeup(void *vector)
        /* Copy wakeup trampoline in place. */
        memcpy((void *)WAKEUP_BASE, &__wakeup, (size_t)&__wakeup_size);
 
+#if CONFIG_COLLECT_TIMESTAMPS
+       timestamp_add_now(TS_ACPI_WAKE_JUMP);
+#endif
+
        acpi_do_wakeup((u32)vector, acpi_backup_memory, CONFIG_RAMBASE,
                       HIGH_MEMORY_SAVE);
 }