|
@@ -80,6 +80,23 @@ static int acpi_sleep_prepare(u32 acpi_state)
|
|
|
|
|
|
#ifdef CONFIG_ACPI_SLEEP
|
|
|
static u32 acpi_target_sleep_state = ACPI_STATE_S0;
|
|
|
+/*
|
|
|
+ * According to the ACPI specification the BIOS should make sure that ACPI is
|
|
|
+ * enabled and SCI_EN bit is set on wake-up from S1 - S3 sleep states. Still,
|
|
|
+ * some BIOSes don't do that and therefore we use acpi_enable() to enable ACPI
|
|
|
+ * on such systems during resume. Unfortunately that doesn't help in
|
|
|
+ * particularly pathological cases in which SCI_EN has to be set directly on
|
|
|
+ * resume, although the specification states very clearly that this flag is
|
|
|
+ * owned by the hardware. The set_sci_en_on_resume variable will be set in such
|
|
|
+ * cases.
|
|
|
+ */
|
|
|
+static bool set_sci_en_on_resume;
|
|
|
+
|
|
|
+void __init acpi_set_sci_en_on_resume(void)
|
|
|
+{
|
|
|
+ set_sci_en_on_resume = true;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* ACPI 1.0 wants us to execute _PTS before suspending devices, so we allow the
|
|
|
* user to request that behavior by using the 'acpi_old_suspend_ordering'
|
|
@@ -170,18 +187,6 @@ static void acpi_pm_end(void)
|
|
|
#endif /* CONFIG_ACPI_SLEEP */
|
|
|
|
|
|
#ifdef CONFIG_SUSPEND
|
|
|
-/*
|
|
|
- * According to the ACPI specification the BIOS should make sure that ACPI is
|
|
|
- * enabled and SCI_EN bit is set on wake-up from S1 - S3 sleep states. Still,
|
|
|
- * some BIOSes don't do that and therefore we use acpi_enable() to enable ACPI
|
|
|
- * on such systems during resume. Unfortunately that doesn't help in
|
|
|
- * particularly pathological cases in which SCI_EN has to be set directly on
|
|
|
- * resume, although the specification states very clearly that this flag is
|
|
|
- * owned by the hardware. The set_sci_en_on_resume variable will be set in such
|
|
|
- * cases.
|
|
|
- */
|
|
|
-static bool set_sci_en_on_resume;
|
|
|
-
|
|
|
extern void do_suspend_lowlevel(void);
|
|
|
|
|
|
static u32 acpi_suspend_states[] = {
|