ACPI: Add interface to register/unregister device to/from power resources
authorLin Ming <ming.m.lin@intel.com>
Thu, 29 Mar 2012 06:09:39 +0000 (14:09 +0800)
committerLen Brown <len.brown@intel.com>
Fri, 30 Mar 2012 05:47:20 +0000 (01:47 -0400)
commit0090def6c37c8ea29508a435e581f2ef26fea10f
treec8790571fb6cfe5ce8890706b5b44aed8005e900
parent3ebc81b8937d2bc1d0d0064bed29434dfce490aa
ACPI: Add interface to register/unregister device to/from power resources

Devices may share same list of power resources in _PR0, for example

Device(Dev0)
{
Name (_PR0, Package (0x01)
{
P0PR,
P1PR
})
}

Device(Dev1)
{
Name (_PR0, Package (0x01)
{
P0PR,
P1PR
}
}

Assume Dev0 and Dev1 were runtime suspended.
Then Dev0 is resumed first and it goes into D0 state.
But Dev1 is left in D0_Uninitialised state.

This is wrong. In this case, Dev1 must be resumed too.

In order to hand this case, each power resource maintains a list of
devices which relies on it.

When power resource is ON, it will check if the devices on its list
can be resumed. The device can only be resumed when all the power
resouces of its _PR0 are ON.

Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/power.c
include/acpi/acpi_bus.h