diff options
Diffstat (limited to 'drivers/cpuidle')
-rw-r--r-- | drivers/cpuidle/cpuidle-arm64.c | 14 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-at91.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-big_little.c | 6 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-calxeda.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-cps.c | 7 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-exynos.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-kirkwood.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-mvebu-v7.c | 8 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-powernv.c | 6 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-pseries.c | 3 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-ux500.c | 3 | ||||
-rw-r--r-- | drivers/cpuidle/cpuidle-zynq.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/driver.c | 1 | ||||
-rw-r--r-- | drivers/cpuidle/dt_idle_states.c | 12 | ||||
-rw-r--r-- | drivers/cpuidle/governors/ladder.c | 2 | ||||
-rw-r--r-- | drivers/cpuidle/governors/menu.c | 2 |
16 files changed, 23 insertions, 46 deletions
diff --git a/drivers/cpuidle/cpuidle-arm64.c b/drivers/cpuidle/cpuidle-arm64.c index 50997ea942fc..80704b931ba4 100644 --- a/drivers/cpuidle/cpuidle-arm64.c +++ b/drivers/cpuidle/cpuidle-arm64.c | |||
@@ -73,7 +73,6 @@ static struct cpuidle_driver arm64_idle_driver = { | |||
73 | .exit_latency = 1, | 73 | .exit_latency = 1, |
74 | .target_residency = 1, | 74 | .target_residency = 1, |
75 | .power_usage = UINT_MAX, | 75 | .power_usage = UINT_MAX, |
76 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
77 | .name = "WFI", | 76 | .name = "WFI", |
78 | .desc = "ARM64 WFI", | 77 | .desc = "ARM64 WFI", |
79 | } | 78 | } |
@@ -104,11 +103,8 @@ static int __init arm64_idle_init(void) | |||
104 | * reason to initialize the idle driver if only wfi is supported. | 103 | * reason to initialize the idle driver if only wfi is supported. |
105 | */ | 104 | */ |
106 | ret = dt_init_idle_driver(drv, arm64_idle_state_match, 1); | 105 | ret = dt_init_idle_driver(drv, arm64_idle_state_match, 1); |
107 | if (ret <= 0) { | 106 | if (ret <= 0) |
108 | if (ret) | ||
109 | pr_err("failed to initialize idle states\n"); | ||
110 | return ret ? : -ENODEV; | 107 | return ret ? : -ENODEV; |
111 | } | ||
112 | 108 | ||
113 | /* | 109 | /* |
114 | * Call arch CPU operations in order to initialize | 110 | * Call arch CPU operations in order to initialize |
@@ -122,12 +118,6 @@ static int __init arm64_idle_init(void) | |||
122 | } | 118 | } |
123 | } | 119 | } |
124 | 120 | ||
125 | ret = cpuidle_register(drv, NULL); | 121 | return cpuidle_register(drv, NULL); |
126 | if (ret) { | ||
127 | pr_err("failed to register cpuidle driver\n"); | ||
128 | return ret; | ||
129 | } | ||
130 | |||
131 | return 0; | ||
132 | } | 122 | } |
133 | device_initcall(arm64_idle_init); | 123 | device_initcall(arm64_idle_init); |
diff --git a/drivers/cpuidle/cpuidle-at91.c b/drivers/cpuidle/cpuidle-at91.c index a0774370c6bc..1964ff07117c 100644 --- a/drivers/cpuidle/cpuidle-at91.c +++ b/drivers/cpuidle/cpuidle-at91.c | |||
@@ -43,7 +43,6 @@ static struct cpuidle_driver at91_idle_driver = { | |||
43 | .enter = at91_enter_idle, | 43 | .enter = at91_enter_idle, |
44 | .exit_latency = 10, | 44 | .exit_latency = 10, |
45 | .target_residency = 10000, | 45 | .target_residency = 10000, |
46 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
47 | .name = "RAM_SR", | 46 | .name = "RAM_SR", |
48 | .desc = "WFI and DDR Self Refresh", | 47 | .desc = "WFI and DDR Self Refresh", |
49 | }, | 48 | }, |
diff --git a/drivers/cpuidle/cpuidle-big_little.c b/drivers/cpuidle/cpuidle-big_little.c index fbc00a1d3c48..e3e225fe6b45 100644 --- a/drivers/cpuidle/cpuidle-big_little.c +++ b/drivers/cpuidle/cpuidle-big_little.c | |||
@@ -67,8 +67,7 @@ static struct cpuidle_driver bl_idle_little_driver = { | |||
67 | .enter = bl_enter_powerdown, | 67 | .enter = bl_enter_powerdown, |
68 | .exit_latency = 700, | 68 | .exit_latency = 700, |
69 | .target_residency = 2500, | 69 | .target_residency = 2500, |
70 | .flags = CPUIDLE_FLAG_TIME_VALID | | 70 | .flags = CPUIDLE_FLAG_TIMER_STOP, |
71 | CPUIDLE_FLAG_TIMER_STOP, | ||
72 | .name = "C1", | 71 | .name = "C1", |
73 | .desc = "ARM little-cluster power down", | 72 | .desc = "ARM little-cluster power down", |
74 | }, | 73 | }, |
@@ -89,8 +88,7 @@ static struct cpuidle_driver bl_idle_big_driver = { | |||
89 | .enter = bl_enter_powerdown, | 88 | .enter = bl_enter_powerdown, |
90 | .exit_latency = 500, | 89 | .exit_latency = 500, |
91 | .target_residency = 2000, | 90 | .target_residency = 2000, |
92 | .flags = CPUIDLE_FLAG_TIME_VALID | | 91 | .flags = CPUIDLE_FLAG_TIMER_STOP, |
93 | CPUIDLE_FLAG_TIMER_STOP, | ||
94 | .name = "C1", | 92 | .name = "C1", |
95 | .desc = "ARM big-cluster power down", | 93 | .desc = "ARM big-cluster power down", |
96 | }, | 94 | }, |
diff --git a/drivers/cpuidle/cpuidle-calxeda.c b/drivers/cpuidle/cpuidle-calxeda.c index 6e51114057d0..6541b0bfdfaa 100644 --- a/drivers/cpuidle/cpuidle-calxeda.c +++ b/drivers/cpuidle/cpuidle-calxeda.c | |||
@@ -55,7 +55,6 @@ static struct cpuidle_driver calxeda_idle_driver = { | |||
55 | { | 55 | { |
56 | .name = "PG", | 56 | .name = "PG", |
57 | .desc = "Power Gate", | 57 | .desc = "Power Gate", |
58 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
59 | .exit_latency = 30, | 58 | .exit_latency = 30, |
60 | .power_usage = 50, | 59 | .power_usage = 50, |
61 | .target_residency = 200, | 60 | .target_residency = 200, |
diff --git a/drivers/cpuidle/cpuidle-cps.c b/drivers/cpuidle/cpuidle-cps.c index fc7b62720deb..1adb6980b707 100644 --- a/drivers/cpuidle/cpuidle-cps.c +++ b/drivers/cpuidle/cpuidle-cps.c | |||
@@ -79,7 +79,6 @@ static struct cpuidle_driver cps_driver = { | |||
79 | .enter = cps_nc_enter, | 79 | .enter = cps_nc_enter, |
80 | .exit_latency = 200, | 80 | .exit_latency = 200, |
81 | .target_residency = 450, | 81 | .target_residency = 450, |
82 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
83 | .name = "nc-wait", | 82 | .name = "nc-wait", |
84 | .desc = "non-coherent MIPS wait", | 83 | .desc = "non-coherent MIPS wait", |
85 | }, | 84 | }, |
@@ -87,8 +86,7 @@ static struct cpuidle_driver cps_driver = { | |||
87 | .enter = cps_nc_enter, | 86 | .enter = cps_nc_enter, |
88 | .exit_latency = 300, | 87 | .exit_latency = 300, |
89 | .target_residency = 700, | 88 | .target_residency = 700, |
90 | .flags = CPUIDLE_FLAG_TIME_VALID | | 89 | .flags = CPUIDLE_FLAG_TIMER_STOP, |
91 | CPUIDLE_FLAG_TIMER_STOP, | ||
92 | .name = "clock-gated", | 90 | .name = "clock-gated", |
93 | .desc = "core clock gated", | 91 | .desc = "core clock gated", |
94 | }, | 92 | }, |
@@ -96,8 +94,7 @@ static struct cpuidle_driver cps_driver = { | |||
96 | .enter = cps_nc_enter, | 94 | .enter = cps_nc_enter, |
97 | .exit_latency = 600, | 95 | .exit_latency = 600, |
98 | .target_residency = 1000, | 96 | .target_residency = 1000, |
99 | .flags = CPUIDLE_FLAG_TIME_VALID | | 97 | .flags = CPUIDLE_FLAG_TIMER_STOP, |
100 | CPUIDLE_FLAG_TIMER_STOP, | ||
101 | .name = "power-gated", | 98 | .name = "power-gated", |
102 | .desc = "core power gated", | 99 | .desc = "core power gated", |
103 | }, | 100 | }, |
diff --git a/drivers/cpuidle/cpuidle-exynos.c b/drivers/cpuidle/cpuidle-exynos.c index ba9b34b579f3..64d12a855ec6 100644 --- a/drivers/cpuidle/cpuidle-exynos.c +++ b/drivers/cpuidle/cpuidle-exynos.c | |||
@@ -47,7 +47,6 @@ static struct cpuidle_driver exynos_idle_driver = { | |||
47 | .enter = exynos_enter_lowpower, | 47 | .enter = exynos_enter_lowpower, |
48 | .exit_latency = 300, | 48 | .exit_latency = 300, |
49 | .target_residency = 100000, | 49 | .target_residency = 100000, |
50 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
51 | .name = "C1", | 50 | .name = "C1", |
52 | .desc = "ARM power down", | 51 | .desc = "ARM power down", |
53 | }, | 52 | }, |
diff --git a/drivers/cpuidle/cpuidle-kirkwood.c b/drivers/cpuidle/cpuidle-kirkwood.c index 41ba843251b8..d88f8d7c2143 100644 --- a/drivers/cpuidle/cpuidle-kirkwood.c +++ b/drivers/cpuidle/cpuidle-kirkwood.c | |||
@@ -47,7 +47,6 @@ static struct cpuidle_driver kirkwood_idle_driver = { | |||
47 | .enter = kirkwood_enter_idle, | 47 | .enter = kirkwood_enter_idle, |
48 | .exit_latency = 10, | 48 | .exit_latency = 10, |
49 | .target_residency = 100000, | 49 | .target_residency = 100000, |
50 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
51 | .name = "DDR SR", | 50 | .name = "DDR SR", |
52 | .desc = "WFI and DDR Self Refresh", | 51 | .desc = "WFI and DDR Self Refresh", |
53 | }, | 52 | }, |
diff --git a/drivers/cpuidle/cpuidle-mvebu-v7.c b/drivers/cpuidle/cpuidle-mvebu-v7.c index 45371bb16214..dd4c176df2a3 100644 --- a/drivers/cpuidle/cpuidle-mvebu-v7.c +++ b/drivers/cpuidle/cpuidle-mvebu-v7.c | |||
@@ -53,7 +53,6 @@ static struct cpuidle_driver armadaxp_idle_driver = { | |||
53 | .exit_latency = 10, | 53 | .exit_latency = 10, |
54 | .power_usage = 50, | 54 | .power_usage = 50, |
55 | .target_residency = 100, | 55 | .target_residency = 100, |
56 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
57 | .name = "MV CPU IDLE", | 56 | .name = "MV CPU IDLE", |
58 | .desc = "CPU power down", | 57 | .desc = "CPU power down", |
59 | }, | 58 | }, |
@@ -62,8 +61,7 @@ static struct cpuidle_driver armadaxp_idle_driver = { | |||
62 | .exit_latency = 100, | 61 | .exit_latency = 100, |
63 | .power_usage = 5, | 62 | .power_usage = 5, |
64 | .target_residency = 1000, | 63 | .target_residency = 1000, |
65 | .flags = CPUIDLE_FLAG_TIME_VALID | | 64 | .flags = MVEBU_V7_FLAG_DEEP_IDLE, |
66 | MVEBU_V7_FLAG_DEEP_IDLE, | ||
67 | .name = "MV CPU DEEP IDLE", | 65 | .name = "MV CPU DEEP IDLE", |
68 | .desc = "CPU and L2 Fabric power down", | 66 | .desc = "CPU and L2 Fabric power down", |
69 | }, | 67 | }, |
@@ -78,8 +76,7 @@ static struct cpuidle_driver armada370_idle_driver = { | |||
78 | .exit_latency = 100, | 76 | .exit_latency = 100, |
79 | .power_usage = 5, | 77 | .power_usage = 5, |
80 | .target_residency = 1000, | 78 | .target_residency = 1000, |
81 | .flags = (CPUIDLE_FLAG_TIME_VALID | | 79 | .flags = MVEBU_V7_FLAG_DEEP_IDLE, |
82 | MVEBU_V7_FLAG_DEEP_IDLE), | ||
83 | .name = "Deep Idle", | 80 | .name = "Deep Idle", |
84 | .desc = "CPU and L2 Fabric power down", | 81 | .desc = "CPU and L2 Fabric power down", |
85 | }, | 82 | }, |
@@ -94,7 +91,6 @@ static struct cpuidle_driver armada38x_idle_driver = { | |||
94 | .exit_latency = 10, | 91 | .exit_latency = 10, |
95 | .power_usage = 5, | 92 | .power_usage = 5, |
96 | .target_residency = 100, | 93 | .target_residency = 100, |
97 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
98 | .name = "Idle", | 94 | .name = "Idle", |
99 | .desc = "CPU and SCU power down", | 95 | .desc = "CPU and SCU power down", |
100 | }, | 96 | }, |
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c index 7d3a3497dd4c..e9248bb9173a 100644 --- a/drivers/cpuidle/cpuidle-powernv.c +++ b/drivers/cpuidle/cpuidle-powernv.c | |||
@@ -93,7 +93,6 @@ static struct cpuidle_state powernv_states[MAX_POWERNV_IDLE_STATES] = { | |||
93 | { /* Snooze */ | 93 | { /* Snooze */ |
94 | .name = "snooze", | 94 | .name = "snooze", |
95 | .desc = "snooze", | 95 | .desc = "snooze", |
96 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
97 | .exit_latency = 0, | 96 | .exit_latency = 0, |
98 | .target_residency = 0, | 97 | .target_residency = 0, |
99 | .enter = &snooze_loop }, | 98 | .enter = &snooze_loop }, |
@@ -202,7 +201,7 @@ static int powernv_add_idle_states(void) | |||
202 | /* Add NAP state */ | 201 | /* Add NAP state */ |
203 | strcpy(powernv_states[nr_idle_states].name, "Nap"); | 202 | strcpy(powernv_states[nr_idle_states].name, "Nap"); |
204 | strcpy(powernv_states[nr_idle_states].desc, "Nap"); | 203 | strcpy(powernv_states[nr_idle_states].desc, "Nap"); |
205 | powernv_states[nr_idle_states].flags = CPUIDLE_FLAG_TIME_VALID; | 204 | powernv_states[nr_idle_states].flags = 0; |
206 | powernv_states[nr_idle_states].exit_latency = | 205 | powernv_states[nr_idle_states].exit_latency = |
207 | ((unsigned int)latency_ns) / 1000; | 206 | ((unsigned int)latency_ns) / 1000; |
208 | powernv_states[nr_idle_states].target_residency = | 207 | powernv_states[nr_idle_states].target_residency = |
@@ -215,8 +214,7 @@ static int powernv_add_idle_states(void) | |||
215 | /* Add FASTSLEEP state */ | 214 | /* Add FASTSLEEP state */ |
216 | strcpy(powernv_states[nr_idle_states].name, "FastSleep"); | 215 | strcpy(powernv_states[nr_idle_states].name, "FastSleep"); |
217 | strcpy(powernv_states[nr_idle_states].desc, "FastSleep"); | 216 | strcpy(powernv_states[nr_idle_states].desc, "FastSleep"); |
218 | powernv_states[nr_idle_states].flags = | 217 | powernv_states[nr_idle_states].flags = CPUIDLE_FLAG_TIMER_STOP; |
219 | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TIMER_STOP; | ||
220 | powernv_states[nr_idle_states].exit_latency = | 218 | powernv_states[nr_idle_states].exit_latency = |
221 | ((unsigned int)latency_ns) / 1000; | 219 | ((unsigned int)latency_ns) / 1000; |
222 | powernv_states[nr_idle_states].target_residency = | 220 | powernv_states[nr_idle_states].target_residency = |
diff --git a/drivers/cpuidle/cpuidle-pseries.c b/drivers/cpuidle/cpuidle-pseries.c index 6f7b01956885..bb9e2b6f3ecc 100644 --- a/drivers/cpuidle/cpuidle-pseries.c +++ b/drivers/cpuidle/cpuidle-pseries.c | |||
@@ -142,14 +142,12 @@ static struct cpuidle_state dedicated_states[] = { | |||
142 | { /* Snooze */ | 142 | { /* Snooze */ |
143 | .name = "snooze", | 143 | .name = "snooze", |
144 | .desc = "snooze", | 144 | .desc = "snooze", |
145 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
146 | .exit_latency = 0, | 145 | .exit_latency = 0, |
147 | .target_residency = 0, | 146 | .target_residency = 0, |
148 | .enter = &snooze_loop }, | 147 | .enter = &snooze_loop }, |
149 | { /* CEDE */ | 148 | { /* CEDE */ |
150 | .name = "CEDE", | 149 | .name = "CEDE", |
151 | .desc = "CEDE", | 150 | .desc = "CEDE", |
152 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
153 | .exit_latency = 10, | 151 | .exit_latency = 10, |
154 | .target_residency = 100, | 152 | .target_residency = 100, |
155 | .enter = &dedicated_cede_loop }, | 153 | .enter = &dedicated_cede_loop }, |
@@ -162,7 +160,6 @@ static struct cpuidle_state shared_states[] = { | |||
162 | { /* Shared Cede */ | 160 | { /* Shared Cede */ |
163 | .name = "Shared Cede", | 161 | .name = "Shared Cede", |
164 | .desc = "Shared Cede", | 162 | .desc = "Shared Cede", |
165 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
166 | .exit_latency = 0, | 163 | .exit_latency = 0, |
167 | .target_residency = 0, | 164 | .target_residency = 0, |
168 | .enter = &shared_cede_loop }, | 165 | .enter = &shared_cede_loop }, |
diff --git a/drivers/cpuidle/cpuidle-ux500.c b/drivers/cpuidle/cpuidle-ux500.c index 5e35804b1a95..292e65a90308 100644 --- a/drivers/cpuidle/cpuidle-ux500.c +++ b/drivers/cpuidle/cpuidle-ux500.c | |||
@@ -101,8 +101,7 @@ static struct cpuidle_driver ux500_idle_driver = { | |||
101 | .enter = ux500_enter_idle, | 101 | .enter = ux500_enter_idle, |
102 | .exit_latency = 70, | 102 | .exit_latency = 70, |
103 | .target_residency = 260, | 103 | .target_residency = 260, |
104 | .flags = CPUIDLE_FLAG_TIME_VALID | | 104 | .flags = CPUIDLE_FLAG_TIMER_STOP, |
105 | CPUIDLE_FLAG_TIMER_STOP, | ||
106 | .name = "ApIdle", | 105 | .name = "ApIdle", |
107 | .desc = "ARM Retention", | 106 | .desc = "ARM Retention", |
108 | }, | 107 | }, |
diff --git a/drivers/cpuidle/cpuidle-zynq.c b/drivers/cpuidle/cpuidle-zynq.c index c61b8b2a7c77..022dec86de8e 100644 --- a/drivers/cpuidle/cpuidle-zynq.c +++ b/drivers/cpuidle/cpuidle-zynq.c | |||
@@ -52,7 +52,6 @@ static struct cpuidle_driver zynq_idle_driver = { | |||
52 | .enter = zynq_enter_idle, | 52 | .enter = zynq_enter_idle, |
53 | .exit_latency = 10, | 53 | .exit_latency = 10, |
54 | .target_residency = 10000, | 54 | .target_residency = 10000, |
55 | .flags = CPUIDLE_FLAG_TIME_VALID, | ||
56 | .name = "RAM_SR", | 55 | .name = "RAM_SR", |
57 | .desc = "WFI and RAM Self Refresh", | 56 | .desc = "WFI and RAM Self Refresh", |
58 | }, | 57 | }, |
diff --git a/drivers/cpuidle/driver.c b/drivers/cpuidle/driver.c index e431d11abf8d..2697e87d5b34 100644 --- a/drivers/cpuidle/driver.c +++ b/drivers/cpuidle/driver.c | |||
@@ -201,7 +201,6 @@ static void poll_idle_init(struct cpuidle_driver *drv) | |||
201 | state->exit_latency = 0; | 201 | state->exit_latency = 0; |
202 | state->target_residency = 0; | 202 | state->target_residency = 0; |
203 | state->power_usage = -1; | 203 | state->power_usage = -1; |
204 | state->flags = CPUIDLE_FLAG_TIME_VALID; | ||
205 | state->enter = poll_idle; | 204 | state->enter = poll_idle; |
206 | state->disabled = false; | 205 | state->disabled = false; |
207 | } | 206 | } |
diff --git a/drivers/cpuidle/dt_idle_states.c b/drivers/cpuidle/dt_idle_states.c index 52f4d11bbf3f..a5c111b67f37 100644 --- a/drivers/cpuidle/dt_idle_states.c +++ b/drivers/cpuidle/dt_idle_states.c | |||
@@ -27,6 +27,7 @@ static int init_state_node(struct cpuidle_state *idle_state, | |||
27 | { | 27 | { |
28 | int err; | 28 | int err; |
29 | const struct of_device_id *match_id; | 29 | const struct of_device_id *match_id; |
30 | const char *desc; | ||
30 | 31 | ||
31 | match_id = of_match_node(matches, state_node); | 32 | match_id = of_match_node(matches, state_node); |
32 | if (!match_id) | 33 | if (!match_id) |
@@ -73,7 +74,11 @@ static int init_state_node(struct cpuidle_state *idle_state, | |||
73 | return -EINVAL; | 74 | return -EINVAL; |
74 | } | 75 | } |
75 | 76 | ||
76 | idle_state->flags = CPUIDLE_FLAG_TIME_VALID; | 77 | err = of_property_read_string(state_node, "idle-state-name", &desc); |
78 | if (err) | ||
79 | desc = state_node->name; | ||
80 | |||
81 | idle_state->flags = 0; | ||
77 | if (of_property_read_bool(state_node, "local-timer-stop")) | 82 | if (of_property_read_bool(state_node, "local-timer-stop")) |
78 | idle_state->flags |= CPUIDLE_FLAG_TIMER_STOP; | 83 | idle_state->flags |= CPUIDLE_FLAG_TIMER_STOP; |
79 | /* | 84 | /* |
@@ -82,7 +87,7 @@ static int init_state_node(struct cpuidle_state *idle_state, | |||
82 | * and desc become string pointers | 87 | * and desc become string pointers |
83 | */ | 88 | */ |
84 | strncpy(idle_state->name, state_node->name, CPUIDLE_NAME_LEN - 1); | 89 | strncpy(idle_state->name, state_node->name, CPUIDLE_NAME_LEN - 1); |
85 | strncpy(idle_state->desc, state_node->name, CPUIDLE_DESC_LEN - 1); | 90 | strncpy(idle_state->desc, desc, CPUIDLE_DESC_LEN - 1); |
86 | return 0; | 91 | return 0; |
87 | } | 92 | } |
88 | 93 | ||
@@ -169,6 +174,9 @@ int dt_init_idle_driver(struct cpuidle_driver *drv, | |||
169 | if (!state_node) | 174 | if (!state_node) |
170 | break; | 175 | break; |
171 | 176 | ||
177 | if (!of_device_is_available(state_node)) | ||
178 | continue; | ||
179 | |||
172 | if (!idle_state_valid(state_node, i, cpumask)) { | 180 | if (!idle_state_valid(state_node, i, cpumask)) { |
173 | pr_warn("%s idle state not valid, bailing out\n", | 181 | pr_warn("%s idle state not valid, bailing out\n", |
174 | state_node->full_name); | 182 | state_node->full_name); |
diff --git a/drivers/cpuidle/governors/ladder.c b/drivers/cpuidle/governors/ladder.c index 06b57c4c4d80..37263d9a1051 100644 --- a/drivers/cpuidle/governors/ladder.c +++ b/drivers/cpuidle/governors/ladder.c | |||
@@ -79,7 +79,7 @@ static int ladder_select_state(struct cpuidle_driver *drv, | |||
79 | 79 | ||
80 | last_state = &ldev->states[last_idx]; | 80 | last_state = &ldev->states[last_idx]; |
81 | 81 | ||
82 | if (drv->states[last_idx].flags & CPUIDLE_FLAG_TIME_VALID) { | 82 | if (!(drv->states[last_idx].flags & CPUIDLE_FLAG_TIME_INVALID)) { |
83 | last_residency = cpuidle_get_last_residency(dev) - \ | 83 | last_residency = cpuidle_get_last_residency(dev) - \ |
84 | drv->states[last_idx].exit_latency; | 84 | drv->states[last_idx].exit_latency; |
85 | } | 85 | } |
diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c index 710a233b9b0d..659d7b0c9ebf 100644 --- a/drivers/cpuidle/governors/menu.c +++ b/drivers/cpuidle/governors/menu.c | |||
@@ -405,7 +405,7 @@ static void menu_update(struct cpuidle_driver *drv, struct cpuidle_device *dev) | |||
405 | * the measured amount of time is less than the exit latency, | 405 | * the measured amount of time is less than the exit latency, |
406 | * assume the state was never reached and the exit latency is 0. | 406 | * assume the state was never reached and the exit latency is 0. |
407 | */ | 407 | */ |
408 | if (unlikely(!(target->flags & CPUIDLE_FLAG_TIME_VALID))) { | 408 | if (unlikely(target->flags & CPUIDLE_FLAG_TIME_INVALID)) { |
409 | /* Use timer value as is */ | 409 | /* Use timer value as is */ |
410 | measured_us = data->next_timer_us; | 410 | measured_us = data->next_timer_us; |
411 | 411 | ||