ACPI: Introduce ACPI D3_COLD state support
If a device has _PR3, it means the device supports D3_COLD. Add the ability to validate and enter D3_COLD state in ACPI. Signed-off-by: Zhang Rui <rui.zhang@intel.com> Signed-off-by: Lin Ming <ming.m.lin@intel.com> Signed-off-by: Len Brown <len.brown@intel.com>hifive-unleashed-5.1
parent
c16fa4f2ad
commit
3ebc81b893
|
@ -500,14 +500,14 @@ int acpi_power_transition(struct acpi_device *device, int state)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
if (!device || (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3))
|
if (!device || (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3_COLD))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
if (device->power.state == state)
|
if (device->power.state == state)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if ((device->power.state < ACPI_STATE_D0)
|
if ((device->power.state < ACPI_STATE_D0)
|
||||||
|| (device->power.state > ACPI_STATE_D3))
|
|| (device->power.state > ACPI_STATE_D3_COLD))
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
|
|
||||||
/* TBD: Resources must be ordered. */
|
/* TBD: Resources must be ordered. */
|
||||||
|
|
|
@ -885,6 +885,13 @@ static int acpi_bus_get_power_flags(struct acpi_device *device)
|
||||||
acpi_bus_add_power_resource(ps->resources.handles[j]);
|
acpi_bus_add_power_resource(ps->resources.handles[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The exist of _PR3 indicates D3Cold support */
|
||||||
|
if (i == ACPI_STATE_D3) {
|
||||||
|
status = acpi_get_handle(device->handle, object_name, &handle);
|
||||||
|
if (ACPI_SUCCESS(status))
|
||||||
|
device->power.states[ACPI_STATE_D3_COLD].flags.valid = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* Evaluate "_PSx" to see if we can do explicit sets */
|
/* Evaluate "_PSx" to see if we can do explicit sets */
|
||||||
object_name[2] = 'S';
|
object_name[2] = 'S';
|
||||||
status = acpi_get_handle(device->handle, object_name, &handle);
|
status = acpi_get_handle(device->handle, object_name, &handle);
|
||||||
|
|
Loading…
Reference in New Issue