summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2015-01-09 23:55:09 +0200
committerKyösti Mälkki <kyosti.malkki@gmail.com>2015-01-10 13:52:10 +0100
commit7a846e7acc64c191a217710234c90ae3634d09ea (patch)
treea5bd6c0d222f4fb60020521b631a1aeade94f53f
parent054c83ac72f162b7686a4bfa0013658aef11e0f6 (diff)
ACPI: Prepare for HAVE_ACPI_RESUME changes
Change-Id: I71d522b135dff8b3c287699cc649caece9e4342c Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/8186 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
-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; }