Commit df67a2b72eb6fa205c0954e3f4f416e282e7412b

Authored by Daniel Lezcano
Committed by Simon Horman
1 parent c517d838eb

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>

Showing 4 changed files with 1 additions and 48 deletions Side-by-side Diff

arch/arm/mach-shmobile/Makefile
... ... @@ -46,7 +46,6 @@
46 46  
47 47 # PM objects
48 48 obj-$(CONFIG_SUSPEND) += suspend.o
49   -obj-$(CONFIG_CPU_IDLE) += cpuidle.o
50 49 obj-$(CONFIG_CPU_FREQ) += cpufreq.o
51 50 obj-$(CONFIG_PM_RCAR) += pm-rcar.o
52 51 obj-$(CONFIG_PM_RMOBILE) += pm-rmobile.o
arch/arm/mach-shmobile/common.h
... ... @@ -23,8 +23,6 @@
23 23 extern int shmobile_clk_init(void);
24 24 extern void shmobile_handle_irq_intc(struct pt_regs *);
25 25 extern struct platform_suspend_ops shmobile_suspend_ops;
26   -struct cpuidle_driver;
27   -extern void shmobile_cpuidle_set_driver(struct cpuidle_driver *drv);
28 26  
29 27 #ifdef CONFIG_SUSPEND
30 28 int shmobile_suspend_init(void);
... ... @@ -34,12 +32,6 @@
34 32 static inline void shmobile_smp_apmu_suspend_init(void) { }
35 33 #endif
36 34  
37   -#ifdef CONFIG_CPU_IDLE
38   -int shmobile_cpuidle_init(void);
39   -#else
40   -static inline int shmobile_cpuidle_init(void) { return 0; }
41   -#endif
42   -
43 35 #ifdef CONFIG_CPU_FREQ
44 36 int shmobile_cpufreq_init(void);
45 37 #else
... ... @@ -51,7 +43,6 @@
51 43 static inline void __init shmobile_init_late(void)
52 44 {
53 45 shmobile_suspend_init();
54   - shmobile_cpuidle_init();
55 46 shmobile_cpufreq_init();
56 47 }
57 48  
arch/arm/mach-shmobile/cpuidle.c
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   -
19   -static 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   -
27   -static struct cpuidle_driver *cpuidle_drv = &shmobile_cpuidle_default_driver;
28   -
29   -void __init shmobile_cpuidle_set_driver(struct cpuidle_driver *drv)
30   -{
31   - cpuidle_drv = drv;
32   -}
33   -
34   -int __init shmobile_cpuidle_init(void)
35   -{
36   - return cpuidle_register(cpuidle_drv, NULL);
37   -}
arch/arm/mach-shmobile/pm-sh7372.c
... ... @@ -462,7 +462,7 @@
462 462  
463 463 static 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 467 #else
468 468 static void __init sh7372_cpuidle_init(void) {}