All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
@ 2015-03-17 15:25 ` Daniel Lezcano
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Lezcano @ 2015-03-17 15:25 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/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) {}
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
@ 2015-03-17 15:25 ` Daniel Lezcano
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Lezcano @ 2015-03-17 15:25 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/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) {}
-- 
1.9.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
@ 2015-03-17 15:25 ` Daniel Lezcano
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Lezcano @ 2015-03-17 15:25 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/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) {}
-- 
1.9.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
  2015-03-17 15:25 ` Daniel Lezcano
  (?)
@ 2015-03-17 15:26   ` Daniel Lezcano
  -1 siblings, 0 replies; 9+ messages in thread
From: Daniel Lezcano @ 2015-03-17 15:26 UTC (permalink / raw)
  To: linux-arm-kernel


Sorry Geert, I forget to Cc you.

On 03/17/2015 04:25 PM, Daniel Lezcano 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.
>
> [compiled only - no board - no test]
>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>   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) {}
>


-- 
  <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] 9+ messages in thread

* Re: [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
@ 2015-03-17 15:26   ` Daniel Lezcano
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Lezcano @ 2015-03-17 15:26 UTC (permalink / raw)
  To: geert Uytterhoeven
  Cc: horms, magnus.damm, linux-pm, linux-arm-kernel, linux-sh, linux-kernel


Sorry Geert, I forget to Cc you.

On 03/17/2015 04:25 PM, Daniel Lezcano 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.
>
> [compiled only - no board - no test]
>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>   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) {}
>


-- 
  <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] 9+ messages in thread

* [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
@ 2015-03-17 15:26   ` Daniel Lezcano
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Lezcano @ 2015-03-17 15:26 UTC (permalink / raw)
  To: linux-arm-kernel


Sorry Geert, I forget to Cc you.

On 03/17/2015 04:25 PM, Daniel Lezcano 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.
>
> [compiled only - no board - no test]
>
> Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
> ---
>   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) {}
>


-- 
  <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] 9+ messages in thread

* Re: [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
  2015-03-17 15:26   ` Daniel Lezcano
  (?)
@ 2015-03-19  2:05     ` Simon Horman
  -1 siblings, 0 replies; 9+ messages in thread
From: Simon Horman @ 2015-03-19  2:05 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Mar 17, 2015 at 04:26:50PM +0100, Daniel Lezcano wrote:
> 
> Sorry Geert, I forget to Cc you.
> 
> On 03/17/2015 04:25 PM, Daniel Lezcano 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.
> >
> >[compiled only - no board - no test]
> >
> >Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

Thanks Daniel,

I have queued this up for v4.1.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
@ 2015-03-19  2:05     ` Simon Horman
  0 siblings, 0 replies; 9+ messages in thread
From: Simon Horman @ 2015-03-19  2:05 UTC (permalink / raw)
  To: Daniel Lezcano
  Cc: geert Uytterhoeven, magnus.damm, linux-pm, linux-arm-kernel,
	linux-sh, linux-kernel

On Tue, Mar 17, 2015 at 04:26:50PM +0100, Daniel Lezcano wrote:
> 
> Sorry Geert, I forget to Cc you.
> 
> On 03/17/2015 04:25 PM, Daniel Lezcano 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.
> >
> >[compiled only - no board - no test]
> >
> >Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

Thanks Daniel,

I have queued this up for v4.1.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver
@ 2015-03-19  2:05     ` Simon Horman
  0 siblings, 0 replies; 9+ messages in thread
From: Simon Horman @ 2015-03-19  2:05 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Mar 17, 2015 at 04:26:50PM +0100, Daniel Lezcano wrote:
> 
> Sorry Geert, I forget to Cc you.
> 
> On 03/17/2015 04:25 PM, Daniel Lezcano 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.
> >
> >[compiled only - no board - no test]
> >
> >Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>

Thanks Daniel,

I have queued this up for v4.1.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-03-19  2:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-17 15:25 [PATCH V2] ARM: shmobile: cpuidle: Remove the pointless default driver Daniel Lezcano
2015-03-17 15:25 ` Daniel Lezcano
2015-03-17 15:25 ` Daniel Lezcano
2015-03-17 15:26 ` Daniel Lezcano
2015-03-17 15:26   ` Daniel Lezcano
2015-03-17 15:26   ` Daniel Lezcano
2015-03-19  2:05   ` Simon Horman
2015-03-19  2:05     ` Simon Horman
2015-03-19  2:05     ` 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.