diff options
-rw-r--r-- | drivers/idle/intel_idle.c | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c index 057ffef37b42..aeddfc46c831 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c | |||
@@ -196,6 +196,53 @@ static struct cpuidle_state snb_cstates[] = { | |||
196 | .enter = NULL } | 196 | .enter = NULL } |
197 | }; | 197 | }; |
198 | 198 | ||
199 | static struct cpuidle_state byt_cstates[] = { | ||
200 | { | ||
201 | .name = "C1-BYT", | ||
202 | .desc = "MWAIT 0x00", | ||
203 | .flags = MWAIT2flg(0x00) | CPUIDLE_FLAG_TIME_VALID, | ||
204 | .exit_latency = 1, | ||
205 | .target_residency = 1, | ||
206 | .enter = &intel_idle }, | ||
207 | { | ||
208 | .name = "C1E-BYT", | ||
209 | .desc = "MWAIT 0x01", | ||
210 | .flags = MWAIT2flg(0x01) | CPUIDLE_FLAG_TIME_VALID, | ||
211 | .exit_latency = 15, | ||
212 | .target_residency = 30, | ||
213 | .enter = &intel_idle }, | ||
214 | { | ||
215 | .name = "C6N-BYT", | ||
216 | .desc = "MWAIT 0x58", | ||
217 | .flags = MWAIT2flg(0x58) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, | ||
218 | .exit_latency = 40, | ||
219 | .target_residency = 275, | ||
220 | .enter = &intel_idle }, | ||
221 | { | ||
222 | .name = "C6S-BYT", | ||
223 | .desc = "MWAIT 0x52", | ||
224 | .flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, | ||
225 | .exit_latency = 140, | ||
226 | .target_residency = 560, | ||
227 | .enter = &intel_idle }, | ||
228 | { | ||
229 | .name = "C7-BYT", | ||
230 | .desc = "MWAIT 0x60", | ||
231 | .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, | ||
232 | .exit_latency = 1200, | ||
233 | .target_residency = 1500, | ||
234 | .enter = &intel_idle }, | ||
235 | { | ||
236 | .name = "C7S-BYT", | ||
237 | .desc = "MWAIT 0x64", | ||
238 | .flags = MWAIT2flg(0x64) | CPUIDLE_FLAG_TIME_VALID | CPUIDLE_FLAG_TLB_FLUSHED, | ||
239 | .exit_latency = 10000, | ||
240 | .target_residency = 20000, | ||
241 | .enter = &intel_idle }, | ||
242 | { | ||
243 | .enter = NULL } | ||
244 | }; | ||
245 | |||
199 | static struct cpuidle_state ivb_cstates[] = { | 246 | static struct cpuidle_state ivb_cstates[] = { |
200 | { | 247 | { |
201 | .name = "C1-IVB", | 248 | .name = "C1-IVB", |
@@ -464,6 +511,11 @@ static const struct idle_cpu idle_cpu_snb = { | |||
464 | .disable_promotion_to_c1e = true, | 511 | .disable_promotion_to_c1e = true, |
465 | }; | 512 | }; |
466 | 513 | ||
514 | static const struct idle_cpu idle_cpu_byt = { | ||
515 | .state_table = byt_cstates, | ||
516 | .disable_promotion_to_c1e = true, | ||
517 | }; | ||
518 | |||
467 | static const struct idle_cpu idle_cpu_ivb = { | 519 | static const struct idle_cpu idle_cpu_ivb = { |
468 | .state_table = ivb_cstates, | 520 | .state_table = ivb_cstates, |
469 | .disable_promotion_to_c1e = true, | 521 | .disable_promotion_to_c1e = true, |
@@ -494,6 +546,7 @@ static const struct x86_cpu_id intel_idle_ids[] = { | |||
494 | ICPU(0x2f, idle_cpu_nehalem), | 546 | ICPU(0x2f, idle_cpu_nehalem), |
495 | ICPU(0x2a, idle_cpu_snb), | 547 | ICPU(0x2a, idle_cpu_snb), |
496 | ICPU(0x2d, idle_cpu_snb), | 548 | ICPU(0x2d, idle_cpu_snb), |
549 | ICPU(0x37, idle_cpu_byt), | ||
497 | ICPU(0x3a, idle_cpu_ivb), | 550 | ICPU(0x3a, idle_cpu_ivb), |
498 | ICPU(0x3e, idle_cpu_ivb), | 551 | ICPU(0x3e, idle_cpu_ivb), |
499 | ICPU(0x3c, idle_cpu_hsw), | 552 | ICPU(0x3c, idle_cpu_hsw), |