aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-shmobile
diff options
context:
space:
mode:
authorDaniel Lezcano <daniel.lezcano@linaro.org>2015-03-17 11:25:12 -0400
committerSimon Horman <horms+renesas@verge.net.au>2015-03-18 22:02:07 -0400
commitdf67a2b72eb6fa205c0954e3f4f416e282e7412b (patch)
treea342fada07ca1c9b27f0396baa63bf2d37a94ba5 /arch/arm/mach-shmobile
parentc517d838eb7d07bbe9507871fab3931deccff539 (diff)
ARM: shmobile: cpuidle: Remove the pointless default driver
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>
Diffstat (limited to 'arch/arm/mach-shmobile')
-rw-r--r--arch/arm/mach-shmobile/Makefile1
-rw-r--r--arch/arm/mach-shmobile/common.h9
-rw-r--r--arch/arm/mach-shmobile/cpuidle.c37
-rw-r--r--arch/arm/mach-shmobile/pm-sh7372.c2
4 files changed, 1 insertions, 48 deletions
diff --git a/arch/arm/mach-shmobile/Makefile b/arch/arm/mach-shmobile/Makefile
index d53996e6da97..c60429652a6a 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
46 46
47# PM objects 47# PM objects
48obj-$(CONFIG_SUSPEND) += suspend.o 48obj-$(CONFIG_SUSPEND) += suspend.o
49obj-$(CONFIG_CPU_IDLE) += cpuidle.o
50obj-$(CONFIG_CPU_FREQ) += cpufreq.o 49obj-$(CONFIG_CPU_FREQ) += cpufreq.o
51obj-$(CONFIG_PM_RCAR) += pm-rcar.o 50obj-$(CONFIG_PM_RCAR) += pm-rcar.o
52obj-$(CONFIG_PM_RMOBILE) += pm-rmobile.o 51obj-$(CONFIG_PM_RMOBILE) += pm-rmobile.o
diff --git a/arch/arm/mach-shmobile/common.h b/arch/arm/mach-shmobile/common.h
index 309025efd4cf..1dc09713f753 100644
--- a/arch/arm/mach-shmobile/common.h
+++ b/arch/arm/mach-shmobile/common.h
@@ -23,8 +23,6 @@ struct clk;
23extern int shmobile_clk_init(void); 23extern int shmobile_clk_init(void);
24extern void shmobile_handle_irq_intc(struct pt_regs *); 24extern void shmobile_handle_irq_intc(struct pt_regs *);
25extern struct platform_suspend_ops shmobile_suspend_ops; 25extern struct platform_suspend_ops shmobile_suspend_ops;
26struct cpuidle_driver;
27extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv);
28 26
29#ifdef CONFIG_SUSPEND 27#ifdef CONFIG_SUSPEND
30int shmobile_suspend_init(void); 28int shmobile_suspend_init(void);
@@ -34,12 +32,6 @@ static inline int shmobile_suspend_init(void) { return 0; }
34static inline void shmobile_smp_apmu_suspend_init(void) { } 32static inline void shmobile_smp_apmu_suspend_init(void) { }
35#endif 33#endif
36 34
37#ifdef CONFIG_CPU_IDLE
38int shmobile_cpuidle_init(void);
39#else
40static inline int shmobile_cpuidle_init(void) { return 0; }
41#endif
42
43#ifdef CONFIG_CPU_FREQ 35#ifdef CONFIG_CPU_FREQ
44int shmobile_cpufreq_init(void); 36int shmobile_cpufreq_init(void);
45#else 37#else
@@ -51,7 +43,6 @@ extern void __iomem *shmobile_scu_base;
51static inline void __init shmobile_init_late(void) 43static inline void __init shmobile_init_late(void)
52{ 44{
53 shmobile_suspend_init(); 45 shmobile_suspend_init();
54 shmobile_cpuidle_init();
55 shmobile_cpufreq_init(); 46 shmobile_cpufreq_init();
56} 47}
57 48
diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c
deleted file mode 100644
index 0afeb5c7061c..000000000000
--- a/arch/arm/mach-shmobile/cpuidle.c
+++ /dev/null
@@ -1,37 +0,0 @@
1/*
2 * CPUIdle support code for SH-Mobile ARM
3 *
4 * Copyright (C) 2011 Magnus Damm
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License. See the file "COPYING" in the main directory of this archive
8 * for more details.
9 */
10
11#include <linux/pm.h>
12#include <linux/cpuidle.h>
13#include <linux/suspend.h>
14#include <linux/module.h>
15#include <linux/err.h>
16#include <asm/cpuidle.h>
17#include <asm/io.h>
18
19static struct cpuidle_driver shmobile_cpuidle_default_driver = {
20 .name = "shmobile_cpuidle",
21 .owner = THIS_MODULE,
22 .states[0] = ARM_CPUIDLE_WFI_STATE,
23 .safe_state_index = 0, /* C1 */
24 .state_count = 1,
25};
26
27static struct cpuidle_driver *cpuidle_drv = &shmobile_cpuidle_default_driver;
28
29void __init shmobile_cpuidle_set_driver(struct cpuidle_driver *drv)
30{
31 cpuidle_drv = drv;
32}
33
34int __init shmobile_cpuidle_init(void)
35{
36 return cpuidle_register(cpuidle_drv, NULL);
37}
diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c
index c0293ae4b013..9f190528a556 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 = {
462 462
463static void __init sh7372_cpuidle_init(void) 463static void __init sh7372_cpuidle_init(void)
464{ 464{
465 shmobile_cpuidle_set_driver(&sh7372_cpuidle_driver); 465 return cpuidle_register(cpuidle_drv, NULL);
466} 466}
467#else 467#else
468static void __init sh7372_cpuidle_init(void) {} 468static void __init sh7372_cpuidle_init(void) {}