aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/idle/intel_idle.c52
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
256static 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
256static struct cpuidle_state ivb_cstates[] = { 301static 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
788static 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
743static const struct idle_cpu idle_cpu_ivb = { 794static 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),