aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2011-04-27 18:20:00 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2011-04-27 18:20:00 -0400
commitbe6b694713740cea4610754171deec2db9cd668b (patch)
tree765680b0996f8af1d4263fa83daeb58935238841
parent0fd97ab48971735e38677cfdab64e4db581530f8 (diff)
parent7bed50c5edf5cba8dd515a31191cbfb6065ddc85 (diff)
Merge branch 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6
* 'pm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6: ACPI / PM: Avoid infinite recurrence while registering power resources PM / Wakeup: Fix initialization of wakeup-related device sysfs files
-rw-r--r--drivers/acpi/scan.c4
-rw-r--r--drivers/base/power/main.c1
-rw-r--r--drivers/base/power/wakeup.c2
3 files changed, 6 insertions, 1 deletions
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index b136c9c1e531..449c556274c0 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -943,6 +943,10 @@ static int acpi_bus_get_flags(struct acpi_device *device)
943 if (ACPI_SUCCESS(status)) 943 if (ACPI_SUCCESS(status))
944 device->flags.lockable = 1; 944 device->flags.lockable = 1;
945 945
946 /* Power resources cannot be power manageable. */
947 if (device->device_type == ACPI_BUS_TYPE_POWER)
948 return 0;
949
946 /* Presence of _PS0|_PR0 indicates 'power manageable' */ 950 /* Presence of _PS0|_PR0 indicates 'power manageable' */
947 status = acpi_get_handle(device->handle, "_PS0", &temp); 951 status = acpi_get_handle(device->handle, "_PS0", &temp);
948 if (ACPI_FAILURE(status)) 952 if (ACPI_FAILURE(status))
diff --git a/drivers/base/power/main.c b/drivers/base/power/main.c
index fbc5b6e7c591..abe3ab709e87 100644
--- a/drivers/base/power/main.c
+++ b/drivers/base/power/main.c
@@ -63,6 +63,7 @@ void device_pm_init(struct device *dev)
63 dev->power.wakeup = NULL; 63 dev->power.wakeup = NULL;
64 spin_lock_init(&dev->power.lock); 64 spin_lock_init(&dev->power.lock);
65 pm_runtime_init(dev); 65 pm_runtime_init(dev);
66 INIT_LIST_HEAD(&dev->power.entry);
66} 67}
67 68
68/** 69/**
diff --git a/drivers/base/power/wakeup.c b/drivers/base/power/wakeup.c
index 4573c83df6dd..abbbd33e8d8a 100644
--- a/drivers/base/power/wakeup.c
+++ b/drivers/base/power/wakeup.c
@@ -258,7 +258,7 @@ void device_set_wakeup_capable(struct device *dev, bool capable)
258 if (!!dev->power.can_wakeup == !!capable) 258 if (!!dev->power.can_wakeup == !!capable)
259 return; 259 return;
260 260
261 if (device_is_registered(dev)) { 261 if (device_is_registered(dev) && !list_empty(&dev->power.entry)) {
262 if (capable) { 262 if (capable) {
263 if (wakeup_sysfs_add(dev)) 263 if (wakeup_sysfs_add(dev))
264 return; 264 return;