* [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 14:34 ` Daniel Lezcano 0 siblings, 0 replies; 13+ messages in thread From: Daniel Lezcano @ 2015-03-17 14:34 UTC (permalink / raw) To: linux-arm-kernel The default idle driver uses one state with the WFI instruction. The default idle routine invokes WFI when no cpuidle driver is present. The default cpuidle driver is pointless and does not give more than the default idle routine and moreover it pulls all the mathematics tied with the cpuidle governor for nothing, hence consuming more energy. Remove the default driver, the related code and register the driver directly. [compiled only - no board - no test] Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> --- arch/arm/mach-shmobile/common.h | 3 --- arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- arch/arm/mach-shmobile/pm-sh7372.c | 2 +- 3 files changed, 1 insertion(+), 41 deletions(-) diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h index 309025e..29b3088 100644 --- a/arch/arm/mach-shmobile/common.h +++ b/arch/arm/mach-shmobile/common.h @@ -23,8 +23,6 @@ struct clk; extern int shmobile_clk_init(void); extern void shmobile_handle_irq_intc(struct pt_regs *); extern struct platform_suspend_ops shmobile_suspend_ops; -struct cpuidle_driver; -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); #ifdef CONFIG_SUSPEND int shmobile_suspend_init(void); @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; static inline void __init shmobile_init_late(void) { shmobile_suspend_init(); - shmobile_cpuidle_init(); shmobile_cpufreq_init(); } diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c index 0afeb5c..e69de29 100644 --- a/arch/arm/mach-shmobile/cpuidle.c +++ b/arch/arm/mach-shmobile/cpuidle.c @@ -1,37 +0,0 @@ -/* - * CPUIdle support code for SH-Mobile ARM - * - * Copyright (C) 2011 Magnus Damm - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ - -#include <linux/pm.h> -#include <linux/cpuidle.h> -#include <linux/suspend.h> -#include <linux/module.h> -#include <linux/err.h> -#include <asm/cpuidle.h> -#include <asm/io.h> - -static struct cpuidle_driver shmobile_cpuidle_default_driver = { - .name = "shmobile_cpuidle", - .owner = THIS_MODULE, - .states[0] = ARM_CPUIDLE_WFI_STATE, - .safe_state_index = 0, /* C1 */ - .state_count = 1, -}; - -static struct cpuidle_driver *cpuidle_drv = &shmobile_cpuidle_default_driver; - -void __init shmobile_cpuidle_set_driver(struct cpuidle_driver *drv) -{ - cpuidle_drv = drv; -} - -int __init shmobile_cpuidle_init(void) -{ - return cpuidle_register(cpuidle_drv, NULL); -} diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c index c0293ae..9f19052 100644 --- a/arch/arm/mach-shmobile/pm-sh7372.c +++ b/arch/arm/mach-shmobile/pm-sh7372.c @@ -462,7 +462,7 @@ static struct cpuidle_driver sh7372_cpuidle_driver = { static void __init sh7372_cpuidle_init(void) { - shmobile_cpuidle_set_driver(&sh7372_cpuidle_driver); + return cpuidle_register(cpuidle_drv, NULL); } #else static void __init sh7372_cpuidle_init(void) {} -- 1.9.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 14:34 ` Daniel Lezcano 0 siblings, 0 replies; 13+ messages in thread From: Daniel Lezcano @ 2015-03-17 14:34 UTC (permalink / raw) To: linux-arm-kernel The default idle driver uses one state with the WFI instruction. The default idle routine invokes WFI when no cpuidle driver is present. The default cpuidle driver is pointless and does not give more than the default idle routine and moreover it pulls all the mathematics tied with the cpuidle governor for nothing, hence consuming more energy. Remove the default driver, the related code and register the driver directly. [compiled only - no board - no test] Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> --- arch/arm/mach-shmobile/common.h | 3 --- arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- arch/arm/mach-shmobile/pm-sh7372.c | 2 +- 3 files changed, 1 insertion(+), 41 deletions(-) diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h index 309025e..29b3088 100644 --- a/arch/arm/mach-shmobile/common.h +++ b/arch/arm/mach-shmobile/common.h @@ -23,8 +23,6 @@ struct clk; extern int shmobile_clk_init(void); extern void shmobile_handle_irq_intc(struct pt_regs *); extern struct platform_suspend_ops shmobile_suspend_ops; -struct cpuidle_driver; -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); #ifdef CONFIG_SUSPEND int shmobile_suspend_init(void); @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; static inline void __init shmobile_init_late(void) { shmobile_suspend_init(); - shmobile_cpuidle_init(); shmobile_cpufreq_init(); } diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c index 0afeb5c..e69de29 100644 --- a/arch/arm/mach-shmobile/cpuidle.c +++ b/arch/arm/mach-shmobile/cpuidle.c @@ -1,37 +0,0 @@ -/* - * CPUIdle support code for SH-Mobile ARM - * - * Copyright (C) 2011 Magnus Damm - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ - -#include <linux/pm.h> -#include <linux/cpuidle.h> -#include <linux/suspend.h> -#include <linux/module.h> -#include <linux/err.h> -#include <asm/cpuidle.h> -#include <asm/io.h> - -static struct cpuidle_driver shmobile_cpuidle_default_driver = { - .name = "shmobile_cpuidle", - .owner = THIS_MODULE, - .states[0] = ARM_CPUIDLE_WFI_STATE, - .safe_state_index = 0, /* C1 */ - .state_count = 1, -}; - -static struct cpuidle_driver *cpuidle_drv = &shmobile_cpuidle_default_driver; - -void __init shmobile_cpuidle_set_driver(struct cpuidle_driver *drv) -{ - cpuidle_drv = drv; -} - -int __init shmobile_cpuidle_init(void) -{ - return cpuidle_register(cpuidle_drv, NULL); -} diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c index c0293ae..9f19052 100644 --- a/arch/arm/mach-shmobile/pm-sh7372.c +++ b/arch/arm/mach-shmobile/pm-sh7372.c @@ -462,7 +462,7 @@ static struct cpuidle_driver sh7372_cpuidle_driver = { static void __init sh7372_cpuidle_init(void) { - shmobile_cpuidle_set_driver(&sh7372_cpuidle_driver); + return cpuidle_register(cpuidle_drv, NULL); } #else static void __init sh7372_cpuidle_init(void) {} -- 1.9.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 14:34 ` Daniel Lezcano 0 siblings, 0 replies; 13+ messages in thread From: Daniel Lezcano @ 2015-03-17 14:34 UTC (permalink / raw) To: horms, magnus.damm; +Cc: linux-pm, linux-arm-kernel, linux-sh, linux-kernel The default idle driver uses one state with the WFI instruction. The default idle routine invokes WFI when no cpuidle driver is present. The default cpuidle driver is pointless and does not give more than the default idle routine and moreover it pulls all the mathematics tied with the cpuidle governor for nothing, hence consuming more energy. Remove the default driver, the related code and register the driver directly. [compiled only - no board - no test] Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> --- arch/arm/mach-shmobile/common.h | 3 --- arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- arch/arm/mach-shmobile/pm-sh7372.c | 2 +- 3 files changed, 1 insertion(+), 41 deletions(-) diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h index 309025e..29b3088 100644 --- a/arch/arm/mach-shmobile/common.h +++ b/arch/arm/mach-shmobile/common.h @@ -23,8 +23,6 @@ struct clk; extern int shmobile_clk_init(void); extern void shmobile_handle_irq_intc(struct pt_regs *); extern struct platform_suspend_ops shmobile_suspend_ops; -struct cpuidle_driver; -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); #ifdef CONFIG_SUSPEND int shmobile_suspend_init(void); @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; static inline void __init shmobile_init_late(void) { shmobile_suspend_init(); - shmobile_cpuidle_init(); shmobile_cpufreq_init(); } diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c index 0afeb5c..e69de29 100644 --- a/arch/arm/mach-shmobile/cpuidle.c +++ b/arch/arm/mach-shmobile/cpuidle.c @@ -1,37 +0,0 @@ -/* - * CPUIdle support code for SH-Mobile ARM - * - * Copyright (C) 2011 Magnus Damm - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ - -#include <linux/pm.h> -#include <linux/cpuidle.h> -#include <linux/suspend.h> -#include <linux/module.h> -#include <linux/err.h> -#include <asm/cpuidle.h> -#include <asm/io.h> - -static struct cpuidle_driver shmobile_cpuidle_default_driver = { - .name = "shmobile_cpuidle", - .owner = THIS_MODULE, - .states[0] = ARM_CPUIDLE_WFI_STATE, - .safe_state_index = 0, /* C1 */ - .state_count = 1, -}; - -static struct cpuidle_driver *cpuidle_drv = &shmobile_cpuidle_default_driver; - -void __init shmobile_cpuidle_set_driver(struct cpuidle_driver *drv) -{ - cpuidle_drv = drv; -} - -int __init shmobile_cpuidle_init(void) -{ - return cpuidle_register(cpuidle_drv, NULL); -} diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c index c0293ae..9f19052 100644 --- a/arch/arm/mach-shmobile/pm-sh7372.c +++ b/arch/arm/mach-shmobile/pm-sh7372.c @@ -462,7 +462,7 @@ static struct cpuidle_driver sh7372_cpuidle_driver = { static void __init sh7372_cpuidle_init(void) { - shmobile_cpuidle_set_driver(&sh7372_cpuidle_driver); + return cpuidle_register(cpuidle_drv, NULL); } #else static void __init sh7372_cpuidle_init(void) {} -- 1.9.1 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver 2015-03-17 14:34 ` Daniel Lezcano (?) (?) @ 2015-03-17 15:06 ` Geert Uytterhoeven -1 siblings, 0 replies; 13+ messages in thread From: Geert Uytterhoeven @ 2015-03-17 15:06 UTC (permalink / raw) To: linux-arm-kernel Hi Daniel, On Tue, Mar 17, 2015 at 3:34 PM, Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > The default idle driver uses one state with the WFI instruction. > The default idle routine invokes WFI when no cpuidle driver is present. > > The default cpuidle driver is pointless and does not give more than the > default idle routine and moreover it pulls all the mathematics tied with > the cpuidle governor for nothing, hence consuming more energy. > > Remove the default driver, the related code and register the driver directly. Thanks for your patch! > [compiled only - no board - no test] > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> > --- > arch/arm/mach-shmobile/common.h | 3 --- > arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- > arch/arm/mach-shmobile/pm-sh7372.c | 2 +- > 3 files changed, 1 insertion(+), 41 deletions(-) > > diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h > index 309025e..29b3088 100644 > --- a/arch/arm/mach-shmobile/common.h > +++ b/arch/arm/mach-shmobile/common.h > @@ -23,8 +23,6 @@ struct clk; > extern int shmobile_clk_init(void); > extern void shmobile_handle_irq_intc(struct pt_regs *); > extern struct platform_suspend_ops shmobile_suspend_ops; > -struct cpuidle_driver; > -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); > > #ifdef CONFIG_SUSPEND > int shmobile_suspend_init(void); > @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; > static inline void __init shmobile_init_late(void) > { > shmobile_suspend_init(); > - shmobile_cpuidle_init(); Please remove the forward declaration and dummy for shmobile_cpuidle_init() above, too. > shmobile_cpufreq_init(); > } > > diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c > index 0afeb5c..e69de29 100644 > --- a/arch/arm/mach-shmobile/cpuidle.c > +++ b/arch/arm/mach-shmobile/cpuidle.c > @@ -1,37 +0,0 @@ If you remove this file, you should remove its entry from arch/arm/mach-shmobile/Makefile, too. (did you use a config with CONFIG_CPU_IDLE=n?). > diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c > index c0293ae..9f19052 100644 > --- a/arch/arm/mach-shmobile/pm-sh7372.c > +++ b/arch/arm/mach-shmobile/pm-sh7372.c Support for sh7372 is scheduled for removal in v4.1, so this will become a no-op. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 15:06 ` Geert Uytterhoeven 0 siblings, 0 replies; 13+ messages in thread From: Geert Uytterhoeven @ 2015-03-17 15:06 UTC (permalink / raw) To: linux-arm-kernel Hi Daniel, On Tue, Mar 17, 2015 at 3:34 PM, Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > The default idle driver uses one state with the WFI instruction. > The default idle routine invokes WFI when no cpuidle driver is present. > > The default cpuidle driver is pointless and does not give more than the > default idle routine and moreover it pulls all the mathematics tied with > the cpuidle governor for nothing, hence consuming more energy. > > Remove the default driver, the related code and register the driver directly. Thanks for your patch! > [compiled only - no board - no test] > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> > --- > arch/arm/mach-shmobile/common.h | 3 --- > arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- > arch/arm/mach-shmobile/pm-sh7372.c | 2 +- > 3 files changed, 1 insertion(+), 41 deletions(-) > > diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h > index 309025e..29b3088 100644 > --- a/arch/arm/mach-shmobile/common.h > +++ b/arch/arm/mach-shmobile/common.h > @@ -23,8 +23,6 @@ struct clk; > extern int shmobile_clk_init(void); > extern void shmobile_handle_irq_intc(struct pt_regs *); > extern struct platform_suspend_ops shmobile_suspend_ops; > -struct cpuidle_driver; > -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); > > #ifdef CONFIG_SUSPEND > int shmobile_suspend_init(void); > @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; > static inline void __init shmobile_init_late(void) > { > shmobile_suspend_init(); > - shmobile_cpuidle_init(); Please remove the forward declaration and dummy for shmobile_cpuidle_init() above, too. > shmobile_cpufreq_init(); > } > > diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c > index 0afeb5c..e69de29 100644 > --- a/arch/arm/mach-shmobile/cpuidle.c > +++ b/arch/arm/mach-shmobile/cpuidle.c > @@ -1,37 +0,0 @@ If you remove this file, you should remove its entry from arch/arm/mach-shmobile/Makefile, too. (did you use a config with CONFIG_CPU_IDLE=n?). > diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c > index c0293ae..9f19052 100644 > --- a/arch/arm/mach-shmobile/pm-sh7372.c > +++ b/arch/arm/mach-shmobile/pm-sh7372.c Support for sh7372 is scheduled for removal in v4.1, so this will become a no-op. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 15:06 ` Geert Uytterhoeven 0 siblings, 0 replies; 13+ messages in thread From: Geert Uytterhoeven @ 2015-03-17 15:06 UTC (permalink / raw) To: Daniel Lezcano Cc: Simon Horman, Magnus Damm, Linux PM list, linux-arm-kernel, Linux-sh list, linux-kernel Hi Daniel, On Tue, Mar 17, 2015 at 3:34 PM, Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > The default idle driver uses one state with the WFI instruction. > The default idle routine invokes WFI when no cpuidle driver is present. > > The default cpuidle driver is pointless and does not give more than the > default idle routine and moreover it pulls all the mathematics tied with > the cpuidle governor for nothing, hence consuming more energy. > > Remove the default driver, the related code and register the driver directly. Thanks for your patch! > [compiled only - no board - no test] > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> > --- > arch/arm/mach-shmobile/common.h | 3 --- > arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- > arch/arm/mach-shmobile/pm-sh7372.c | 2 +- > 3 files changed, 1 insertion(+), 41 deletions(-) > > diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h > index 309025e..29b3088 100644 > --- a/arch/arm/mach-shmobile/common.h > +++ b/arch/arm/mach-shmobile/common.h > @@ -23,8 +23,6 @@ struct clk; > extern int shmobile_clk_init(void); > extern void shmobile_handle_irq_intc(struct pt_regs *); > extern struct platform_suspend_ops shmobile_suspend_ops; > -struct cpuidle_driver; > -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); > > #ifdef CONFIG_SUSPEND > int shmobile_suspend_init(void); > @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; > static inline void __init shmobile_init_late(void) > { > shmobile_suspend_init(); > - shmobile_cpuidle_init(); Please remove the forward declaration and dummy for shmobile_cpuidle_init() above, too. > shmobile_cpufreq_init(); > } > > diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c > index 0afeb5c..e69de29 100644 > --- a/arch/arm/mach-shmobile/cpuidle.c > +++ b/arch/arm/mach-shmobile/cpuidle.c > @@ -1,37 +0,0 @@ If you remove this file, you should remove its entry from arch/arm/mach-shmobile/Makefile, too. (did you use a config with CONFIG_CPU_IDLE=n?). > diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c > index c0293ae..9f19052 100644 > --- a/arch/arm/mach-shmobile/pm-sh7372.c > +++ b/arch/arm/mach-shmobile/pm-sh7372.c Support for sh7372 is scheduled for removal in v4.1, so this will become a no-op. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 15:06 ` Geert Uytterhoeven 0 siblings, 0 replies; 13+ messages in thread From: Geert Uytterhoeven @ 2015-03-17 15:06 UTC (permalink / raw) To: Daniel Lezcano Cc: Simon Horman, Magnus Damm, Linux PM list, linux-arm-kernel, Linux-sh list, linux-kernel Hi Daniel, On Tue, Mar 17, 2015 at 3:34 PM, Daniel Lezcano <daniel.lezcano@linaro.org> wrote: > The default idle driver uses one state with the WFI instruction. > The default idle routine invokes WFI when no cpuidle driver is present. > > The default cpuidle driver is pointless and does not give more than the > default idle routine and moreover it pulls all the mathematics tied with > the cpuidle governor for nothing, hence consuming more energy. > > Remove the default driver, the related code and register the driver directly. Thanks for your patch! > [compiled only - no board - no test] > > Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> > --- > arch/arm/mach-shmobile/common.h | 3 --- > arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- > arch/arm/mach-shmobile/pm-sh7372.c | 2 +- > 3 files changed, 1 insertion(+), 41 deletions(-) > > diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h > index 309025e..29b3088 100644 > --- a/arch/arm/mach-shmobile/common.h > +++ b/arch/arm/mach-shmobile/common.h > @@ -23,8 +23,6 @@ struct clk; > extern int shmobile_clk_init(void); > extern void shmobile_handle_irq_intc(struct pt_regs *); > extern struct platform_suspend_ops shmobile_suspend_ops; > -struct cpuidle_driver; > -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); > > #ifdef CONFIG_SUSPEND > int shmobile_suspend_init(void); > @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; > static inline void __init shmobile_init_late(void) > { > shmobile_suspend_init(); > - shmobile_cpuidle_init(); Please remove the forward declaration and dummy for shmobile_cpuidle_init() above, too. > shmobile_cpufreq_init(); > } > > diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c > index 0afeb5c..e69de29 100644 > --- a/arch/arm/mach-shmobile/cpuidle.c > +++ b/arch/arm/mach-shmobile/cpuidle.c > @@ -1,37 +0,0 @@ If you remove this file, you should remove its entry from arch/arm/mach-shmobile/Makefile, too. (did you use a config with CONFIG_CPU_IDLE=n?). > diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c > index c0293ae..9f19052 100644 > --- a/arch/arm/mach-shmobile/pm-sh7372.c > +++ b/arch/arm/mach-shmobile/pm-sh7372.c Support for sh7372 is scheduled for removal in v4.1, so this will become a no-op. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver 2015-03-17 15:06 ` Geert Uytterhoeven (?) (?) @ 2015-03-17 15:18 ` Daniel Lezcano -1 siblings, 0 replies; 13+ messages in thread From: Daniel Lezcano @ 2015-03-17 15:18 UTC (permalink / raw) To: linux-arm-kernel On 03/17/2015 04:06 PM, Geert Uytterhoeven wrote: > Hi Daniel, > > On Tue, Mar 17, 2015 at 3:34 PM, Daniel Lezcano > <daniel.lezcano@linaro.org> wrote: >> The default idle driver uses one state with the WFI instruction. >> The default idle routine invokes WFI when no cpuidle driver is present. >> >> The default cpuidle driver is pointless and does not give more than the >> default idle routine and moreover it pulls all the mathematics tied with >> the cpuidle governor for nothing, hence consuming more energy. >> >> Remove the default driver, the related code and register the driver directly. > > Thanks for your patch! > >> [compiled only - no board - no test] >> >> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> >> --- >> arch/arm/mach-shmobile/common.h | 3 --- >> arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- >> arch/arm/mach-shmobile/pm-sh7372.c | 2 +- >> 3 files changed, 1 insertion(+), 41 deletions(-) >> >> diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h >> index 309025e..29b3088 100644 >> --- a/arch/arm/mach-shmobile/common.h >> +++ b/arch/arm/mach-shmobile/common.h >> @@ -23,8 +23,6 @@ struct clk; >> extern int shmobile_clk_init(void); >> extern void shmobile_handle_irq_intc(struct pt_regs *); >> extern struct platform_suspend_ops shmobile_suspend_ops; >> -struct cpuidle_driver; >> -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); >> >> #ifdef CONFIG_SUSPEND >> int shmobile_suspend_init(void); >> @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; >> static inline void __init shmobile_init_late(void) >> { >> shmobile_suspend_init(); >> - shmobile_cpuidle_init(); > > Please remove the forward declaration and dummy for shmobile_cpuidle_init() > above, too. Ah, yeah. I thought I did it. >> shmobile_cpufreq_init(); >> } >> >> diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c >> index 0afeb5c..e69de29 100644 >> --- a/arch/arm/mach-shmobile/cpuidle.c >> +++ b/arch/arm/mach-shmobile/cpuidle.c >> @@ -1,37 +0,0 @@ > > If you remove this file, you should remove its entry from > arch/arm/mach-shmobile/Makefile, too. > (did you use a config with CONFIG_CPU_IDLE=n?). Yeah, but I have an empty file still around, this is why it was not catched. Thanks for pointing this. >> diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c >> index c0293ae..9f19052 100644 >> --- a/arch/arm/mach-shmobile/pm-sh7372.c >> +++ b/arch/arm/mach-shmobile/pm-sh7372.c > > Support for sh7372 is scheduled for removal in v4.1, so this will become > a no-op. Cool. So everything will be self contained in this file then. Thanks for the review. -- Daniel -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 15:18 ` Daniel Lezcano 0 siblings, 0 replies; 13+ messages in thread From: Daniel Lezcano @ 2015-03-17 15:18 UTC (permalink / raw) To: linux-arm-kernel On 03/17/2015 04:06 PM, Geert Uytterhoeven wrote: > Hi Daniel, > > On Tue, Mar 17, 2015 at 3:34 PM, Daniel Lezcano > <daniel.lezcano@linaro.org> wrote: >> The default idle driver uses one state with the WFI instruction. >> The default idle routine invokes WFI when no cpuidle driver is present. >> >> The default cpuidle driver is pointless and does not give more than the >> default idle routine and moreover it pulls all the mathematics tied with >> the cpuidle governor for nothing, hence consuming more energy. >> >> Remove the default driver, the related code and register the driver directly. > > Thanks for your patch! > >> [compiled only - no board - no test] >> >> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> >> --- >> arch/arm/mach-shmobile/common.h | 3 --- >> arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- >> arch/arm/mach-shmobile/pm-sh7372.c | 2 +- >> 3 files changed, 1 insertion(+), 41 deletions(-) >> >> diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h >> index 309025e..29b3088 100644 >> --- a/arch/arm/mach-shmobile/common.h >> +++ b/arch/arm/mach-shmobile/common.h >> @@ -23,8 +23,6 @@ struct clk; >> extern int shmobile_clk_init(void); >> extern void shmobile_handle_irq_intc(struct pt_regs *); >> extern struct platform_suspend_ops shmobile_suspend_ops; >> -struct cpuidle_driver; >> -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); >> >> #ifdef CONFIG_SUSPEND >> int shmobile_suspend_init(void); >> @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; >> static inline void __init shmobile_init_late(void) >> { >> shmobile_suspend_init(); >> - shmobile_cpuidle_init(); > > Please remove the forward declaration and dummy for shmobile_cpuidle_init() > above, too. Ah, yeah. I thought I did it. >> shmobile_cpufreq_init(); >> } >> >> diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c >> index 0afeb5c..e69de29 100644 >> --- a/arch/arm/mach-shmobile/cpuidle.c >> +++ b/arch/arm/mach-shmobile/cpuidle.c >> @@ -1,37 +0,0 @@ > > If you remove this file, you should remove its entry from > arch/arm/mach-shmobile/Makefile, too. > (did you use a config with CONFIG_CPU_IDLE=n?). Yeah, but I have an empty file still around, this is why it was not catched. Thanks for pointing this. >> diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c >> index c0293ae..9f19052 100644 >> --- a/arch/arm/mach-shmobile/pm-sh7372.c >> +++ b/arch/arm/mach-shmobile/pm-sh7372.c > > Support for sh7372 is scheduled for removal in v4.1, so this will become > a no-op. Cool. So everything will be self contained in this file then. Thanks for the review. -- Daniel -- <http://www.linaro.org/> Linaro.org ? Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 15:18 ` Daniel Lezcano 0 siblings, 0 replies; 13+ messages in thread From: Daniel Lezcano @ 2015-03-17 15:18 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Simon Horman, Magnus Damm, Linux PM list, linux-arm-kernel, Linux-sh list, linux-kernel On 03/17/2015 04:06 PM, Geert Uytterhoeven wrote: > Hi Daniel, > > On Tue, Mar 17, 2015 at 3:34 PM, Daniel Lezcano > <daniel.lezcano@linaro.org> wrote: >> The default idle driver uses one state with the WFI instruction. >> The default idle routine invokes WFI when no cpuidle driver is present. >> >> The default cpuidle driver is pointless and does not give more than the >> default idle routine and moreover it pulls all the mathematics tied with >> the cpuidle governor for nothing, hence consuming more energy. >> >> Remove the default driver, the related code and register the driver directly. > > Thanks for your patch! > >> [compiled only - no board - no test] >> >> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> >> --- >> arch/arm/mach-shmobile/common.h | 3 --- >> arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- >> arch/arm/mach-shmobile/pm-sh7372.c | 2 +- >> 3 files changed, 1 insertion(+), 41 deletions(-) >> >> diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h >> index 309025e..29b3088 100644 >> --- a/arch/arm/mach-shmobile/common.h >> +++ b/arch/arm/mach-shmobile/common.h >> @@ -23,8 +23,6 @@ struct clk; >> extern int shmobile_clk_init(void); >> extern void shmobile_handle_irq_intc(struct pt_regs *); >> extern struct platform_suspend_ops shmobile_suspend_ops; >> -struct cpuidle_driver; >> -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); >> >> #ifdef CONFIG_SUSPEND >> int shmobile_suspend_init(void); >> @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; >> static inline void __init shmobile_init_late(void) >> { >> shmobile_suspend_init(); >> - shmobile_cpuidle_init(); > > Please remove the forward declaration and dummy for shmobile_cpuidle_init() > above, too. Ah, yeah. I thought I did it. >> shmobile_cpufreq_init(); >> } >> >> diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c >> index 0afeb5c..e69de29 100644 >> --- a/arch/arm/mach-shmobile/cpuidle.c >> +++ b/arch/arm/mach-shmobile/cpuidle.c >> @@ -1,37 +0,0 @@ > > If you remove this file, you should remove its entry from > arch/arm/mach-shmobile/Makefile, too. > (did you use a config with CONFIG_CPU_IDLE=n?). Yeah, but I have an empty file still around, this is why it was not catched. Thanks for pointing this. >> diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c >> index c0293ae..9f19052 100644 >> --- a/arch/arm/mach-shmobile/pm-sh7372.c >> +++ b/arch/arm/mach-shmobile/pm-sh7372.c > > Support for sh7372 is scheduled for removal in v4.1, so this will become > a no-op. Cool. So everything will be self contained in this file then. Thanks for the review. -- Daniel -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-17 15:18 ` Daniel Lezcano 0 siblings, 0 replies; 13+ messages in thread From: Daniel Lezcano @ 2015-03-17 15:18 UTC (permalink / raw) To: Geert Uytterhoeven Cc: Simon Horman, Magnus Damm, Linux PM list, linux-arm-kernel, Linux-sh list, linux-kernel On 03/17/2015 04:06 PM, Geert Uytterhoeven wrote: > Hi Daniel, > > On Tue, Mar 17, 2015 at 3:34 PM, Daniel Lezcano > <daniel.lezcano@linaro.org> wrote: >> The default idle driver uses one state with the WFI instruction. >> The default idle routine invokes WFI when no cpuidle driver is present. >> >> The default cpuidle driver is pointless and does not give more than the >> default idle routine and moreover it pulls all the mathematics tied with >> the cpuidle governor for nothing, hence consuming more energy. >> >> Remove the default driver, the related code and register the driver directly. > > Thanks for your patch! > >> [compiled only - no board - no test] >> >> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> >> --- >> arch/arm/mach-shmobile/common.h | 3 --- >> arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- >> arch/arm/mach-shmobile/pm-sh7372.c | 2 +- >> 3 files changed, 1 insertion(+), 41 deletions(-) >> >> diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h >> index 309025e..29b3088 100644 >> --- a/arch/arm/mach-shmobile/common.h >> +++ b/arch/arm/mach-shmobile/common.h >> @@ -23,8 +23,6 @@ struct clk; >> extern int shmobile_clk_init(void); >> extern void shmobile_handle_irq_intc(struct pt_regs *); >> extern struct platform_suspend_ops shmobile_suspend_ops; >> -struct cpuidle_driver; >> -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); >> >> #ifdef CONFIG_SUSPEND >> int shmobile_suspend_init(void); >> @@ -51,7 +49,6 @@ extern void __iomem *shmobile_scu_base; >> static inline void __init shmobile_init_late(void) >> { >> shmobile_suspend_init(); >> - shmobile_cpuidle_init(); > > Please remove the forward declaration and dummy for shmobile_cpuidle_init() > above, too. Ah, yeah. I thought I did it. >> shmobile_cpufreq_init(); >> } >> >> diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c >> index 0afeb5c..e69de29 100644 >> --- a/arch/arm/mach-shmobile/cpuidle.c >> +++ b/arch/arm/mach-shmobile/cpuidle.c >> @@ -1,37 +0,0 @@ > > If you remove this file, you should remove its entry from > arch/arm/mach-shmobile/Makefile, too. > (did you use a config with CONFIG_CPU_IDLE=n?). Yeah, but I have an empty file still around, this is why it was not catched. Thanks for pointing this. >> diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c >> index c0293ae..9f19052 100644 >> --- a/arch/arm/mach-shmobile/pm-sh7372.c >> +++ b/arch/arm/mach-shmobile/pm-sh7372.c > > Support for sh7372 is scheduled for removal in v4.1, so this will become > a no-op. Cool. So everything will be self contained in this file then. Thanks for the review. -- Daniel -- <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog ^ permalink raw reply [flat|nested] 13+ messages in thread
* [GIT PULL] Third Round of Renesas ARM Based SoC Cleanup for v4.1 @ 2015-03-25 0:43 Simon Horman 2015-03-25 0:43 ` Simon Horman 0 siblings, 1 reply; 13+ messages in thread From: Simon Horman @ 2015-03-25 0:43 UTC (permalink / raw) To: linux-arm-kernel Hi Olof, Hi Kevin, Hi Arnd, Please consider these third round of Renesas ARM based SoC cleanup for v4.1. This pull requests has minor conflict with "Renesas ARM Based SoC sh7372 SoC Removal Updates for v4.1", tagged as renesas-sh7372-soc-removal-for-v4.1, which you have already pulled. The solution is to remove arch/arm/mach-shmobile/pm-sh7372.c. The following changes since commit c517d838eb7d07bbe9507871fab3931deccff539: Linux 4.0-rc1 (2015-02-22 18:21:14 -0800) are available in the git repository at: git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git tags/renesas-soc-cleanup3-for-v4.1 for you to fetch changes up to df67a2b72eb6fa205c0954e3f4f416e282e7412b: ARM: shmobile: cpuidle: Remove the pointless default driver (2015-03-19 11:02:07 +0900) ---------------------------------------------------------------- Third Round of Renesas ARM Based SoC Cleanup for v4.1 * Remove default cpuidle driver, it does not appear to serve any purpose ---------------------------------------------------------------- Daniel Lezcano (1): ARM: shmobile: cpuidle: Remove the pointless default driver arch/arm/mach-shmobile/Makefile | 1 - arch/arm/mach-shmobile/common.h | 9 --------- arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- arch/arm/mach-shmobile/pm-sh7372.c | 2 +- 4 files changed, 1 insertion(+), 48 deletions(-) delete mode 100644 arch/arm/mach-shmobile/cpuidle.c ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver 2015-03-25 0:43 [GIT PULL] Third Round of Renesas ARM Based SoC Cleanup for v4.1 Simon Horman @ 2015-03-25 0:43 ` Simon Horman 0 siblings, 0 replies; 13+ messages in thread From: Simon Horman @ 2015-03-25 0:43 UTC (permalink / raw) To: linux-arm-kernel From: Daniel Lezcano <daniel.lezcano@linaro.org> The default idle driver uses one state with the WFI instruction. The default idle routine invokes WFI when no cpuidle driver is present. The default cpuidle driver is pointless and does not give more than the default idle routine and moreover it pulls all the mathematics tied with the cpuidle governor for nothing, hence consuming more energy. Remove the default driver, the related code and register the driver directly. [compiled only - no board - no test] Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Simon Horman <horms+renesas@verge.net.au> --- arch/arm/mach-shmobile/Makefile | 1 - arch/arm/mach-shmobile/common.h | 9 --------- arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- arch/arm/mach-shmobile/pm-sh7372.c | 2 +- 4 files changed, 1 insertion(+), 48 deletions(-) delete mode 100644 arch/arm/mach-shmobile/cpuidle.c diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile index d53996e..c604296 100644 --- a/arch/arm/mach-shmobile/Makefile +++ b/arch/arm/mach-shmobile/Makefile @@ -46,7 +46,6 @@ smp-$(CONFIG_ARCH_EMEV2) += smp-emev2.o headsmp-scu.o platsmp-scu.o # PM objects obj-$(CONFIG_SUSPEND) += suspend.o -obj-$(CONFIG_CPU_IDLE) += cpuidle.o obj-$(CONFIG_CPU_FREQ) += cpufreq.o obj-$(CONFIG_PM_RCAR) += pm-rcar.o obj-$(CONFIG_PM_RMOBILE) += pm-rmobile.o diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h index 309025e..1dc0971 100644 --- a/arch/arm/mach-shmobile/common.h +++ b/arch/arm/mach-shmobile/common.h @@ -23,8 +23,6 @@ struct clk; extern int shmobile_clk_init(void); extern void shmobile_handle_irq_intc(struct pt_regs *); extern struct platform_suspend_ops shmobile_suspend_ops; -struct cpuidle_driver; -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); #ifdef CONFIG_SUSPEND int shmobile_suspend_init(void); @@ -34,12 +32,6 @@ static inline int shmobile_suspend_init(void) { return 0; } static inline void shmobile_smp_apmu_suspend_init(void) { } #endif -#ifdef CONFIG_CPU_IDLE -int shmobile_cpuidle_init(void); -#else -static inline int shmobile_cpuidle_init(void) { return 0; } -#endif - #ifdef CONFIG_CPU_FREQ int shmobile_cpufreq_init(void); #else @@ -51,7 +43,6 @@ extern void __iomem *shmobile_scu_base; static inline void __init shmobile_init_late(void) { shmobile_suspend_init(); - shmobile_cpuidle_init(); shmobile_cpufreq_init(); } diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c deleted file mode 100644 index 0afeb5c..0000000 --- a/arch/arm/mach-shmobile/cpuidle.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - * CPUIdle support code for SH-Mobile ARM - * - * Copyright (C) 2011 Magnus Damm - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ - -#include <linux/pm.h> -#include <linux/cpuidle.h> -#include <linux/suspend.h> -#include <linux/module.h> -#include <linux/err.h> -#include <asm/cpuidle.h> -#include <asm/io.h> - -static struct cpuidle_driver shmobile_cpuidle_default_driver = { - .name = "shmobile_cpuidle", - .owner = THIS_MODULE, - .states[0] = ARM_CPUIDLE_WFI_STATE, - .safe_state_index = 0, /* C1 */ - .state_count = 1, -}; - -static struct cpuidle_driver *cpuidle_drv = &shmobile_cpuidle_default_driver; - -void __init shmobile_cpuidle_set_driver(struct cpuidle_driver *drv) -{ - cpuidle_drv = drv; -} - -int __init shmobile_cpuidle_init(void) -{ - return cpuidle_register(cpuidle_drv, NULL); -} diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c index c0293ae..9f19052 100644 --- a/arch/arm/mach-shmobile/pm-sh7372.c +++ b/arch/arm/mach-shmobile/pm-sh7372.c @@ -462,7 +462,7 @@ static struct cpuidle_driver sh7372_cpuidle_driver = { static void __init sh7372_cpuidle_init(void) { - shmobile_cpuidle_set_driver(&sh7372_cpuidle_driver); + return cpuidle_register(cpuidle_drv, NULL); } #else static void __init sh7372_cpuidle_init(void) {} -- 2.1.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver @ 2015-03-25 0:43 ` Simon Horman 0 siblings, 0 replies; 13+ messages in thread From: Simon Horman @ 2015-03-25 0:43 UTC (permalink / raw) To: linux-arm-kernel From: Daniel Lezcano <daniel.lezcano@linaro.org> The default idle driver uses one state with the WFI instruction. The default idle routine invokes WFI when no cpuidle driver is present. The default cpuidle driver is pointless and does not give more than the default idle routine and moreover it pulls all the mathematics tied with the cpuidle governor for nothing, hence consuming more energy. Remove the default driver, the related code and register the driver directly. [compiled only - no board - no test] Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org> Signed-off-by: Simon Horman <horms+renesas@verge.net.au> --- arch/arm/mach-shmobile/Makefile | 1 - arch/arm/mach-shmobile/common.h | 9 --------- arch/arm/mach-shmobile/cpuidle.c | 37 ------------------------------------- arch/arm/mach-shmobile/pm-sh7372.c | 2 +- 4 files changed, 1 insertion(+), 48 deletions(-) delete mode 100644 arch/arm/mach-shmobile/cpuidle.c diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile index d53996e..c604296 100644 --- a/arch/arm/mach-shmobile/Makefile +++ b/arch/arm/mach-shmobile/Makefile @@ -46,7 +46,6 @@ smp-$(CONFIG_ARCH_EMEV2) += smp-emev2.o headsmp-scu.o platsmp-scu.o # PM objects obj-$(CONFIG_SUSPEND) += suspend.o -obj-$(CONFIG_CPU_IDLE) += cpuidle.o obj-$(CONFIG_CPU_FREQ) += cpufreq.o obj-$(CONFIG_PM_RCAR) += pm-rcar.o obj-$(CONFIG_PM_RMOBILE) += pm-rmobile.o diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h index 309025e..1dc0971 100644 --- a/arch/arm/mach-shmobile/common.h +++ b/arch/arm/mach-shmobile/common.h @@ -23,8 +23,6 @@ struct clk; extern int shmobile_clk_init(void); extern void shmobile_handle_irq_intc(struct pt_regs *); extern struct platform_suspend_ops shmobile_suspend_ops; -struct cpuidle_driver; -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv); #ifdef CONFIG_SUSPEND int shmobile_suspend_init(void); @@ -34,12 +32,6 @@ static inline int shmobile_suspend_init(void) { return 0; } static inline void shmobile_smp_apmu_suspend_init(void) { } #endif -#ifdef CONFIG_CPU_IDLE -int shmobile_cpuidle_init(void); -#else -static inline int shmobile_cpuidle_init(void) { return 0; } -#endif - #ifdef CONFIG_CPU_FREQ int shmobile_cpufreq_init(void); #else @@ -51,7 +43,6 @@ extern void __iomem *shmobile_scu_base; static inline void __init shmobile_init_late(void) { shmobile_suspend_init(); - shmobile_cpuidle_init(); shmobile_cpufreq_init(); } diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c deleted file mode 100644 index 0afeb5c..0000000 --- a/arch/arm/mach-shmobile/cpuidle.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - * CPUIdle support code for SH-Mobile ARM - * - * Copyright (C) 2011 Magnus Damm - * - * This file is subject to the terms and conditions of the GNU General Public - * License. See the file "COPYING" in the main directory of this archive - * for more details. - */ - -#include <linux/pm.h> -#include <linux/cpuidle.h> -#include <linux/suspend.h> -#include <linux/module.h> -#include <linux/err.h> -#include <asm/cpuidle.h> -#include <asm/io.h> - -static struct cpuidle_driver shmobile_cpuidle_default_driver = { - .name = "shmobile_cpuidle", - .owner = THIS_MODULE, - .states[0] = ARM_CPUIDLE_WFI_STATE, - .safe_state_index = 0, /* C1 */ - .state_count = 1, -}; - -static struct cpuidle_driver *cpuidle_drv = &shmobile_cpuidle_default_driver; - -void __init shmobile_cpuidle_set_driver(struct cpuidle_driver *drv) -{ - cpuidle_drv = drv; -} - -int __init shmobile_cpuidle_init(void) -{ - return cpuidle_register(cpuidle_drv, NULL); -} diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c index c0293ae..9f19052 100644 --- a/arch/arm/mach-shmobile/pm-sh7372.c +++ b/arch/arm/mach-shmobile/pm-sh7372.c @@ -462,7 +462,7 @@ static struct cpuidle_driver sh7372_cpuidle_driver = { static void __init sh7372_cpuidle_init(void) { - shmobile_cpuidle_set_driver(&sh7372_cpuidle_driver); + return cpuidle_register(cpuidle_drv, NULL); } #else static void __init sh7372_cpuidle_init(void) {} -- 2.1.4 ^ permalink raw reply related [flat|nested] 13+ messages in thread
end of thread, other threads:[~2015-03-25 0:43 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2015-03-17 14:34 [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver Daniel Lezcano 2015-03-17 14:34 ` Daniel Lezcano 2015-03-17 14:34 ` Daniel Lezcano 2015-03-17 15:06 ` Geert Uytterhoeven 2015-03-17 15:06 ` Geert Uytterhoeven 2015-03-17 15:06 ` Geert Uytterhoeven 2015-03-17 15:06 ` Geert Uytterhoeven 2015-03-17 15:18 ` Daniel Lezcano 2015-03-17 15:18 ` Daniel Lezcano 2015-03-17 15:18 ` Daniel Lezcano 2015-03-17 15:18 ` Daniel Lezcano 2015-03-25 0:43 [GIT PULL] Third Round of Renesas ARM Based SoC Cleanup for v4.1 Simon Horman 2015-03-25 0:43 ` [PATCH] ARM: shmobile: cpuidle: Remove the pointless default driver Simon Horman 2015-03-25 0:43 ` Simon Horman
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.