/** * acpi_dev_pm_low_power - Put ACPI device into a low-power state. * @dev: Device to put into a low-power state. * @adev: ACPI device node corresponding to @dev. * @system_state: System state to choose the device state for. */ static int acpi_dev_pm_low_power(struct device *dev, struct acpi_device *adev, u32 system_state) { int ret, state; if (!acpi_device_power_manageable(adev)) return 0; ret = acpi_dev_pm_get_state(dev, adev, system_state, NULL, &state); return ret ? ret : acpi_device_set_power(adev, state); }
int acpi_bus_set_power(acpi_handle handle, int state) { struct acpi_device *device; int result; result = acpi_bus_get_device(handle, &device); if (result) return result; return acpi_device_set_power(device, state); }
/** * acpi_dev_pm_low_power - Put ACPI device into a low-power state. * @dev: Device to put into a low-power state. * @adev: ACPI device node corresponding to @dev. * @system_state: System state to choose the device state for. */ static int acpi_dev_pm_low_power(struct device *dev, struct acpi_device *adev, u32 system_state) { int power_state; if (!acpi_device_power_manageable(adev)) return 0; power_state = acpi_device_power_state(dev, adev, system_state, ACPI_STATE_D3, NULL); if (power_state < ACPI_STATE_D0 || power_state > ACPI_STATE_D3) return -EIO; return acpi_device_set_power(adev, power_state); }
int acpi_bus_set_power(acpi_handle handle, int state) { struct acpi_device *device; int result; result = acpi_bus_get_device(handle, &device); if (result) return result; if (!device->flags.power_manageable) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] is not power manageable\n", dev_name(&device->dev))); return -ENODEV; } return acpi_device_set_power(device, state); }
int acpi_device_update_power(struct acpi_device *device, int *state_p) { int state; int result; if (device->power.state == ACPI_STATE_UNKNOWN) { result = acpi_bus_init_power(device); if (!result && state_p) *state_p = device->power.state; return result; } result = acpi_device_get_power(device, &state); if (result) return result; if (state == ACPI_STATE_UNKNOWN) { state = ACPI_STATE_D0; result = acpi_device_set_power(device, state); if (result) return result; } else { if (device->power.flags.power_resources) { /* * We don't need to really switch the state, bu we need * to update the power resources' reference counters. */ result = acpi_power_transition(device, state); if (result) return result; } device->power.state = state; } if (state_p) *state_p = state; return 0; }
int acpi_bus_update_power(acpi_handle handle, int *state_p) { struct acpi_device *device; int state; int result; result = acpi_bus_get_device(handle, &device); if (result) return result; result = acpi_device_get_power(device, &state); if (result) return result; if (state == ACPI_STATE_UNKNOWN) state = ACPI_STATE_D0; result = acpi_device_set_power(device, state); if (!result && state_p) *state_p = state; return result; }
/** * acpi_dev_pm_full_power - Put ACPI device into the full-power state. * @adev: ACPI device node to put into the full-power state. */ static int acpi_dev_pm_full_power(struct acpi_device *adev) { return acpi_device_power_manageable(adev) ? acpi_device_set_power(adev, ACPI_STATE_D0) : 0; }