// SPDX-License-Identifier: GPL-2.0 /* * drivers/base/power/generic_ops.c - Generic PM callbacks for subsystems * * Copyright (c) 2010 Rafael J. Wysocki <rjw@sisk.pl>, Novell Inc.
*/ #include <linux/pm.h> #include <linux/pm_runtime.h> #include <linux/export.h>
#ifdef CONFIG_PM /** * pm_generic_runtime_suspend - Generic runtime suspend callback for subsystems. * @dev: Device to suspend. * * If PM operations are defined for the @dev's driver and they include * ->runtime_suspend(), execute it and return its error code. Otherwise, * return 0.
*/ int pm_generic_runtime_suspend(struct device *dev)
{ conststruct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; int ret;
ret = pm && pm->runtime_suspend ? pm->runtime_suspend(dev) : 0;
/** * pm_generic_runtime_resume - Generic runtime resume callback for subsystems. * @dev: Device to resume. * * If PM operations are defined for the @dev's driver and they include * ->runtime_resume(), execute it and return its error code. Otherwise, * return 0.
*/ int pm_generic_runtime_resume(struct device *dev)
{ conststruct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL; int ret;
ret = pm && pm->runtime_resume ? pm->runtime_resume(dev) : 0;
#ifdef CONFIG_PM_SLEEP /** * pm_generic_prepare - Generic routine preparing a device for power transition. * @dev: Device to prepare. * * Prepare a device for a system-wide power transition.
*/ int pm_generic_prepare(struct device *dev)
{ struct device_driver *drv = dev->driver; int ret = 0;
if (drv && drv->pm && drv->pm->prepare)
ret = drv->pm->prepare(dev);
return ret;
}
/** * pm_generic_suspend_noirq - Generic suspend_noirq callback for subsystems. * @dev: Device to suspend.
*/ int pm_generic_suspend_noirq(struct device *dev)
{ conststruct dev_pm_ops *pm = dev->driver ? dev->driver->pm : NULL;
/** * pm_generic_complete - Generic routine completing a device power transition. * @dev: Device to handle. * * Complete a device power transition during a system-wide power transition.
*/ void pm_generic_complete(struct device *dev)
{ struct device_driver *drv = dev->driver;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.