diff options
author | Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> | 2006-12-01 18:28:14 -0500 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2006-12-07 14:21:55 -0500 |
commit | 17e77b1cc31454908aa286bb1db3c611295ce25c (patch) | |
tree | 8d4cae677dfec84d4f41a93b8758bad5b1b8761f /arch/ia64/kernel/cpufreq | |
parent | 6dbfc19b7ea93f94f1efabaae71a921b49d8cae2 (diff) |
[PATCH] Add support for type argument in PAL_GET_PSTATE
PAL_GET_PSTATE accepts a type argument to return different kinds of
frequency information.
Refer: Intel Itanium®Architecture Software Developer's Manual -
Volume 2: System Architecture, Revision 2.2
(http://developer.intel.com/design/itanium/manuals/245318.htm)
Add the support for type argument and use Instantaneous frequency
in the acpi driver.
Also fix a bug, where in return value of PAL_GET_PSTATE was getting compared
with 'control' bits instead of 'status' bits.
Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/kernel/cpufreq')
-rw-r--r-- | arch/ia64/kernel/cpufreq/acpi-cpufreq.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/arch/ia64/kernel/cpufreq/acpi-cpufreq.c b/arch/ia64/kernel/cpufreq/acpi-cpufreq.c index 86faf221a070..088f130197ae 100644 --- a/arch/ia64/kernel/cpufreq/acpi-cpufreq.c +++ b/arch/ia64/kernel/cpufreq/acpi-cpufreq.c | |||
@@ -68,7 +68,8 @@ processor_get_pstate ( | |||
68 | 68 | ||
69 | dprintk("processor_get_pstate\n"); | 69 | dprintk("processor_get_pstate\n"); |
70 | 70 | ||
71 | retval = ia64_pal_get_pstate(&pstate_index); | 71 | retval = ia64_pal_get_pstate(&pstate_index, |
72 | PAL_GET_PSTATE_TYPE_INSTANT); | ||
72 | *value = (u32) pstate_index; | 73 | *value = (u32) pstate_index; |
73 | 74 | ||
74 | if (retval) | 75 | if (retval) |
@@ -91,7 +92,7 @@ extract_clock ( | |||
91 | dprintk("extract_clock\n"); | 92 | dprintk("extract_clock\n"); |
92 | 93 | ||
93 | for (i = 0; i < data->acpi_data.state_count; i++) { | 94 | for (i = 0; i < data->acpi_data.state_count; i++) { |
94 | if (value >= data->acpi_data.states[i].control) | 95 | if (value == data->acpi_data.states[i].status) |
95 | return data->acpi_data.states[i].core_frequency; | 96 | return data->acpi_data.states[i].core_frequency; |
96 | } | 97 | } |
97 | return data->acpi_data.states[i-1].core_frequency; | 98 | return data->acpi_data.states[i-1].core_frequency; |
@@ -117,11 +118,7 @@ processor_get_freq ( | |||
117 | goto migrate_end; | 118 | goto migrate_end; |
118 | } | 119 | } |
119 | 120 | ||
120 | /* | 121 | /* processor_get_pstate gets the instantaneous frequency */ |
121 | * processor_get_pstate gets the average frequency since the | ||
122 | * last get. So, do two PAL_get_freq()... | ||
123 | */ | ||
124 | ret = processor_get_pstate(&value); | ||
125 | ret = processor_get_pstate(&value); | 122 | ret = processor_get_pstate(&value); |
126 | 123 | ||
127 | if (ret) { | 124 | if (ret) { |