forked from luck/tmp_suning_uos_patched
[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 ItaniumArchitecture 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>
This commit is contained in:
parent
6dbfc19b7e
commit
17e77b1cc3
@ -68,7 +68,8 @@ processor_get_pstate (
|
||||
|
||||
dprintk("processor_get_pstate\n");
|
||||
|
||||
retval = ia64_pal_get_pstate(&pstate_index);
|
||||
retval = ia64_pal_get_pstate(&pstate_index,
|
||||
PAL_GET_PSTATE_TYPE_INSTANT);
|
||||
*value = (u32) pstate_index;
|
||||
|
||||
if (retval)
|
||||
@ -91,7 +92,7 @@ extract_clock (
|
||||
dprintk("extract_clock\n");
|
||||
|
||||
for (i = 0; i < data->acpi_data.state_count; i++) {
|
||||
if (value >= data->acpi_data.states[i].control)
|
||||
if (value == data->acpi_data.states[i].status)
|
||||
return data->acpi_data.states[i].core_frequency;
|
||||
}
|
||||
return data->acpi_data.states[i-1].core_frequency;
|
||||
@ -117,11 +118,7 @@ processor_get_freq (
|
||||
goto migrate_end;
|
||||
}
|
||||
|
||||
/*
|
||||
* processor_get_pstate gets the average frequency since the
|
||||
* last get. So, do two PAL_get_freq()...
|
||||
*/
|
||||
ret = processor_get_pstate(&value);
|
||||
/* processor_get_pstate gets the instantaneous frequency */
|
||||
ret = processor_get_pstate(&value);
|
||||
|
||||
if (ret) {
|
||||
|
@ -84,6 +84,11 @@
|
||||
#define PAL_SET_PSTATE 263 /* set the P-state */
|
||||
#define PAL_BRAND_INFO 274 /* Processor branding information */
|
||||
|
||||
#define PAL_GET_PSTATE_TYPE_LASTSET 0
|
||||
#define PAL_GET_PSTATE_TYPE_AVGANDRESET 1
|
||||
#define PAL_GET_PSTATE_TYPE_AVGNORESET 2
|
||||
#define PAL_GET_PSTATE_TYPE_INSTANT 3
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
#include <linux/types.h>
|
||||
@ -1141,10 +1146,10 @@ ia64_pal_halt_info (pal_power_mgmt_info_u_t *power_buf)
|
||||
|
||||
/* Get the current P-state information */
|
||||
static inline s64
|
||||
ia64_pal_get_pstate (u64 *pstate_index)
|
||||
ia64_pal_get_pstate (u64 *pstate_index, unsigned long type)
|
||||
{
|
||||
struct ia64_pal_retval iprv;
|
||||
PAL_CALL_STK(iprv, PAL_GET_PSTATE, 0, 0, 0);
|
||||
PAL_CALL_STK(iprv, PAL_GET_PSTATE, type, 0, 0);
|
||||
*pstate_index = iprv.v0;
|
||||
return iprv.status;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user