From 9e6b95c3111a427c3991fca727945c4cbcd9b8d4 Mon Sep 17 00:00:00 2001 From: Todd Poynor Date: Thu, 27 May 2004 23:13:30 -0700 Subject: [PATCH] [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 --- 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 --git a/drivers/base/power/resume.c b/drivers/base/power/resume.c index 90632b9ea95fa..21d4b56debe07 100644 --- a/drivers/base/power/resume.c +++ b/drivers/base/power/resume.c @@ -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); diff --git a/drivers/base/power/suspend.c b/drivers/base/power/suspend.c index b48016dc57373..a2bc41cc9a38d 100644 --- a/drivers/base/power/suspend.c +++ b/drivers/base/power/suspend.c @@ -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); diff --git a/include/linux/pm.h b/include/linux/pm.h index 848aec99098bb..66e62c0df19c5 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h @@ -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; -- 2.53.0