aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>2017-04-04 15:32:08 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2017-04-12 06:41:17 -0400
commit625fd9d1af7070ff3a54c0c6e93a7c654425a1d7 (patch)
tree1e914338deb853b1ecc90aa4edd8db68008a0ebf
parent607ca1dccbbd880b9f2bddfda23ec8aed1c5acbe (diff)
x86/intel_idle: Add CPU model 0x4a (Atom Z34xx series)
[ Upstream commit 5e7ec268fd48d63cfd0e3a9be6c6443f01673bd4 ] Add CPU ID for Atom Z34xx processors. Datasheets indicate support for this, detailed information about potential quirks or limitations are missing, though. So we just reuse the definition from official BSP code. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Len Brown <len.brown@intel.com> Signed-off-by: Sasha Levin <alexander.levin@verizon.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/idle/intel_idle.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/drivers/idle/intel_idle.c b/drivers/idle/intel_idle.c
index 4466a2f969d7..5ded9b22b015 100644
--- a/drivers/idle/intel_idle.c
+++ b/drivers/idle/intel_idle.c
@@ -724,6 +724,50 @@ static struct cpuidle_state atom_cstates[] = {
724 { 724 {
725 .enter = NULL } 725 .enter = NULL }
726}; 726};
727static struct cpuidle_state tangier_cstates[] = {
728 {
729 .name = "C1-TNG",
730 .desc = "MWAIT 0x00",
731 .flags = MWAIT2flg(0x00),
732 .exit_latency = 1,
733 .target_residency = 4,
734 .enter = &intel_idle,
735 .enter_freeze = intel_idle_freeze, },
736 {
737 .name = "C4-TNG",
738 .desc = "MWAIT 0x30",
739 .flags = MWAIT2flg(0x30) | CPUIDLE_FLAG_TLB_FLUSHED,
740 .exit_latency = 100,
741 .target_residency = 400,
742 .enter = &intel_idle,
743 .enter_freeze = intel_idle_freeze, },
744 {
745 .name = "C6-TNG",
746 .desc = "MWAIT 0x52",
747 .flags = MWAIT2flg(0x52) | CPUIDLE_FLAG_TLB_FLUSHED,
748 .exit_latency = 140,
749 .target_residency = 560,
750 .enter = &intel_idle,
751 .enter_freeze = intel_idle_freeze, },
752 {
753 .name = "C7-TNG",
754 .desc = "MWAIT 0x60",
755 .flags = MWAIT2flg(0x60) | CPUIDLE_FLAG_TLB_FLUSHED,
756 .exit_latency = 1200,
757 .target_residency = 4000,
758 .enter = &intel_idle,
759 .enter_freeze = intel_idle_freeze, },
760 {
761 .name = "C9-TNG",
762 .desc = "MWAIT 0x64",
763 .flags = MWAIT2flg(0x64) | CPUIDLE_FLAG_TLB_FLUSHED,
764 .exit_latency = 10000,
765 .target_residency = 20000,
766 .enter = &intel_idle,
767 .enter_freeze = intel_idle_freeze, },
768 {
769 .enter = NULL }
770};
727static struct cpuidle_state avn_cstates[] = { 771static struct cpuidle_state avn_cstates[] = {
728 { 772 {
729 .name = "C1-AVN", 773 .name = "C1-AVN",
@@ -978,6 +1022,10 @@ static const struct idle_cpu idle_cpu_atom = {
978 .state_table = atom_cstates, 1022 .state_table = atom_cstates,
979}; 1023};
980 1024
1025static const struct idle_cpu idle_cpu_tangier = {
1026 .state_table = tangier_cstates,
1027};
1028
981static const struct idle_cpu idle_cpu_lincroft = { 1029static const struct idle_cpu idle_cpu_lincroft = {
982 .state_table = atom_cstates, 1030 .state_table = atom_cstates,
983 .auto_demotion_disable_flags = ATM_LNC_C6_AUTO_DEMOTE, 1031 .auto_demotion_disable_flags = ATM_LNC_C6_AUTO_DEMOTE,
@@ -1066,6 +1114,7 @@ static const struct x86_cpu_id intel_idle_ids[] __initconst = {
1066 ICPU(INTEL_FAM6_SANDYBRIDGE_X, idle_cpu_snb), 1114 ICPU(INTEL_FAM6_SANDYBRIDGE_X, idle_cpu_snb),
1067 ICPU(INTEL_FAM6_ATOM_CEDARVIEW, idle_cpu_atom), 1115 ICPU(INTEL_FAM6_ATOM_CEDARVIEW, idle_cpu_atom),
1068 ICPU(INTEL_FAM6_ATOM_SILVERMONT1, idle_cpu_byt), 1116 ICPU(INTEL_FAM6_ATOM_SILVERMONT1, idle_cpu_byt),
1117 ICPU(INTEL_FAM6_ATOM_MERRIFIELD, idle_cpu_tangier),
1069 ICPU(INTEL_FAM6_ATOM_AIRMONT, idle_cpu_cht), 1118 ICPU(INTEL_FAM6_ATOM_AIRMONT, idle_cpu_cht),
1070 ICPU(INTEL_FAM6_IVYBRIDGE, idle_cpu_ivb), 1119 ICPU(INTEL_FAM6_IVYBRIDGE, idle_cpu_ivb),
1071 ICPU(INTEL_FAM6_IVYBRIDGE_X, idle_cpu_ivt), 1120 ICPU(INTEL_FAM6_IVYBRIDGE_X, idle_cpu_ivt),