diff options
Diffstat (limited to 'drivers/base/platform.c')
| -rw-r--r-- | drivers/base/platform.c | 138 | 
1 files changed, 21 insertions, 117 deletions
diff --git a/drivers/base/platform.c b/drivers/base/platform.c index 7d4bdaf557c..1c291af637b 100644 --- a/drivers/base/platform.c +++ b/drivers/base/platform.c @@ -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,62 +898,13 @@ 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 */ - -#ifdef CONFIG_PM_RUNTIME - -int __weak platform_pm_runtime_suspend(struct device *dev) -{ -	return pm_generic_runtime_suspend(dev); -}; - -int __weak platform_pm_runtime_resume(struct device *dev) -{ -	return pm_generic_runtime_resume(dev); -}; - -int __weak platform_pm_runtime_idle(struct device *dev) -{ -	return pm_generic_runtime_idle(dev); -}; - -#else /* !CONFIG_PM_RUNTIME */ - -#define platform_pm_runtime_suspend NULL -#define platform_pm_runtime_resume NULL -#define platform_pm_runtime_idle NULL - -#endif /* !CONFIG_PM_RUNTIME */ +#endif /* CONFIG_HIBERNATE_CALLBACKS */  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, +	.runtime_suspend = pm_generic_runtime_suspend, +	.runtime_resume = pm_generic_runtime_resume, +	.runtime_idle = pm_generic_runtime_idle, +	USE_PLATFORM_PM_SLEEP_OPS  };  struct bus_type platform_bus_type = { @@ -977,41 +916,6 @@ struct bus_type platform_bus_type = {  };  EXPORT_SYMBOL_GPL(platform_bus_type); -/** - * platform_bus_get_pm_ops() - return pointer to busses dev_pm_ops - * - * This function can be used by platform code to get the current - * set of dev_pm_ops functions used by the platform_bus_type. - */ -const struct dev_pm_ops * __init platform_bus_get_pm_ops(void) -{ -	return platform_bus_type.pm; -} - -/** - * platform_bus_set_pm_ops() - update dev_pm_ops for the platform_bus_type - * - * @pm: pointer to new dev_pm_ops struct to be used for platform_bus_type - * - * Platform code can override the dev_pm_ops methods of - * platform_bus_type by using this function.  It is expected that - * platform code will first do a platform_bus_get_pm_ops(), then - * kmemdup it, then customize selected methods and pass a pointer to - * the new struct dev_pm_ops to this function. - * - * Since platform-specific code is customizing methods for *all* - * devices (not just platform-specific devices) it is expected that - * any custom overrides of these functions will keep existing behavior - * and simply extend it.  For example, any customization of the - * runtime PM methods should continue to call the pm_generic_* - * functions as the default ones do in addition to the - * platform-specific behavior. - */ -void __init platform_bus_set_pm_ops(const struct dev_pm_ops *pm) -{ -	platform_bus_type.pm = pm; -} -  int __init platform_bus_init(void)  {  	int error;  |