mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-29 23:24:11 +08:00
ACPI: enable GPEs before calling _WAK on resume
It seems it's required to enable GPEs before _WAK. E.g. X60 triggers a LID related GPE instead of doing a Notify in WAK. Now the GPE reaches the kernel and the Notify for LID status change gets thrown from there. Signed-off-by: Thomas Renninger <trenn@suse.de> Acked-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
b377fd3982
commit
79d2dfaa4e
@ -576,13 +576,10 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state)
|
|||||||
ACPI_EXCEPTION((AE_INFO, status, "During Method _BFS"));
|
ACPI_EXCEPTION((AE_INFO, status, "During Method _BFS"));
|
||||||
}
|
}
|
||||||
|
|
||||||
status = acpi_evaluate_object(NULL, METHOD_NAME__WAK, &arg_list, NULL);
|
|
||||||
if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
|
|
||||||
ACPI_EXCEPTION((AE_INFO, status, "During Method _WAK"));
|
|
||||||
}
|
|
||||||
/* TBD: _WAK "sometimes" returns stuff - do we want to look at it? */
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
* GPEs must be enabled before _WAK is called as GPEs
|
||||||
|
* might get fired there
|
||||||
|
*
|
||||||
* Restore the GPEs:
|
* Restore the GPEs:
|
||||||
* 1) Disable/Clear all GPEs
|
* 1) Disable/Clear all GPEs
|
||||||
* 2) Enable all runtime GPEs
|
* 2) Enable all runtime GPEs
|
||||||
@ -591,13 +588,19 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state)
|
|||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
acpi_gbl_system_awake_and_running = TRUE;
|
|
||||||
|
|
||||||
status = acpi_hw_enable_all_runtime_gpes();
|
status = acpi_hw_enable_all_runtime_gpes();
|
||||||
if (ACPI_FAILURE(status)) {
|
if (ACPI_FAILURE(status)) {
|
||||||
return_ACPI_STATUS(status);
|
return_ACPI_STATUS(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
status = acpi_evaluate_object(NULL, METHOD_NAME__WAK, &arg_list, NULL);
|
||||||
|
if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
|
||||||
|
ACPI_EXCEPTION((AE_INFO, status, "During Method _WAK"));
|
||||||
|
}
|
||||||
|
/* TBD: _WAK "sometimes" returns stuff - do we want to look at it? */
|
||||||
|
|
||||||
|
acpi_gbl_system_awake_and_running = TRUE;
|
||||||
|
|
||||||
/* Enable power button */
|
/* Enable power button */
|
||||||
|
|
||||||
(void)
|
(void)
|
||||||
|
Loading…
Reference in New Issue
Block a user