ACPI / PM: Introduce concept of a _PR0 dependent device
authorMika Westerberg <mika.westerberg@linux.intel.com>
Tue, 25 Jun 2019 10:29:41 +0000 (13:29 +0300)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Thu, 27 Jun 2019 10:31:57 +0000 (12:31 +0200)
commit4533771c1e53b921f66e580135ee64a76986a491
treee3da8ee3143c1ebbcfaf7d66be3601c1a040eec9
parent83a16e3f6d70da99896c7a2639c0b60fff13afb8
ACPI / PM: Introduce concept of a _PR0 dependent device

If there are shared power resources between otherwise unrelated devices
turning them on causes the other devices sharing them to be powered up
as well. In case of PCI devices go into D0uninitialized state meaning
that if they were configured to trigger wake that configuration is lost
at this point.

For this reason introduce a concept of "_PR0 dependent device" that can
be added to any ACPI device that has power resources. The dependent
device will be included in a list of dependent devices for all power
resources returned by the ACPI device's _PR0 (assuming it has one).
Whenever a power resource having dependent devices is turned physically
on (its _ON method is called) we runtime resume all of them to allow
their driver or in case of PCI the PCI core to re-initialize the device
and its wake configuration.

This adds two functions that can be used to add and remove these
dependent devices. Note the dependent device does not necessary need
share power resources so this functionality can be used to add "software
dependencies" as well if needed.

Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/power.c
include/acpi/acpi_bus.h