aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/cpufreq/intel_pstate.c64
1 files changed, 25 insertions, 39 deletions
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 65ee4fcace1f..ad713cd6b364 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -2466,39 +2466,31 @@ enum {
2466 PPC, 2466 PPC,
2467}; 2467};
2468 2468
2469struct hw_vendor_info {
2470 u16 valid;
2471 char oem_id[ACPI_OEM_ID_SIZE];
2472 char oem_table_id[ACPI_OEM_TABLE_ID_SIZE];
2473 int oem_pwr_table;
2474};
2475
2476/* Hardware vendor-specific info that has its own power management modes */ 2469/* Hardware vendor-specific info that has its own power management modes */
2477static struct hw_vendor_info vendor_info[] __initdata = { 2470static struct acpi_platform_list plat_info[] __initdata = {
2478 {1, "HP ", "ProLiant", PSS}, 2471 {"HP ", "ProLiant", 0, ACPI_SIG_FADT, all_versions, 0, PSS},
2479 {1, "ORACLE", "X4-2 ", PPC}, 2472 {"ORACLE", "X4-2 ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2480 {1, "ORACLE", "X4-2L ", PPC}, 2473 {"ORACLE", "X4-2L ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2481 {1, "ORACLE", "X4-2B ", PPC}, 2474 {"ORACLE", "X4-2B ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2482 {1, "ORACLE", "X3-2 ", PPC}, 2475 {"ORACLE", "X3-2 ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2483 {1, "ORACLE", "X3-2L ", PPC}, 2476 {"ORACLE", "X3-2L ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2484 {1, "ORACLE", "X3-2B ", PPC}, 2477 {"ORACLE", "X3-2B ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2485 {1, "ORACLE", "X4470M2 ", PPC}, 2478 {"ORACLE", "X4470M2 ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2486 {1, "ORACLE", "X4270M3 ", PPC}, 2479 {"ORACLE", "X4270M3 ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2487 {1, "ORACLE", "X4270M2 ", PPC}, 2480 {"ORACLE", "X4270M2 ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2488 {1, "ORACLE", "X4170M2 ", PPC}, 2481 {"ORACLE", "X4170M2 ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2489 {1, "ORACLE", "X4170 M3", PPC}, 2482 {"ORACLE", "X4170 M3", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2490 {1, "ORACLE", "X4275 M3", PPC}, 2483 {"ORACLE", "X4275 M3", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2491 {1, "ORACLE", "X6-2 ", PPC}, 2484 {"ORACLE", "X6-2 ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2492 {1, "ORACLE", "Sudbury ", PPC}, 2485 {"ORACLE", "Sudbury ", 0, ACPI_SIG_FADT, all_versions, 0, PPC},
2493 {0, "", ""}, 2486 { } /* End */
2494}; 2487};
2495 2488
2496static bool __init intel_pstate_platform_pwr_mgmt_exists(void) 2489static bool __init intel_pstate_platform_pwr_mgmt_exists(void)
2497{ 2490{
2498 struct acpi_table_header hdr;
2499 struct hw_vendor_info *v_info;
2500 const struct x86_cpu_id *id; 2491 const struct x86_cpu_id *id;
2501 u64 misc_pwr; 2492 u64 misc_pwr;
2493 int idx;
2502 2494
2503 id = x86_match_cpu(intel_pstate_cpu_oob_ids); 2495 id = x86_match_cpu(intel_pstate_cpu_oob_ids);
2504 if (id) { 2496 if (id) {
@@ -2507,21 +2499,15 @@ static bool __init intel_pstate_platform_pwr_mgmt_exists(void)
2507 return true; 2499 return true;
2508 } 2500 }
2509 2501
2510 if (acpi_disabled || 2502 idx = acpi_match_platform_list(plat_info);
2511 ACPI_FAILURE(acpi_get_table_header(ACPI_SIG_FADT, 0, &hdr))) 2503 if (idx < 0)
2512 return false; 2504 return false;
2513 2505
2514 for (v_info = vendor_info; v_info->valid; v_info++) { 2506 switch (plat_info[idx].data) {
2515 if (!strncmp(hdr.oem_id, v_info->oem_id, ACPI_OEM_ID_SIZE) && 2507 case PSS:
2516 !strncmp(hdr.oem_table_id, v_info->oem_table_id, 2508 return intel_pstate_no_acpi_pss();
2517 ACPI_OEM_TABLE_ID_SIZE)) 2509 case PPC:
2518 switch (v_info->oem_pwr_table) { 2510 return intel_pstate_has_acpi_ppc() && !force_load;
2519 case PSS:
2520 return intel_pstate_no_acpi_pss();
2521 case PPC:
2522 return intel_pstate_has_acpi_ppc() &&
2523 (!force_load);
2524 }
2525 } 2511 }
2526 2512
2527 return false; 2513 return false;