aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/arch/x86/boot/acpi.c12
-rw-r--r--src/arch/x86/include/arch/acpi.h22
2 files changed, 14 insertions, 20 deletions
diff --git a/src/arch/x86/boot/acpi.c b/src/arch/x86/boot/acpi.c
index 61f09546af..621df2f72f 100644
--- a/src/arch/x86/boot/acpi.c
+++ b/src/arch/x86/boot/acpi.c
@@ -854,8 +854,8 @@ void acpi_resume(void *wake_vec)
acpi_jump_to_wakeup(wake_vec);
}
-/* This is to be filled by SB code - startup value what was found. */
-u8 acpi_slp_type = 0;
+/* This is filled with acpi_is_wakeup() call early in ramstage. */
+int acpi_slp_type = -1;
int __attribute__((weak)) acpi_get_sleep_type(void)
{
@@ -864,12 +864,8 @@ int __attribute__((weak)) acpi_get_sleep_type(void)
static void acpi_handoff_wakeup(void)
{
- static int once = 0;
- if (once)
- return;
-
- acpi_slp_type = acpi_get_sleep_type();
- once = 1;
+ if (acpi_slp_type < 0)
+ acpi_slp_type = acpi_get_sleep_type();
}
int acpi_is_wakeup(void)
diff --git a/src/arch/x86/include/arch/acpi.h b/src/arch/x86/include/arch/acpi.h
index 502c8264d8..c4970823c9 100644
--- a/src/arch/x86/include/arch/acpi.h
+++ b/src/arch/x86/include/arch/acpi.h
@@ -559,14 +559,10 @@ unsigned long acpi_fill_hest(acpi_hest_t *hest);
void acpi_save_gnvs(u32 gnvs_address);
-#if IS_ENABLED(CONFIG_HAVE_ACPI_RESUME)
-/* 0 = S0, 1 = S1 ...*/
-extern u8 acpi_slp_type;
-
-int acpi_is_wakeup(void);
-int acpi_is_wakeup_s3(void);
-int acpi_is_wakeup_early(void);
+/* cpu/intel/speedstep/acpi.c */
+void generate_cpu_entries(void);
+/* For ACPI S3 support. */
void acpi_fail_wakeup(void);
void acpi_resume(void *wake_vec);
void acpi_prepare_resume_backup(void);
@@ -575,18 +571,20 @@ void *acpi_find_wakeup_vector(void);
void *acpi_get_wakeup_rsdp(void);
void acpi_jump_to_wakeup(void *wakeup_addr);
+/* Returns 0 = S0, 1 = S1 ... */
int acpi_get_sleep_type(void);
-#endif /* IS_ENABLED(CONFIG_HAVE_ACPI_RESUME) */
-
-/* cpu/intel/speedstep/acpi.c */
-void generate_cpu_entries(void);
static inline int acpi_s3_resume_allowed(void)
{
return IS_ENABLED(CONFIG_HAVE_ACPI_RESUME);
}
-#if !IS_ENABLED(CONFIG_HAVE_ACPI_RESUME)
+#if IS_ENABLED(CONFIG_HAVE_ACPI_RESUME)
+extern int acpi_slp_type;
+int acpi_is_wakeup(void);
+int acpi_is_wakeup_s3(void);
+int acpi_is_wakeup_early(void);
+#else
#define acpi_slp_type 0
static inline int acpi_is_wakeup(void) { return 0; }
static inline int acpi_is_wakeup_s3(void) { return 0; }