diff options
| -rw-r--r-- | drivers/idle/intel_idle.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c index 44d1d7920202..2ec8618c376f 100644 --- a/drivers/idle/intel_idle.c +++ b/drivers/idle/intel_idle.c | |||
| @@ -253,6 +253,51 @@ static struct cpuidle_state byt_cstates[] = { | |||
| 253 | .enter = NULL } | 253 | .enter = NULL } |
| 254 | }; | 254 | }; |
| 255 | 255 | ||
| 256 | static struct cpuidle_state cht_cstates[] = { | ||
| 257 | { | ||
| 258 | .name = "C1-CHT", | ||
| 259 | .desc = "MWAIT 0x00", | ||
| 260 | .flags = MWAIT2flg(0x00), | ||
| 261 | .exit_latency = 1, | ||
| 262 | .target_residency = 1, | ||
| 263 | .enter = &intel_idle, | ||
| 264 | .enter_freeze = intel_idle_freeze, }, | ||
| 265 | { | ||
| 266 | .name = "C6N-CHT", | ||
| 267 | .desc = "MWAIT 0x58", | ||
| 268 | .flags = MWAIT2flg(0x58) | CPUIDLE_FLAG_TLB_FLUSHED, | ||
| 269 | .exit_latency = 80, | ||
| 270 | .target_residency = 275, | ||
| 271 | .enter = &intel_idle, | ||
| 272 | .enter_freeze = intel_idle_freeze, }, | ||
| 273 | { | ||
| 274 | .name = "C6S-CHT", | ||
| 275 | .desc = "MWAIT 0x52", | ||
| 276 | .flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TLB_FLUSHED, | ||
| 277 | .exit_latency = 200, | ||
| 278 | .target_residency = 560, | ||
| 279 | .enter = &intel_idle, | ||
| 280 | .enter_freeze = intel_idle_freeze, }, | ||
| 281 | { | ||
| 282 | .name = "C7-CHT", | ||
| 283 | .desc = "MWAIT 0x60", | ||
| 284 | .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED, | ||
| 285 | .exit_latency = 1200, | ||
| 286 | .target_residency = 4000, | ||
| 287 | .enter = &intel_idle, | ||
| 288 | .enter_freeze = intel_idle_freeze, }, | ||
| 289 | { | ||
| 290 | .name = "C7S-CHT", | ||
| 291 | .desc = "MWAIT 0x64", | ||
| 292 | .flags = MWAIT2flg(0x64) | CPUIDLE_FLAG_TLB_FLUSHED, | ||
| 293 | .exit_latency = 10000, | ||
| 294 | .target_residency = 20000, | ||
| 295 | .enter = &intel_idle, | ||
| 296 | .enter_freeze = intel_idle_freeze, }, | ||
| 297 | { | ||
| 298 | .enter = NULL } | ||
| 299 | }; | ||
| 300 | |||
| 256 | static struct cpuidle_state ivb_cstates[] = { | 301 | static struct cpuidle_state ivb_cstates[] = { |
| 257 | { | 302 | { |
| 258 | .name = "C1-IVB", | 303 | .name = "C1-IVB", |
| @@ -740,6 +785,12 @@ static const struct idle_cpu idle_cpu_byt = { | |||
| 740 | .byt_auto_demotion_disable_flag = true, | 785 | .byt_auto_demotion_disable_flag = true, |
| 741 | }; | 786 | }; |
| 742 | 787 | ||
| 788 | static const struct idle_cpu idle_cpu_cht = { | ||
| 789 | .state_table = cht_cstates, | ||
| 790 | .disable_promotion_to_c1e = true, | ||
| 791 | .byt_auto_demotion_disable_flag = true, | ||
| 792 | }; | ||
| 793 | |||
| 743 | static const struct idle_cpu idle_cpu_ivb = { | 794 | static const struct idle_cpu idle_cpu_ivb = { |
| 744 | .state_table = ivb_cstates, | 795 | .state_table = ivb_cstates, |
| 745 | .disable_promotion_to_c1e = true, | 796 | .disable_promotion_to_c1e = true, |
| @@ -782,6 +833,7 @@ static const struct x86_cpu_id intel_idle_ids[] = { | |||
| 782 | ICPU(0x2d, idle_cpu_snb), | 833 | ICPU(0x2d, idle_cpu_snb), |
| 783 | ICPU(0x36, idle_cpu_atom), | 834 | ICPU(0x36, idle_cpu_atom), |
| 784 | ICPU(0x37, idle_cpu_byt), | 835 | ICPU(0x37, idle_cpu_byt), |
| 836 | ICPU(0x4c, idle_cpu_cht), | ||
| 785 | ICPU(0x3a, idle_cpu_ivb), | 837 | ICPU(0x3a, idle_cpu_ivb), |
| 786 | ICPU(0x3e, idle_cpu_ivt), | 838 | ICPU(0x3e, idle_cpu_ivt), |
| 787 | ICPU(0x3c, idle_cpu_hsw), | 839 | ICPU(0x3c, idle_cpu_hsw), |
