diff options
author | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2014-06-19 23:29:07 +0300 |
---|---|---|
committer | Kyösti Mälkki <kyosti.malkki@gmail.com> | 2014-07-03 09:49:26 +0200 |
commit | db8693bde7ad2cc2f6b32bb9654685c1ddb502b2 (patch) | |
tree | a64c78d5990c2d2a1969e081433fbecb13ef6d56 /src/arch/x86/boot | |
parent | ef40ca57ebd4de746eafaa1e5a1cae035337f285 (diff) |
ACPI: Recover type of wakeup in acpi_is_wakeup()
Update acpi_slp_type early in ramstage.
Change-Id: I30ec2680d28b880171217e896f48606f8691b099
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/6142
Tested-by: build bot (Jenkins)
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Diffstat (limited to 'src/arch/x86/boot')
-rw-r--r-- | src/arch/x86/boot/acpi.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/arch/x86/boot/acpi.c b/src/arch/x86/boot/acpi.c index 012c10127f..d76882a216 100644 --- a/src/arch/x86/boot/acpi.c +++ b/src/arch/x86/boot/acpi.c @@ -645,14 +645,26 @@ void acpi_resume(void *wake_vec) /* This is to be filled by SB code - startup value what was found. */ u8 acpi_slp_type = 0; +static void acpi_handoff_wakeup(void) +{ + static int once = 0; + if (once) + return; + if (acpi_get_sleep_type) + acpi_slp_type = acpi_get_sleep_type(); + once = 1; +} + int acpi_is_wakeup(void) { + acpi_handoff_wakeup(); /* Both resume from S2 and resume from S3 restart at CPU reset */ return (acpi_slp_type == 3 || acpi_slp_type == 2); } int acpi_is_wakeup_s3(void) { + acpi_handoff_wakeup(); return (acpi_slp_type == 3); } |