ACPI / PM: Move runtime remote wakeup setup routine to device_pm.c
The ACPI function for setting up devices to do runtime remote wakeup is now located in drivers/acpi/sleep.c, but drivers/acpi/device_pm.c is a more logical place for it, so move it there. No functional changes should result from this modification. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Родитель
86b3832c64
Коммит
cd7bd02d31
|
@ -26,6 +26,7 @@
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/pm_qos.h>
|
#include <linux/pm_qos.h>
|
||||||
|
#include <linux/pm_runtime.h>
|
||||||
|
|
||||||
#include <acpi/acpi.h>
|
#include <acpi/acpi.h>
|
||||||
#include <acpi/acpi_bus.h>
|
#include <acpi/acpi_bus.h>
|
||||||
|
@ -196,3 +197,41 @@ int acpi_device_power_state(struct device *dev, struct acpi_device *adev,
|
||||||
return d_max;
|
return d_max;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(acpi_device_power_state);
|
EXPORT_SYMBOL_GPL(acpi_device_power_state);
|
||||||
|
|
||||||
|
#ifdef CONFIG_PM_RUNTIME
|
||||||
|
/**
|
||||||
|
* acpi_pm_device_run_wake - Enable/disable remote wakeup for given device.
|
||||||
|
* @phys_dev: Device to enable/disable the platform to wake up.
|
||||||
|
* @enable: Whether to enable or disable the wakeup functionality.
|
||||||
|
*
|
||||||
|
* Find the ACPI device object corresponding to @phys_dev and try to
|
||||||
|
* enable/disable the GPE associated with it, so that it can generate
|
||||||
|
* wakeup signals for the device in response to external (remote) events.
|
||||||
|
*/
|
||||||
|
int acpi_pm_device_run_wake(struct device *phys_dev, bool enable)
|
||||||
|
{
|
||||||
|
struct acpi_device *dev;
|
||||||
|
acpi_handle handle;
|
||||||
|
|
||||||
|
if (!device_run_wake(phys_dev))
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
handle = DEVICE_ACPI_HANDLE(phys_dev);
|
||||||
|
if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &dev))) {
|
||||||
|
dev_dbg(phys_dev, "ACPI handle has no context in %s!\n",
|
||||||
|
__func__);
|
||||||
|
return -ENODEV;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (enable) {
|
||||||
|
acpi_enable_wakeup_device_power(dev, ACPI_STATE_S0);
|
||||||
|
acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number);
|
||||||
|
} else {
|
||||||
|
acpi_disable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number);
|
||||||
|
acpi_disable_wakeup_device_power(dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(acpi_pm_device_run_wake);
|
||||||
|
#endif /* CONFIG_PM_RUNTIME */
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
#include <linux/reboot.h>
|
#include <linux/reboot.h>
|
||||||
#include <linux/acpi.h>
|
#include <linux/acpi.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
#include <linux/pm_runtime.h>
|
|
||||||
|
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
@ -708,44 +707,6 @@ int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p, int d_max_in)
|
||||||
EXPORT_SYMBOL(acpi_pm_device_sleep_state);
|
EXPORT_SYMBOL(acpi_pm_device_sleep_state);
|
||||||
#endif /* CONFIG_PM */
|
#endif /* CONFIG_PM */
|
||||||
|
|
||||||
#ifdef CONFIG_PM_RUNTIME
|
|
||||||
/**
|
|
||||||
* acpi_pm_device_run_wake - Enable/disable remote wakeup for given device.
|
|
||||||
* @phys_dev: Device to enable/disable the platform to wake up.
|
|
||||||
* @enable: Whether to enable or disable the wakeup functionality.
|
|
||||||
*
|
|
||||||
* Find the ACPI device object corresponding to @phys_dev and try to
|
|
||||||
* enable/disable the GPE associated with it, so that it can generate
|
|
||||||
* wakeup signals for the device in response to external (remote) events.
|
|
||||||
*/
|
|
||||||
int acpi_pm_device_run_wake(struct device *phys_dev, bool enable)
|
|
||||||
{
|
|
||||||
struct acpi_device *dev;
|
|
||||||
acpi_handle handle;
|
|
||||||
|
|
||||||
if (!device_run_wake(phys_dev))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
handle = DEVICE_ACPI_HANDLE(phys_dev);
|
|
||||||
if (!handle || ACPI_FAILURE(acpi_bus_get_device(handle, &dev))) {
|
|
||||||
dev_dbg(phys_dev, "ACPI handle has no context in %s!\n",
|
|
||||||
__func__);
|
|
||||||
return -ENODEV;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (enable) {
|
|
||||||
acpi_enable_wakeup_device_power(dev, ACPI_STATE_S0);
|
|
||||||
acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number);
|
|
||||||
} else {
|
|
||||||
acpi_disable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number);
|
|
||||||
acpi_disable_wakeup_device_power(dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(acpi_pm_device_run_wake);
|
|
||||||
#endif /* CONFIG_PM_RUNTIME */
|
|
||||||
|
|
||||||
#ifdef CONFIG_PM_SLEEP
|
#ifdef CONFIG_PM_SLEEP
|
||||||
/**
|
/**
|
||||||
* acpi_pm_device_sleep_wake - Enable or disable device to wake up the system.
|
* acpi_pm_device_sleep_wake - Enable or disable device to wake up the system.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче