123456789101112131415161718192021222324252627282930313233343536373839 |
- /*
- * poweroff.c - ACPI handler for powering off the system.
- *
- * AKA S5, but it is independent of whether or not the kernel supports
- * any other sleep support in the system.
- */
- #include <linux/pm.h>
- #include <linux/init.h>
- #include <acpi/acpi_bus.h>
- #include <linux/sched.h>
- #include "sleep.h"
- static void
- acpi_power_off (void)
- {
- printk("%s called\n",__FUNCTION__);
- /* Some SMP machines only can poweroff in boot CPU */
- set_cpus_allowed(current, cpumask_of_cpu(0));
- acpi_wakeup_gpe_poweroff_prepare();
- acpi_enter_sleep_state_prep(ACPI_STATE_S5);
- ACPI_DISABLE_IRQS();
- acpi_enter_sleep_state(ACPI_STATE_S5);
- }
- static int acpi_poweroff_init(void)
- {
- if (!acpi_disabled) {
- u8 type_a, type_b;
- acpi_status status;
- status = acpi_get_sleep_type_data(ACPI_STATE_S5, &type_a, &type_b);
- if (ACPI_SUCCESS(status))
- pm_power_off = acpi_power_off;
- }
- return 0;
- }
- late_initcall(acpi_poweroff_init);
|