Message ID | 201103270058.41632.rjw@sisk.pl (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
On Tue, Mar 29, 2011 at 4:43 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote: > On Monday, March 28, 2011, Magnus Damm wrote: >> On Sun, Mar 27, 2011 at 8:58 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote: >> > From: Rafael J. Wysocki <rjw@sisk.pl> >> > >> > Remove the __weak definitions of platform bus type runtime PM >> > callbacks, make platform_dev_pm_ops point to the generic routines >> > as appropriate and allow architectures using platform_dev_pm_ops to >> > replace the runtime PM callbacks in that structure with their own >> > set. >> > >> > Convert architectures providing its own definitions of the platform >> > runtime PM callbacks to use the new mechanism. >> > >> > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> >> >> Looking good, thanks Rafael. Tested on the sh7372 Mackerel board. >> >> Acked-by: Magnus Damm <damm@opensource.se> > > Thanks, I'll put it into my for-2.6.40 queue as soon as 2.6.39-rc1 is out. Thanks. By the way, I think the symbols should be converted to static as well. Do you prefer to make a V2 or shall we do that incrementally? / magnus -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tuesday, April 05, 2011, Magnus Damm wrote: > On Tue, Mar 29, 2011 at 4:43 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote: > > On Monday, March 28, 2011, Magnus Damm wrote: > >> On Sun, Mar 27, 2011 at 8:58 AM, Rafael J. Wysocki <rjw@sisk.pl> wrote: > >> > From: Rafael J. Wysocki <rjw@sisk.pl> > >> > > >> > Remove the __weak definitions of platform bus type runtime PM > >> > callbacks, make platform_dev_pm_ops point to the generic routines > >> > as appropriate and allow architectures using platform_dev_pm_ops to > >> > replace the runtime PM callbacks in that structure with their own > >> > set. > >> > > >> > Convert architectures providing its own definitions of the platform > >> > runtime PM callbacks to use the new mechanism. > >> > > >> > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> > >> > >> Looking good, thanks Rafael. Tested on the sh7372 Mackerel board. > >> > >> Acked-by: Magnus Damm <damm@opensource.se> > > > > Thanks, I'll put it into my for-2.6.40 queue as soon as 2.6.39-rc1 is out. > > Thanks. By the way, I think the symbols should be converted to static > as well. Do you prefer to make a V2 or shall we do that incrementally? I can fold that changed into the patch as I haven't pushed it yet. Thanks, Rafael -- To unsubscribe from this list: send the line "unsubscribe linux-sh" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: linux-2.6/drivers/base/platform.c =================================================================== --- linux-2.6.orig/drivers/base/platform.c +++ linux-2.6/drivers/base/platform.c @@ -922,32 +922,7 @@ static int platform_pm_restore_noirq(str #endif /* !CONFIG_HIBERNATION */ -#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 */ - -static const struct dev_pm_ops platform_dev_pm_ops = { +static struct dev_pm_ops platform_dev_pm_ops = { .prepare = platform_pm_prepare, .complete = platform_pm_complete, .suspend = platform_pm_suspend, @@ -962,9 +937,9 @@ static const struct dev_pm_ops platform_ .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, + SET_RUNTIME_PM_OPS(pm_generic_runtime_suspend, + pm_generic_runtime_resume, + pm_generic_runtime_idle) }; struct bus_type platform_bus_type = { @@ -976,6 +951,16 @@ struct bus_type platform_bus_type = { }; EXPORT_SYMBOL_GPL(platform_bus_type); +void platform_set_runtime_pm_ops(int (*suspend)(struct device *dev), + int (*resume)(struct device *dev), + int (*idle)(struct device *dev)) +{ + platform_dev_pm_ops.runtime_suspend = suspend; + platform_dev_pm_ops.runtime_resume = resume; + platform_dev_pm_ops.runtime_idle = idle; +} +EXPORT_SYMBOL_GPL(platform_set_runtime_pm_ops); + /** * platform_bus_get_pm_ops() - return pointer to busses dev_pm_ops * Index: linux-2.6/include/linux/platform_device.h =================================================================== --- linux-2.6.orig/include/linux/platform_device.h +++ linux-2.6/include/linux/platform_device.h @@ -200,4 +200,8 @@ static inline char *early_platform_drive } #endif /* MODULE */ +extern void platform_set_runtime_pm_ops(int (*suspend)(struct device *dev), + int (*resume)(struct device *dev), + int (*idle)(struct device *dev)); + #endif /* _PLATFORM_DEVICE_H_ */ Index: linux-2.6/arch/arm/mach-shmobile/pm_runtime.c =================================================================== --- linux-2.6.orig/arch/arm/mach-shmobile/pm_runtime.c +++ linux-2.6/arch/arm/mach-shmobile/pm_runtime.c @@ -163,6 +163,9 @@ static struct notifier_block platform_bu static int __init sh_pm_runtime_init(void) { + platform_set_runtime_pm_ops(platform_pm_runtime_suspend, + platform_pm_runtime_resume, + platform_pm_runtime_idle); bus_register_notifier(&platform_bus_type, &platform_bus_notifier); return 0; } Index: linux-2.6/arch/sh/kernel/cpu/shmobile/pm_runtime.c =================================================================== --- linux-2.6.orig/arch/sh/kernel/cpu/shmobile/pm_runtime.c +++ linux-2.6/arch/sh/kernel/cpu/shmobile/pm_runtime.c @@ -302,6 +302,9 @@ static int __init sh_pm_runtime_init(voi { INIT_WORK(&hwblk_work, platform_pm_runtime_work); + platform_set_runtime_pm_ops(platform_pm_runtime_suspend, + platform_pm_runtime_resume, + platform_pm_runtime_idle); bus_register_notifier(&platform_bus_type, &platform_bus_notifier); return 0; }