lkml.org 
[lkml]   [2005]   [Jul]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH] [38/48] Suspend2 2.1.9.8 for 2.6.12: 614-plugins.patch
    Date
    From
    diff -ruNp 615-poweroff.patch-old/kernel/power/suspend2_core/power_off.c 615-poweroff.patch-new/kernel/power/suspend2_core/power_off.c
    --- 615-poweroff.patch-old/kernel/power/suspend2_core/power_off.c 1970-01-01 10:00:00.000000000 +1000
    +++ 615-poweroff.patch-new/kernel/power/suspend2_core/power_off.c 2005-07-04 23:14:19.000000000 +1000
    @@ -0,0 +1,148 @@
    +/*
    + * kernel/power/suspend2_core/power_off.c
    + *
    + * Copyright (C) 2005 Nigel Cunningham <nigel@suspend2.net>
    + *
    + * This file is released under the GPLv2.
    + *
    + * Support for powering down.
    + */
    +
    +#include <linux/device.h>
    +#include <linux/suspend.h>
    +#include <linux/mm.h>
    +#include <linux/pm.h>
    +#include <linux/reboot.h>
    +#include "suspend2_common.h"
    +#include "suspend.h"
    +#include "ui.h"
    +
    +unsigned long suspend2_powerdown_method = 5; /* S5 = off */
    +static int suspend_pm_state_used = 0;
    +
    +extern struct pm_ops * pm_ops;
    +
    +#ifdef CONFIG_ACPI
    +extern u32 acpi_leave_sleep_state (u8 sleep_state);
    +#endif
    +
    +/* suspend_power_off
    + *
    + * Power off the machine.
    + */
    +static void suspend_power_off(void)
    +{
    + machine_power_off();
    + suspend2_prepare_status(1, 0, "Probably not capable for powerdown.");
    + while (1)
    + cpu_relax();
    + /* NOTREACHED */
    +}
    +
    +/* suspend_pm_state_prepare
    + *
    + * Prepare to enter the sleep state.
    + */
    +static int suspend_pm_state_prepare(void)
    +{
    + int ret = 0;
    +
    + if (suspend2_powerdown_method == 3 ||
    + suspend2_powerdown_method == 4)
    + if (pm_ops && pm_ops->prepare)
    + ret = pm_ops->prepare(suspend2_powerdown_method);
    +
    + return ret;
    +}
    +
    +/* suspend_pm_sleep_state_enter
    + *
    + * Enter the sleep state requested.
    + */
    +static int suspend_pm_state_enter(u32 state)
    +{
    + int ret = 0;
    + unsigned long flags;
    + suspend_pm_state_used = state;
    +
    + local_irq_save(flags);
    + device_power_down(PMSG_SUSPEND);
    + if (pm_ops && pm_ops->enter)
    + ret = pm_ops->enter(state);
    + else
    + printk("Failed to enter state.\n");
    +
    + device_power_up();
    + local_irq_restore(flags);
    +
    + return ret;
    +}
    +
    +/* suspend_pm_state_finish
    + *
    + * Finish the sleep state.
    + */
    +int suspend_pm_state_finish(void)
    +{
    + int ret = 0;
    +
    + if (suspend2_powerdown_method == 3 ||
    + suspend2_powerdown_method == 4)
    + if (pm_ops && pm_ops->finish)
    + ret = pm_ops->finish(suspend2_powerdown_method);
    +
    + device_resume();
    +
    + return ret;
    +}
    +
    +/*
    + * suspend_power_down
    + * Functionality : Powers down or reboots the computer once the image
    + * has been written to disk.
    + * Key Assumptions : Able to reboot/power down via code called or that
    + * the warning emitted if the calls fail will be visible
    + * to the user (ie printk resumes devices).
    + * Called From : do_suspend2_suspend_2
    + */
    +
    +void suspend_power_down(void)
    +{
    + if (TEST_ACTION_STATE(SUSPEND_REBOOT)) {
    + suspend2_prepare_status(1, 0, "Ready to reboot.");
    + device_shutdown();
    + machine_restart(NULL);
    + }
    +
    + if (suspend2_powerdown_method == 3 ||
    + suspend2_powerdown_method == 4) {
    + suspend2_prepare_status(1, 0, "Seeking to enter ACPI state");
    + if (suspend_pm_state_prepare()) {
    + suspend2_prepare_status(1, 0, "Preparing to enter ACPI state failed. Using normal powerdown.");
    + goto abort_ACPI_sleep;
    + }
    + if (device_suspend(PMSG_SUSPEND)) {
    + suspend2_prepare_status(1, 0, "Suspending devices failed. Using normal powerdown.");
    + suspend_pm_state_finish();
    + goto abort_ACPI_sleep;
    + }
    + if (suspend_pm_state_enter(suspend2_powerdown_method)) {
    + suspend2_prepare_status(1, 0, "Entering ACPI state failed. Using normal powerdown.");
    + suspend_pm_state_finish();
    + goto abort_ACPI_sleep;
    + }
    + suspend_pm_state_finish();
    + return;
    + } else
    + suspend2_prepare_status(1, 0, "Powering down.");
    +
    +abort_ACPI_sleep:
    + /*
    + * FIXME: At resume, we'll still think we used S4 if we tried it.
    + * Does it matter?
    + */
    + suspend_pm_state_used = 0;
    + device_shutdown();
    + suspend_power_off();
    +}
    +
    diff -ruNp 615-poweroff.patch-old/kernel/power/suspend2_core/power_off.h 615-poweroff.patch-new/kernel/power/suspend2_core/power_off.h
    --- 615-poweroff.patch-old/kernel/power/suspend2_core/power_off.h 1970-01-01 10:00:00.000000000 +1000
    +++ 615-poweroff.patch-new/kernel/power/suspend2_core/power_off.h 2005-07-04 23:14:19.000000000 +1000
    @@ -0,0 +1,13 @@
    +/*
    + * kernel/power/suspend2_core/power_off.h
    + *
    + * Copyright (C) 2005 Nigel Cunningham <nigel@suspend2.net>
    + *
    + * This file is released under the GPLv2.
    + *
    + * Support for the powering down.
    + */
    +
    +int suspend_pm_state_finish(void);
    +void suspend_power_down(void);
    +extern unsigned long suspend2_powerdown_method;
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-07-06 05:32    [W:0.030 / U:32.084 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site