diff options
-rw-r--r-- | arch/arm/mach-tegra/cpuidle-tegra20.c | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/arch/arm/mach-tegra/cpuidle-tegra20.c b/arch/arm/mach-tegra/cpuidle-tegra20.c index 825ced4f7a40..1ad1a67890eb 100644 --- a/arch/arm/mach-tegra/cpuidle-tegra20.c +++ b/arch/arm/mach-tegra/cpuidle-tegra20.c | |||
@@ -43,28 +43,32 @@ static atomic_t abort_barrier; | |||
43 | static int tegra20_idle_lp2_coupled(struct cpuidle_device *dev, | 43 | static int tegra20_idle_lp2_coupled(struct cpuidle_device *dev, |
44 | struct cpuidle_driver *drv, | 44 | struct cpuidle_driver *drv, |
45 | int index); | 45 | int index); |
46 | #define TEGRA20_MAX_STATES 2 | ||
47 | #else | ||
48 | #define TEGRA20_MAX_STATES 1 | ||
46 | #endif | 49 | #endif |
47 | 50 | ||
48 | static struct cpuidle_state tegra_idle_states[] = { | ||
49 | [0] = ARM_CPUIDLE_WFI_STATE_PWR(600), | ||
50 | #ifdef CONFIG_PM_SLEEP | ||
51 | [1] = { | ||
52 | .enter = tegra20_idle_lp2_coupled, | ||
53 | .exit_latency = 5000, | ||
54 | .target_residency = 10000, | ||
55 | .power_usage = 0, | ||
56 | .flags = CPUIDLE_FLAG_TIME_VALID | | ||
57 | CPUIDLE_FLAG_COUPLED, | ||
58 | .name = "powered-down", | ||
59 | .desc = "CPU power gated", | ||
60 | }, | ||
61 | #endif | ||
62 | }; | ||
63 | |||
64 | static struct cpuidle_driver tegra_idle_driver = { | 51 | static struct cpuidle_driver tegra_idle_driver = { |
65 | .name = "tegra_idle", | 52 | .name = "tegra_idle", |
66 | .owner = THIS_MODULE, | 53 | .owner = THIS_MODULE, |
67 | .en_core_tk_irqen = 1, | 54 | .en_core_tk_irqen = 1, |
55 | .states = { | ||
56 | ARM_CPUIDLE_WFI_STATE_PWR(600), | ||
57 | #ifdef CONFIG_PM_SLEEP | ||
58 | { | ||
59 | .enter = tegra20_idle_lp2_coupled, | ||
60 | .exit_latency = 5000, | ||
61 | .target_residency = 10000, | ||
62 | .power_usage = 0, | ||
63 | .flags = CPUIDLE_FLAG_TIME_VALID | | ||
64 | CPUIDLE_FLAG_COUPLED, | ||
65 | .name = "powered-down", | ||
66 | .desc = "CPU power gated", | ||
67 | }, | ||
68 | #endif | ||
69 | }, | ||
70 | .state_count = TEGRA20_MAX_STATES, | ||
71 | .safe_state_index = 0, | ||
68 | }; | 72 | }; |
69 | 73 | ||
70 | static DEFINE_PER_CPU(struct cpuidle_device, tegra_idle_device); | 74 | static DEFINE_PER_CPU(struct cpuidle_device, tegra_idle_device); |
@@ -226,10 +230,6 @@ int __init tegra20_cpuidle_init(void) | |||
226 | tegra_tear_down_cpu = tegra20_tear_down_cpu; | 230 | tegra_tear_down_cpu = tegra20_tear_down_cpu; |
227 | #endif | 231 | #endif |
228 | 232 | ||
229 | drv->state_count = ARRAY_SIZE(tegra_idle_states); | ||
230 | memcpy(drv->states, tegra_idle_states, | ||
231 | drv->state_count * sizeof(drv->states[0])); | ||
232 | |||
233 | ret = cpuidle_register_driver(&tegra_idle_driver); | 233 | ret = cpuidle_register_driver(&tegra_idle_driver); |
234 | if (ret) { | 234 | if (ret) { |
235 | pr_err("CPUidle driver registration failed\n"); | 235 | pr_err("CPUidle driver registration failed\n"); |