]> git.neil.brown.name Git - history.git/commitdiff
[PATCH] Fix for leave-runtime-suspended-devices-off-at-system-resume.patch
authorTodd Poynor <tpoynor@mvista.com>
Fri, 28 May 2004 06:13:30 +0000 (23:13 -0700)
committerGreg Kroah-Hartman <greg@kroah.com>
Fri, 28 May 2004 06:13:30 +0000 (23:13 -0700)
A patch to fix my previous
leave-runtime-suspended-devices-off-at-system-resume patch; the new
changes save a copy of power.power_state in order to know whether to
resume a device, independently of mods to that field by a driver suspend
routine.  This fixes 2.6.7-rc1-mm1 in the same fashion as the updated
2.6.6 patch sent previously.

Signed-off-by: Greg Kroah-Hartman <greg@kroah.com>
drivers/base/power/resume.c
drivers/base/power/suspend.c
include/linux/pm.h

index 90632b9ea95fa585c9ca7457e444f6ceacf6935e..21d4b56debe0749d38fcb61d7d86ec837b096eea 100644 (file)
@@ -36,7 +36,7 @@ void dpm_resume(void)
                struct device * dev = to_device(entry);
                list_del_init(entry);
 
-               if (!dev->power.power_state)
+               if (!dev->power.prev_state)
                        resume_device(dev);
 
                list_add_tail(entry,&dpm_active);
index b48016dc573737a568005b56030c7a876328f5fe..a2bc41cc9a38de77a15d32882337de3af28d4207 100644 (file)
@@ -41,6 +41,8 @@ int suspend_device(struct device * dev, u32 state)
 
        dev_dbg(dev, "suspending\n");
 
+       dev->power.prev_state = dev->power.power_state;
+
        if (dev->bus && dev->bus->suspend && !dev->power.power_state)
                error = dev->bus->suspend(dev,state);
 
index 848aec99098bb70b45e81ecce6894358f2f28cf0..66e62c0df19c5ec7cc32740084cc71e3cfd1a5ec 100644 (file)
@@ -231,6 +231,7 @@ struct device;
 struct dev_pm_info {
        u32                     power_state;
 #ifdef CONFIG_PM
+       u32                     prev_state;
        u8                      * saved_state;
        atomic_t                pm_users;
        struct device           * pm_parent;