mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 12:10:52 -04:00
Merge branch 'pm-domains'
* pm-domains: (32 commits) PM / Domains: Rename cpu_data to cpuidle_data PM / Domains: Move dev_pm_domain_attach|detach() to pm_domain.h PM / Domains: Remove legacy API for adding devices through DT PM / Domains: Add genpd attach/detach callbacks PM / Domains: add debugfs listing of struct generic_pm_domain-s ACPI / PM: Convert acpi_dev_pm_detach() into a static function ARM: exynos: Move to generic PM domain DT bindings amba: Add support for attach/detach of PM domains spi: core: Convert to dev_pm_domain_attach|detach() mmc: sdio: Convert to dev_pm_domain_attach|detach() i2c: core: Convert to dev_pm_domain_attach|detach() drivercore / platform: Convert to dev_pm_domain_attach|detach() PM / Domains: Add APIs to attach/detach a PM domain for a device PM / Domains: Add generic OF-based PM domain look-up ACPI / PM: Assign the ->detach() callback when attaching the PM domain PM / Domains: Add a detach callback to the struct dev_pm_domain PM / domains: Spelling s/domian/domain/ PM / domains: Keep declaration of dev_power_governors together PM / domains: Remove default_stop_ok() API drivers: sh: Leave disabling of unused PM domains to genpd ...
This commit is contained in:
commit
49a09c9ab0
33 changed files with 770 additions and 604 deletions
|
|
@ -1040,6 +1040,40 @@ static struct dev_pm_domain acpi_general_pm_domain = {
|
|||
},
|
||||
};
|
||||
|
||||
/**
|
||||
* acpi_dev_pm_detach - Remove ACPI power management from the device.
|
||||
* @dev: Device to take care of.
|
||||
* @power_off: Whether or not to try to remove power from the device.
|
||||
*
|
||||
* Remove the device from the general ACPI PM domain and remove its wakeup
|
||||
* notifier. If @power_off is set, additionally remove power from the device if
|
||||
* possible.
|
||||
*
|
||||
* Callers must ensure proper synchronization of this function with power
|
||||
* management callbacks.
|
||||
*/
|
||||
static void acpi_dev_pm_detach(struct device *dev, bool power_off)
|
||||
{
|
||||
struct acpi_device *adev = ACPI_COMPANION(dev);
|
||||
|
||||
if (adev && dev->pm_domain == &acpi_general_pm_domain) {
|
||||
dev->pm_domain = NULL;
|
||||
acpi_remove_pm_notifier(adev);
|
||||
if (power_off) {
|
||||
/*
|
||||
* If the device's PM QoS resume latency limit or flags
|
||||
* have been exposed to user space, they have to be
|
||||
* hidden at this point, so that they don't affect the
|
||||
* choice of the low-power state to put the device into.
|
||||
*/
|
||||
dev_pm_qos_hide_latency_limit(dev);
|
||||
dev_pm_qos_hide_flags(dev);
|
||||
acpi_device_wakeup(adev, ACPI_STATE_S0, false);
|
||||
acpi_dev_pm_low_power(dev, adev, ACPI_STATE_S0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* acpi_dev_pm_attach - Prepare device for ACPI power management.
|
||||
* @dev: Device to prepare.
|
||||
|
|
@ -1072,42 +1106,9 @@ int acpi_dev_pm_attach(struct device *dev, bool power_on)
|
|||
acpi_dev_pm_full_power(adev);
|
||||
acpi_device_wakeup(adev, ACPI_STATE_S0, false);
|
||||
}
|
||||
|
||||
dev->pm_domain->detach = acpi_dev_pm_detach;
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(acpi_dev_pm_attach);
|
||||
|
||||
/**
|
||||
* acpi_dev_pm_detach - Remove ACPI power management from the device.
|
||||
* @dev: Device to take care of.
|
||||
* @power_off: Whether or not to try to remove power from the device.
|
||||
*
|
||||
* Remove the device from the general ACPI PM domain and remove its wakeup
|
||||
* notifier. If @power_off is set, additionally remove power from the device if
|
||||
* possible.
|
||||
*
|
||||
* Callers must ensure proper synchronization of this function with power
|
||||
* management callbacks.
|
||||
*/
|
||||
void acpi_dev_pm_detach(struct device *dev, bool power_off)
|
||||
{
|
||||
struct acpi_device *adev = ACPI_COMPANION(dev);
|
||||
|
||||
if (adev && dev->pm_domain == &acpi_general_pm_domain) {
|
||||
dev->pm_domain = NULL;
|
||||
acpi_remove_pm_notifier(adev);
|
||||
if (power_off) {
|
||||
/*
|
||||
* If the device's PM QoS resume latency limit or flags
|
||||
* have been exposed to user space, they have to be
|
||||
* hidden at this point, so that they don't affect the
|
||||
* choice of the low-power state to put the device into.
|
||||
*/
|
||||
dev_pm_qos_hide_latency_limit(dev);
|
||||
dev_pm_qos_hide_flags(dev);
|
||||
acpi_device_wakeup(adev, ACPI_STATE_S0, false);
|
||||
acpi_dev_pm_low_power(dev, adev, ACPI_STATE_S0);
|
||||
}
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(acpi_dev_pm_detach);
|
||||
#endif /* CONFIG_PM */
|
||||
|
|
|
|||
Loading…
Reference in a new issue