|
@@ -377,6 +377,14 @@ acpi_system_wakeup_device_seq_show(struct seq_file *seq, void *offset)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+static void physical_device_enable_wakeup(struct acpi_device *adev)
|
|
|
|
+{
|
|
|
|
+ struct device *dev = acpi_get_physical_device(adev->handle);
|
|
|
|
+
|
|
|
|
+ if (dev && device_can_wakeup(dev))
|
|
|
|
+ device_set_wakeup_enable(dev, adev->wakeup.state.enabled);
|
|
|
|
+}
|
|
|
|
+
|
|
static ssize_t
|
|
static ssize_t
|
|
acpi_system_write_wakeup_device(struct file *file,
|
|
acpi_system_write_wakeup_device(struct file *file,
|
|
const char __user * buffer,
|
|
const char __user * buffer,
|
|
@@ -411,6 +419,7 @@ acpi_system_write_wakeup_device(struct file *file,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (found_dev) {
|
|
if (found_dev) {
|
|
|
|
+ physical_device_enable_wakeup(found_dev);
|
|
list_for_each_safe(node, next, &acpi_wakeup_device_list) {
|
|
list_for_each_safe(node, next, &acpi_wakeup_device_list) {
|
|
struct acpi_device *dev = container_of(node,
|
|
struct acpi_device *dev = container_of(node,
|
|
struct
|
|
struct
|
|
@@ -428,6 +437,7 @@ acpi_system_write_wakeup_device(struct file *file,
|
|
dev->pnp.bus_id, found_dev->pnp.bus_id);
|
|
dev->pnp.bus_id, found_dev->pnp.bus_id);
|
|
dev->wakeup.state.enabled =
|
|
dev->wakeup.state.enabled =
|
|
found_dev->wakeup.state.enabled;
|
|
found_dev->wakeup.state.enabled;
|
|
|
|
+ physical_device_enable_wakeup(dev);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|