ChangeSet 1.1758, 2004/05/28 13:13:30-07:00, tpoynor@mvista.com

[PATCH] Fix for leave-runtime-suspended-devices-off-at-system-resume.patch

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  |    2 +-
 drivers/base/power/suspend.c |    2 ++
 include/linux/pm.h           |    1 +
 3 files changed, 4 insertions(+), 1 deletion(-)


diff -Nru a/drivers/base/power/resume.c b/drivers/base/power/resume.c
--- a/drivers/base/power/resume.c	Fri May 28 14:17:52 2004
+++ b/drivers/base/power/resume.c	Fri May 28 14:17:52 2004
@@ -36,7 +36,7 @@
 		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);
diff -Nru a/drivers/base/power/suspend.c b/drivers/base/power/suspend.c
--- a/drivers/base/power/suspend.c	Fri May 28 14:17:52 2004
+++ b/drivers/base/power/suspend.c	Fri May 28 14:17:52 2004
@@ -41,6 +41,8 @@
 
 	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);
 
diff -Nru a/include/linux/pm.h b/include/linux/pm.h
--- a/include/linux/pm.h	Fri May 28 14:17:52 2004
+++ b/include/linux/pm.h	Fri May 28 14:17:52 2004
@@ -231,6 +231,7 @@
 struct dev_pm_info {
 	u32			power_state;
 #ifdef	CONFIG_PM
+	u32			prev_state;
 	u8			* saved_state;
 	atomic_t		pm_users;
 	struct device		* pm_parent;
