From mboxrd@z Thu Jan 1 00:00:00 1970 From: Guenter Roeck Subject: [RFC PATCH 1/2] acpi: Use syscore instead of pm_power_off_prepare to prepare for poweroff Date: Sat, 11 Oct 2014 14:14:16 -0700 Message-ID: <1413062057-11657-2-git-send-email-linux@roeck-us.net> References: <1413062057-11657-1-git-send-email-linux@roeck-us.net> Return-path: In-Reply-To: <1413062057-11657-1-git-send-email-linux@roeck-us.net> Sender: linux-kernel-owner@vger.kernel.org To: linux-kernel@vger.kernel.org Cc: linux-pm@vger.kernel.org, "Rafael J. Wysocki" , Len Brown , Pavel Machek , Andrew Morton , Guenter Roeck List-Id: linux-pm@vger.kernel.org The syscore shutdown callback seems to be perfectly suited to prepare for system poweroff. Use it instead of pm_power_off_prepare. Cc: Rafael J. Wysocki Cc: Len Brown Signed-off-by: Guenter Roeck --- drivers/acpi/sleep.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index 05a31b5..e03c74d 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -820,13 +821,23 @@ int acpi_suspend(u32 acpi_state) return -EINVAL; } -static void acpi_power_off_prepare(void) +static void acpi_shutdown(void) { - /* Prepare to power off the system */ - acpi_sleep_prepare(ACPI_STATE_S5); - acpi_disable_all_gpes(); + switch (system_state) { + case SYSTEM_POWER_OFF: + /* Prepare to power off the system */ + acpi_sleep_prepare(ACPI_STATE_S5); + acpi_disable_all_gpes(); + break; + default: + break; + } } +static struct syscore_ops acpi_syscore_ops = { + .shutdown = acpi_shutdown, +}; + static void acpi_power_off(void) { /* acpi_sleep_prepare(ACPI_STATE_S5) should have already been called */ @@ -850,7 +861,7 @@ int __init acpi_sleep_init(void) if (acpi_sleep_state_supported(ACPI_STATE_S5)) { sleep_states[ACPI_STATE_S5] = 1; - pm_power_off_prepare = acpi_power_off_prepare; + register_syscore_ops(&acpi_syscore_ops); pm_power_off = acpi_power_off; } -- 1.9.1