Commit 71fbad6c authored by Huang Ying's avatar Huang Ying Committed by Bjorn Helgaas

PCI/ACPI: Notify PCI devices when their power resource is turned on

This patch reduces power consumption by allowing idle devices to go to a
low power state after another device on the same power resource has been
awakened.

A power resource may be shared by multiple devices.  When all devices
sharing a power resource are put into D3_COLD state, the power resource
will be turned off.  When one of the devices is awakened, the power
resource will be turned on and all devices sharing it will be powered on to
D0uninitialized state.  These devices should be resumed, so that they have
the opportunity to go to low power state later.

[bhelgaas: changelog]
Signed-off-by: default avatarHuang Ying <ying.huang@intel.com>
Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
Acked-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
parent eba48cd0
...@@ -45,6 +45,7 @@ static int acpi_pci_unbind(struct acpi_device *device) ...@@ -45,6 +45,7 @@ static int acpi_pci_unbind(struct acpi_device *device)
device_set_run_wake(&dev->dev, false); device_set_run_wake(&dev->dev, false);
pci_acpi_remove_pm_notifier(device); pci_acpi_remove_pm_notifier(device);
acpi_power_resource_unregister_device(&dev->dev, device->handle);
if (!dev->subordinate) if (!dev->subordinate)
goto out; goto out;
...@@ -71,6 +72,7 @@ static int acpi_pci_bind(struct acpi_device *device) ...@@ -71,6 +72,7 @@ static int acpi_pci_bind(struct acpi_device *device)
return 0; return 0;
pci_acpi_add_pm_notifier(device, dev); pci_acpi_add_pm_notifier(device, dev);
acpi_power_resource_register_device(&dev->dev, device->handle);
if (device->wakeup.flags.run_wake) if (device->wakeup.flags.run_wake)
device_set_run_wake(&dev->dev, true); device_set_run_wake(&dev->dev, true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment