mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 10:49:33 +00:00
PM: Export platform bus type's default PM callbacks
Export the default PM callbacks defined for the platform bus type so that they can be used by power domains for suspending and resuming platform devices in the future. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
This commit is contained in:
parent
4d27e9dcff
commit
69c9dd1ecf
2 changed files with 78 additions and 54 deletions
|
@ -667,7 +667,7 @@ static int platform_legacy_resume(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int platform_pm_prepare(struct device *dev)
|
||||
int platform_pm_prepare(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -678,7 +678,7 @@ static int platform_pm_prepare(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void platform_pm_complete(struct device *dev)
|
||||
void platform_pm_complete(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
|
||||
|
@ -686,16 +686,11 @@ static void platform_pm_complete(struct device *dev)
|
|||
drv->pm->complete(dev);
|
||||
}
|
||||
|
||||
#else /* !CONFIG_PM_SLEEP */
|
||||
|
||||
#define platform_pm_prepare NULL
|
||||
#define platform_pm_complete NULL
|
||||
|
||||
#endif /* !CONFIG_PM_SLEEP */
|
||||
#endif /* CONFIG_PM_SLEEP */
|
||||
|
||||
#ifdef CONFIG_SUSPEND
|
||||
|
||||
int __weak platform_pm_suspend(struct device *dev)
|
||||
int platform_pm_suspend(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -713,7 +708,7 @@ int __weak platform_pm_suspend(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int __weak platform_pm_suspend_noirq(struct device *dev)
|
||||
int platform_pm_suspend_noirq(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -729,7 +724,7 @@ int __weak platform_pm_suspend_noirq(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int __weak platform_pm_resume(struct device *dev)
|
||||
int platform_pm_resume(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -747,7 +742,7 @@ int __weak platform_pm_resume(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
int __weak platform_pm_resume_noirq(struct device *dev)
|
||||
int platform_pm_resume_noirq(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -763,18 +758,11 @@ int __weak platform_pm_resume_noirq(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
#else /* !CONFIG_SUSPEND */
|
||||
|
||||
#define platform_pm_suspend NULL
|
||||
#define platform_pm_resume NULL
|
||||
#define platform_pm_suspend_noirq NULL
|
||||
#define platform_pm_resume_noirq NULL
|
||||
|
||||
#endif /* !CONFIG_SUSPEND */
|
||||
#endif /* CONFIG_SUSPEND */
|
||||
|
||||
#ifdef CONFIG_HIBERNATE_CALLBACKS
|
||||
|
||||
static int platform_pm_freeze(struct device *dev)
|
||||
int platform_pm_freeze(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -792,7 +780,7 @@ static int platform_pm_freeze(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int platform_pm_freeze_noirq(struct device *dev)
|
||||
int platform_pm_freeze_noirq(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -808,7 +796,7 @@ static int platform_pm_freeze_noirq(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int platform_pm_thaw(struct device *dev)
|
||||
int platform_pm_thaw(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -826,7 +814,7 @@ static int platform_pm_thaw(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int platform_pm_thaw_noirq(struct device *dev)
|
||||
int platform_pm_thaw_noirq(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -842,7 +830,7 @@ static int platform_pm_thaw_noirq(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int platform_pm_poweroff(struct device *dev)
|
||||
int platform_pm_poweroff(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -860,7 +848,7 @@ static int platform_pm_poweroff(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int platform_pm_poweroff_noirq(struct device *dev)
|
||||
int platform_pm_poweroff_noirq(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -876,7 +864,7 @@ static int platform_pm_poweroff_noirq(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int platform_pm_restore(struct device *dev)
|
||||
int platform_pm_restore(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -894,7 +882,7 @@ static int platform_pm_restore(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static int platform_pm_restore_noirq(struct device *dev)
|
||||
int platform_pm_restore_noirq(struct device *dev)
|
||||
{
|
||||
struct device_driver *drv = dev->driver;
|
||||
int ret = 0;
|
||||
|
@ -910,18 +898,7 @@ static int platform_pm_restore_noirq(struct device *dev)
|
|||
return ret;
|
||||
}
|
||||
|
||||
#else /* !CONFIG_HIBERNATE_CALLBACKS */
|
||||
|
||||
#define platform_pm_freeze NULL
|
||||
#define platform_pm_thaw NULL
|
||||
#define platform_pm_poweroff NULL
|
||||
#define platform_pm_restore NULL
|
||||
#define platform_pm_freeze_noirq NULL
|
||||
#define platform_pm_thaw_noirq NULL
|
||||
#define platform_pm_poweroff_noirq NULL
|
||||
#define platform_pm_restore_noirq NULL
|
||||
|
||||
#endif /* !CONFIG_HIBERNATE_CALLBACKS */
|
||||
#endif /* CONFIG_HIBERNATE_CALLBACKS */
|
||||
|
||||
#ifdef CONFIG_PM_RUNTIME
|
||||
|
||||
|
@ -949,23 +926,10 @@ int __weak platform_pm_runtime_idle(struct device *dev)
|
|||
#endif /* !CONFIG_PM_RUNTIME */
|
||||
|
||||
static const struct dev_pm_ops platform_dev_pm_ops = {
|
||||
.prepare = platform_pm_prepare,
|
||||
.complete = platform_pm_complete,
|
||||
.suspend = platform_pm_suspend,
|
||||
.resume = platform_pm_resume,
|
||||
.freeze = platform_pm_freeze,
|
||||
.thaw = platform_pm_thaw,
|
||||
.poweroff = platform_pm_poweroff,
|
||||
.restore = platform_pm_restore,
|
||||
.suspend_noirq = platform_pm_suspend_noirq,
|
||||
.resume_noirq = platform_pm_resume_noirq,
|
||||
.freeze_noirq = platform_pm_freeze_noirq,
|
||||
.thaw_noirq = platform_pm_thaw_noirq,
|
||||
.poweroff_noirq = platform_pm_poweroff_noirq,
|
||||
.restore_noirq = platform_pm_restore_noirq,
|
||||
.runtime_suspend = platform_pm_runtime_suspend,
|
||||
.runtime_resume = platform_pm_runtime_resume,
|
||||
.runtime_idle = platform_pm_runtime_idle,
|
||||
USE_PLATFORM_PM_SLEEP_OPS
|
||||
};
|
||||
|
||||
struct bus_type platform_bus_type = {
|
||||
|
|
|
@ -205,4 +205,64 @@ static inline char *early_platform_driver_setup_func(void) \
|
|||
}
|
||||
#endif /* MODULE */
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
extern int platform_pm_prepare(struct device *dev);
|
||||
extern void platform_pm_complete(struct device *dev);
|
||||
#else
|
||||
#define platform_pm_prepare NULL
|
||||
#define platform_pm_complete NULL
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SUSPEND
|
||||
extern int platform_pm_suspend(struct device *dev);
|
||||
extern int platform_pm_suspend_noirq(struct device *dev);
|
||||
extern int platform_pm_resume(struct device *dev);
|
||||
extern int platform_pm_resume_noirq(struct device *dev);
|
||||
#else
|
||||
#define platform_pm_suspend NULL
|
||||
#define platform_pm_resume NULL
|
||||
#define platform_pm_suspend_noirq NULL
|
||||
#define platform_pm_resume_noirq NULL
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HIBERNATE_CALLBACKS
|
||||
extern int platform_pm_freeze(struct device *dev);
|
||||
extern int platform_pm_freeze_noirq(struct device *dev);
|
||||
extern int platform_pm_thaw(struct device *dev);
|
||||
extern int platform_pm_thaw_noirq(struct device *dev);
|
||||
extern int platform_pm_poweroff(struct device *dev);
|
||||
extern int platform_pm_poweroff_noirq(struct device *dev);
|
||||
extern int platform_pm_restore(struct device *dev);
|
||||
extern int platform_pm_restore_noirq(struct device *dev);
|
||||
#else
|
||||
#define platform_pm_freeze NULL
|
||||
#define platform_pm_thaw NULL
|
||||
#define platform_pm_poweroff NULL
|
||||
#define platform_pm_restore NULL
|
||||
#define platform_pm_freeze_noirq NULL
|
||||
#define platform_pm_thaw_noirq NULL
|
||||
#define platform_pm_poweroff_noirq NULL
|
||||
#define platform_pm_restore_noirq NULL
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
#define USE_PLATFORM_PM_SLEEP_OPS \
|
||||
.prepare = platform_pm_prepare, \
|
||||
.complete = platform_pm_complete, \
|
||||
.suspend = platform_pm_suspend, \
|
||||
.resume = platform_pm_resume, \
|
||||
.freeze = platform_pm_freeze, \
|
||||
.thaw = platform_pm_thaw, \
|
||||
.poweroff = platform_pm_poweroff, \
|
||||
.restore = platform_pm_restore, \
|
||||
.suspend_noirq = platform_pm_suspend_noirq, \
|
||||
.resume_noirq = platform_pm_resume_noirq, \
|
||||
.freeze_noirq = platform_pm_freeze_noirq, \
|
||||
.thaw_noirq = platform_pm_thaw_noirq, \
|
||||
.poweroff_noirq = platform_pm_poweroff_noirq, \
|
||||
.restore_noirq = platform_pm_restore_noirq,
|
||||
#else
|
||||
#define USE_PLATFORM_PM_SLEEP_OPS
|
||||
#endif
|
||||
|
||||
#endif /* _PLATFORM_DEVICE_H_ */
|
||||
|
|
Loading…
Reference in a new issue