Patch: linux-2.5.42/drivers/base/power.c - add state for SHUT_DOWN
OK, I tested this against a fresh kernel tree, not once but 4 times. I'm not sure why people have had problems applying this.
This also fixes some slight spacing issues - if(x) vs if (x) ...
This doesn't fix the problem with IDE spinning down on reboot, but it does fix what could potentially be problems with very low power suspend levels in the ACPI code.
include/linux/device.h Mon Oct 14 01:48:47 2002 renamed from include/linux/device.h Sat Oct 12 00:22:19 2002 +1 -0
@@ -40,6 +40,7 @@ SUSPEND_SAVE_STATE, SUSPEND_DISABLE, SUSPEND_POWER_DOWN, + SUSPEND_SHUT_DOWN, }; enum {
drivers/base/power.c Mon Oct 14 01:49:22 2002 renamed from drivers/base/power.c Sat Oct 12 00:22:11 2002 +4 -4
@@ -31,7 +31,7 @@ struct device * prev = NULL; int error = 0; - if(level == SUSPEND_POWER_DOWN) + if (level == SUSPEND_SHUT_DOWN) printk(KERN_EMERG "Shutting down devices\n"); else printk(KERN_EMERG "Suspending devices\n");
@@ -41,11 +41,11 @@ struct device * dev = get_device_locked(to_dev(node)); if (dev) { spin_unlock(&device_lock); - if(dev->driver) { - if(level == SUSPEND_POWER_DOWN) { - if(dev->driver->remove) + if (dev->driver) { + if (level == SUSPEND_SHUT_DOWN) { + if (dev->driver->remove)
dev->driver->remove(dev);
- } else if(dev->driver->suspend)
+ } else if (dev->driver->suspend)
error =
dev->driver->suspend(dev,state,level);
}
if (prev)@@ -96,7 +96,7 @@
*/
void device_shutdown(void)
{
- device_suspend(4, SUSPEND_POWER_DOWN);
+ device_suspend(4, SUSPEND_SHUT_DOWN);
}
EXPORT_SYMBOL(device_suspend);