903 lines
26 KiB
Plaintext
903 lines
26 KiB
Plaintext
//*************************************************************************
|
|
//*************************************************************************
|
|
//** **
|
|
//** (C)Copyright 1985-2013, American Megatrends, Inc. **
|
|
//** **
|
|
//** All Rights Reserved. **
|
|
//** **
|
|
//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
|
|
//** **
|
|
//** Phone: (770)-246-8600 **
|
|
//** **
|
|
//*************************************************************************
|
|
//*************************************************************************
|
|
//*************************************************************************
|
|
//<AMI_FHDR_START>
|
|
//
|
|
// Name: <IT8728FSetup.c>
|
|
//
|
|
// Description: This is related to individual HWM devices.
|
|
//
|
|
//<AMI_FHDR_END>
|
|
//*************************************************************************
|
|
//-------------------------------------------------------------------------
|
|
// Include Files
|
|
//-------------------------------------------------------------------------
|
|
#include <AmiDxeLib.h>
|
|
#include <Setup.h>
|
|
#include <SioSetup.h>
|
|
|
|
//-------------------------------------------------------------------------
|
|
// Constants, Macros and Type Definitions
|
|
//-------------------------------------------------------------------------
|
|
|
|
//-------------------------------------------------------------------------
|
|
//Variable, Prototype, and External Declarations
|
|
//-------------------------------------------------------------------------
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
////////////OEM PORTING REQUIRED/////////////OEM PORTING REQUIRED/////////////
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: TEMP_DECIMAL_TO_INTEGER
|
|
//
|
|
// Description:
|
|
// Get the register value form HWM space register.
|
|
//
|
|
// Input:
|
|
// IN UINTN Int_Data---integer part data
|
|
// IN UINTN Dec_Data---decimal part data
|
|
// IN UINTN Dec_Point---the count of decimal unit point
|
|
// Output:
|
|
// UINTN Data---output the translation data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
UINTN TEMP_DECIMAL_TO_INTEGER (
|
|
IN UINTN Int_Data,
|
|
IN UINTN Dec_Data,
|
|
IN UINTN Dec_Point//when 0.5,it is 1,when 0.25 it is 2,when 0.125,it is 3
|
|
)
|
|
{
|
|
UINTN OutBuffer=0;
|
|
INTN InData=0;
|
|
UINTN Dec_Unit=1;
|
|
|
|
InData = (INTN)(Int_Data);
|
|
|
|
if(InData < 0) {
|
|
Dec_Unit=-1;
|
|
}
|
|
while(Dec_Point) {
|
|
Int_Data=Int_Data*10;
|
|
Dec_Unit=Dec_Unit*5;
|
|
Dec_Point--;
|
|
}
|
|
OutBuffer=Int_Data+Dec_Data*Dec_Unit;
|
|
|
|
return OutBuffer;
|
|
}
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: VOL_DIVISOR_CALCULATE
|
|
//
|
|
// Description:
|
|
// Get the register value form HWM voltage space register.
|
|
//
|
|
// Input:
|
|
// IN UINTN Vol_Value---voltage parameter
|
|
// IN UINTN Vol_Unit---voltage lsb unit
|
|
// IN UINTN R_B---divisor bigger resitor
|
|
// IN UINTN R_S---divisor smaller resitor
|
|
// Output:
|
|
// UINTN Data---output the voltage value
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
UINTN VOL_DIVISOR_CALCULATE (
|
|
IN UINTN Vol_Value,
|
|
IN UINTN Vol_Unit,
|
|
IN UINTN R_B,
|
|
IN UINTN R_S
|
|
)
|
|
{
|
|
UINTN OutBuffer=0;
|
|
if((R_B != 0) && (R_S != 0)) { //it use resistor divisor
|
|
OutBuffer = Vol_Value * Vol_Unit * (R_B + R_S)/R_S;
|
|
} else {//it don't use resistor divisor
|
|
OutBuffer = Vol_Value * Vol_Unit;
|
|
}
|
|
|
|
return OutBuffer;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetValueWithIO
|
|
//
|
|
// Description:
|
|
// Get the register value form HWM space register.
|
|
//
|
|
// Input:
|
|
// UINT8 BankNo,
|
|
// UINT8 Register -> Register who content the wanted value
|
|
// UINTN *Value -> Register value
|
|
//
|
|
// Output:
|
|
// UINTN *Value
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetValueWithIO (
|
|
IN UINT8 BankNo,
|
|
IN UINT8 Register,
|
|
OUT UINTN *Value
|
|
)
|
|
{
|
|
UINT8 temp;
|
|
|
|
// Enter Bank NO!
|
|
IoWrite8(IT8728F_HWM_INDEX_PORT, 0x4E);
|
|
temp = IoRead8(IT8728F_HWM_DATA_PORT);
|
|
temp &= 0xF8 ;
|
|
IoWrite8(IT8728F_HWM_DATA_PORT, (temp | BankNo));
|
|
|
|
//Read the data from register
|
|
IoWrite8(IT8728F_HWM_INDEX_PORT, Register);
|
|
*Value = IoRead8(IT8728F_HWM_DATA_PORT);
|
|
|
|
return;
|
|
}
|
|
//-------------------------------------------------------------------------
|
|
//Variable, Prototype, and External Declarations
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetSystemTemp1
|
|
//
|
|
// Description:
|
|
// Get the first System temperature value in HWM space register and update to HII.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetSystemTemp1(
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
UINTN IntData=0;
|
|
UINTN DecData=0;
|
|
UINT8 Unit_Point_Count=0;//AMI_TODO integer:0,0.5->1,0.25->2,0.125->3
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP1_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = Unit_Point_Count;
|
|
|
|
//Get Integer Data,AMI_TODO:
|
|
GetValueWithIO(0x00,0x29,&IntData); // Bank0 Register 0x29.
|
|
if((IntData == 0x80) || (IntData == 0x7F)) {//No device on the sensor
|
|
Data->Value = 0;
|
|
return;
|
|
}
|
|
//Get Demical Data,AMI_TODO:
|
|
|
|
//Get the Sign Bit,Positive or Negative,AMI_TODO:
|
|
IntData=(UINTN)(INTN)(INT8)IntData;//8bit Data
|
|
//Change Data display
|
|
T1= TEMP_DECIMAL_TO_INTEGER (IntData,//integer
|
|
DecData,//decimal
|
|
Unit_Point_Count);//point
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)(INTN)T1;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetSystemTemp2
|
|
//
|
|
// Description:
|
|
// Get the first System temperature value in HWM space register and update to HII.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetSystemTemp2(
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
UINTN IntData=0;
|
|
UINTN DecData=0;
|
|
UINT8 Unit_Point_Count=0;//AMI_TODO integer:0,0.5->1,0.25->2,0.125->3
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP2_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = Unit_Point_Count;
|
|
|
|
//Get Integer Data,AMI_TODO:
|
|
GetValueWithIO(0x00,0x2A,&IntData); // Bank0 Register 0x2A.
|
|
|
|
if((IntData == 0x80) || (IntData == 0x7F)) {//No device on the sensor
|
|
Data->Value = 0;
|
|
return;
|
|
}
|
|
//Get Demical Data,AMI_TODO:
|
|
|
|
//Get the Sign Bit,Positive or Negative,AMI_TODO:
|
|
IntData=(UINTN)(INTN)(INT8)IntData;//8bit Data
|
|
//Change Data display
|
|
T1= TEMP_DECIMAL_TO_INTEGER (IntData,//integer
|
|
DecData,//decimal
|
|
Unit_Point_Count);//point
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)(INTN)T1;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetSystemTemp3
|
|
//
|
|
// Description:
|
|
// Get the first System temperature value in HWM space register and update to HII.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetSystemTemp3(
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
UINTN IntData=0;
|
|
UINTN DecData=0;
|
|
UINT8 Unit_Point_Count=0;//AMI_TODO integer:0,0.5->1,0.25->2,0.125->3
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP3_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = Unit_Point_Count;
|
|
|
|
//Get Integer Data,AMI_TODO:
|
|
GetValueWithIO(0x00,0x2B,&IntData); // Bank0 Register 0x2B.
|
|
|
|
if((IntData == 0x80) || (IntData == 0x7F)) {//No device on the sensor
|
|
Data->Value = 0;
|
|
return;
|
|
}
|
|
//Get Demical Data,AMI_TODO:
|
|
|
|
//Get the Sign Bit,Positive or Negative,AMI_TODO:
|
|
IntData=(UINTN)(INTN)(INT8)IntData;//8bit Data
|
|
//Change Data display
|
|
T1= TEMP_DECIMAL_TO_INTEGER (IntData,//integer
|
|
DecData,//decimal
|
|
Unit_Point_Count);//point
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)(INTN)T1;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateFan1Speed
|
|
//
|
|
// Description:
|
|
// Get the First FAN Speed value in HWM space register and update it to HII.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateFan1Speed (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN Speed1, Speed2;
|
|
UINTN Divisor = 0x02;
|
|
Data->Token = STRING_TOKEN(STR_HWM1_FAN1_SPEED_VALUE);
|
|
Data->Type = FAN_SPEED;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x18,&Speed1); // Register 0x18
|
|
GetValueWithIO(0x00,0x0D,&Speed2); // Register 0x0D
|
|
|
|
Speed1 = (Speed1 << 8) | Speed2;
|
|
if((Speed1 == 0xFFFF) || (Speed1 == 0) || (Divisor == 0))
|
|
Data->Value=0;
|
|
else
|
|
Data->Value = (UINT16)(1350000/(Divisor * Speed1));
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateFan2Speed
|
|
//
|
|
// Description:
|
|
// Get the second FAN Speed value in HWM space register and update it to HII.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateFan2Speed (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN Speed1, Speed2;
|
|
UINTN Divisor = 0x02;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_FAN2_SPEED_VALUE);
|
|
Data->Type = FAN_SPEED;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x19,&Speed1); // Register 0x19
|
|
GetValueWithIO(0x00,0x0E,&Speed2); // Register 0x0E
|
|
|
|
Speed1 = (Speed1 << 8) | Speed2;
|
|
if((Speed1 == 0xFFFF) || (Speed1 == 0) || (Divisor == 0))
|
|
Data->Value=0;
|
|
else
|
|
Data->Value = (UINT16)(1350000/(Divisor * Speed1));
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateFan3Speed
|
|
//
|
|
// Description:
|
|
// Get the third FAN Speed value in HWM space register.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateFan3Speed (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN Speed1, Speed2;
|
|
UINTN Divisor = 0x02;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_FAN3_SPEED_VALUE);
|
|
Data->Type = FAN_SPEED;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x1A,&Speed1); // Register 0x1A
|
|
GetValueWithIO(0x00,0x0F,&Speed2); // Register 0x0F
|
|
|
|
Speed1 = (Speed1 << 8) | Speed2;
|
|
if((Speed1 == 0xFFFF) || (Speed1 == 0) || (Divisor == 0))
|
|
Data->Value=0;
|
|
else
|
|
Data->Value = (UINT16)(1350000/(Divisor * Speed1));
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateFan4Speed
|
|
//
|
|
// Description:
|
|
// Get the fourth FAN Speed value in HWM space register.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateFan4Speed (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN Speed1, Speed2;
|
|
UINTN Divisor = 0x02;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_FAN4_SPEED_VALUE);
|
|
Data->Type = FAN_SPEED;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x80,&Speed1); // Register 0x80
|
|
GetValueWithIO(0x00,0x81,&Speed2); // Register 0x81
|
|
|
|
Speed1 = (Speed1 << 8) | Speed2;
|
|
if((Speed1 == 0xFFFF) || (Speed1 == 0) || (Divisor == 0))
|
|
Data->Value=0;
|
|
else
|
|
Data->Value = (UINT16)(1350000/(Divisor * Speed1));
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateFan5Speed
|
|
//
|
|
// Description:
|
|
// Get the fifth FAN Speed value in HWM space register.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateFan5Speed (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN Speed1, Speed2;
|
|
UINTN Divisor = 0x02;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_FAN5_SPEED_VALUE);
|
|
Data->Type = FAN_SPEED;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x83,&Speed1); // Register 0x83
|
|
GetValueWithIO(0x00,0x82,&Speed2); // Register 0x82
|
|
|
|
Speed1 = (Speed1 << 8) | Speed2;
|
|
if((Speed1 == 0xFFFF) || (Speed1 == 0) || (Divisor == 0))
|
|
Data->Value=0;
|
|
else
|
|
Data->Value = (UINT16)(1350000/(Divisor * Speed1));
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN0Voltage
|
|
//
|
|
// Description:
|
|
// Get the VIN0 Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN0Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VData;
|
|
UINTN Lsb_Unit=8;//AMI_TODO:LSB unit is 8mv
|
|
UINTN R_Big=150; //AMI_TODO:Connect bigger divisor resistor
|
|
UINTN R_Small=10; //AMI_TODO:Connect smaller divisor resistor
|
|
|
|
Data->Token = STRING_TOKEN(STR_IT8728F_HMM_VIN0_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x20,&VData) ; // Register 0x20
|
|
//calculate voltage value
|
|
VData = VOL_DIVISOR_CALCULATE (VData,
|
|
Lsb_Unit,
|
|
R_Big,
|
|
R_Small);
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)VData;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN1Voltage
|
|
//
|
|
// Description: Get the VIN1 Voltage value in HWM space register.
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN1Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VData;
|
|
UINTN Lsb_Unit=8;//AMI_TODO:LSB unit is 8mv
|
|
UINTN R_Big=10; //AMI_TODO:Connect bigger divisor resistor
|
|
UINTN R_Small=10; //AMI_TODO:Connect smaller divisor resistor
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN1_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//AMI_TODO:Get value of Hwm Space raw data
|
|
GetValueWithIO(0x00,0x21,&VData) ; // Register 0x21
|
|
//calculate voltage value
|
|
VData = VOL_DIVISOR_CALCULATE (VData,
|
|
Lsb_Unit,
|
|
R_Big,
|
|
R_Small);
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)VData;
|
|
return;
|
|
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN2Voltage
|
|
//
|
|
// Description: Get the VIN2 Voltage value in HWM space register.
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN2Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VData;
|
|
UINTN Lsb_Unit=8;//AMI_TODO:LSB unit is 8mv
|
|
UINTN R_Big=10; //AMI_TODO:Connect bigger divisor resistor
|
|
UINTN R_Small=10; //AMI_TODO:Connect smaller divisor resistor
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN2_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//AMI_TODO:Get value of Hwm Space raw data
|
|
GetValueWithIO(0x00,0x22,&VData) ; // Register 0x22
|
|
//calculate voltage value
|
|
VData = VOL_DIVISOR_CALCULATE (VData,
|
|
Lsb_Unit,
|
|
R_Big,
|
|
R_Small);
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)VData;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN3Voltage
|
|
//
|
|
// Description:
|
|
// Get the VIN0 Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN3Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VData;
|
|
UINTN Lsb_Unit=8;//AMI_TODO:LSB unit is 8mv
|
|
UINTN R_Big=10; //AMI_TODO:Connect bigger divisor resistor
|
|
UINTN R_Small=10; //AMI_TODO:Connect smaller divisor resistor
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN3_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//AMI_TODO:Get value of Hwm Space raw data
|
|
GetValueWithIO(0x00,0x23,&VData) ; // Register 0x23
|
|
//calculate voltage value
|
|
VData = VOL_DIVISOR_CALCULATE (VData,
|
|
Lsb_Unit,
|
|
R_Big,
|
|
R_Small);
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)VData;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN4Voltage
|
|
//
|
|
// Description: Get the VIN4 Voltage value in HWM space register.
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN4Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VData;
|
|
UINTN Lsb_Unit=8;//AMI_TODO:LSB unit is 8mv
|
|
UINTN R_Big=10; //AMI_TODO:Connect bigger divisor resistor
|
|
UINTN R_Small=10; //AMI_TODO:Connect smaller divisor resistor
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN4_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//AMI_TODO:Get value of Hwm Space raw data
|
|
GetValueWithIO(0x00,0x24,&VData) ; // Register 0x24
|
|
//calculate voltage value
|
|
VData = VOL_DIVISOR_CALCULATE (VData,
|
|
Lsb_Unit,
|
|
R_Big,
|
|
R_Small);
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)VData;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN5Voltage
|
|
//
|
|
// Description: Get the VIN5 Voltage value in HWM space register.
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN5Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VData;
|
|
UINTN Lsb_Unit=8;//AMI_TODO:LSB unit is 8mv
|
|
UINTN R_Big=10; //AMI_TODO:Connect bigger divisor resistor
|
|
UINTN R_Small=10; //AMI_TODO:Connect smaller divisor resistor
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN5_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//AMI_TODO:Get value of Hwm Space raw data
|
|
GetValueWithIO(0x00,0x25,&VData) ; // Register 0x24
|
|
//calculate voltage value
|
|
VData = VOL_DIVISOR_CALCULATE (VData,
|
|
Lsb_Unit,
|
|
R_Big,
|
|
R_Small);
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)VData;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN6Voltage
|
|
//
|
|
// Description: Get the VIN6 Voltage value in HWM space register.
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN6Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VData;
|
|
UINTN Lsb_Unit=8;//AMI_TODO:LSB unit is 8mv
|
|
UINTN R_Big=10; //AMI_TODO:Connect bigger divisor resistor
|
|
UINTN R_Small=10; //AMI_TODO:Connect smaller divisor resistor
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN6_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//AMI_TODO:Get value of Hwm Space raw data
|
|
GetValueWithIO(0x00,0x26,&VData) ; // Register 0x24
|
|
//calculate voltage value
|
|
VData = VOL_DIVISOR_CALCULATE (VData,
|
|
Lsb_Unit,
|
|
R_Big,
|
|
R_Small);
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)VData;
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVBATVoltage
|
|
//
|
|
// Description:
|
|
// Get the VBAT Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// HWM_DATA *Data
|
|
//
|
|
// Output:
|
|
// HWM_DATA *Data
|
|
//
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVBATVoltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VData;
|
|
UINTN Lsb_Unit=8;//AMI_TODO:LSB unit is 8mv
|
|
UINTN R_Big=20; //AMI_TODO:Connect bigger divisor resistor
|
|
UINTN R_Small=20; //AMI_TODO:Connect smaller divisor resistor
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VBAT_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//AMI_TODO:Get value of Hwm Space raw data
|
|
GetValueWithIO(0x00,0x28,&VData) ; //bank0 Register 0x28
|
|
//calculate voltage value
|
|
VData = VOL_DIVISOR_CALCULATE (VData,
|
|
Lsb_Unit,
|
|
R_Big,
|
|
R_Small);
|
|
|
|
//pass to setup data which is UINT16 data
|
|
Data->Value = (UINT16)VData;
|
|
return;
|
|
}
|
|
|
|
SIO_EXTERNAL_FUN *IT8728FExternalFunList[] = {
|
|
GetSystemTemp1,
|
|
GetSystemTemp2,
|
|
GetSystemTemp3,
|
|
GetAndUpdateFan1Speed,
|
|
GetAndUpdateFan2Speed,
|
|
GetAndUpdateFan3Speed,
|
|
GetAndUpdateFan4Speed,
|
|
GetAndUpdateFan5Speed,
|
|
GetAndUpdateVIN0Voltage,
|
|
GetAndUpdateVIN1Voltage,
|
|
GetAndUpdateVIN2Voltage,
|
|
GetAndUpdateVIN3Voltage,
|
|
GetAndUpdateVIN4Voltage,
|
|
GetAndUpdateVIN5Voltage,
|
|
GetAndUpdateVIN6Voltage,
|
|
GetAndUpdateVBATVoltage,
|
|
NULL
|
|
};
|
|
|
|
//<AMI_PHDR_START>
|
|
//-------------------------------------------------------------------------
|
|
// Procedure: IT8728F_HWM_CallBack
|
|
//
|
|
// Description:
|
|
// Form Callback Function.Will be called every 100m Polling for data Updates.
|
|
//
|
|
// Input:
|
|
// IN EFI_HII_HANDLE HiiHandle
|
|
// IN UINT16 Class
|
|
// IN UINT16 SubClass
|
|
// IN UINT16 Key
|
|
//
|
|
// Output: VOID
|
|
//
|
|
// Modified: Nothing
|
|
//
|
|
// Referrals: None
|
|
//
|
|
// Note:
|
|
//-------------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
VOID IT8728F_HWM_CallBack(
|
|
IN EFI_HII_HANDLE HiiHandle,
|
|
IN UINT16 Class,
|
|
IN UINT16 SubClass,
|
|
IN UINT16 Key
|
|
)
|
|
{
|
|
UINTN index;
|
|
HWM_DATA Data;
|
|
CALLBACK_PARAMETERS *Callback = NULL;
|
|
|
|
Callback = GetCallbackParameters();
|
|
if(!Callback || Callback->Action != EFI_BROWSER_ACTION_CHANGING)
|
|
return;
|
|
|
|
for(index=0; IT8728FExternalFunList[index]; index++) {
|
|
IT8728FExternalFunList[index](&Data);
|
|
HHMCommon(Data.Value, Data.Type, Data.Token, Data.OddPos, HiiHandle);
|
|
}
|
|
|
|
|
|
return;
|
|
}
|
|
|
|
//*************************************************************************
|
|
//*************************************************************************
|
|
//** **
|
|
//** (C)Copyright 1985-2013, American Megatrends, Inc. **
|
|
//** **
|
|
//** All Rights Reserved. **
|
|
//** **
|
|
//** 5555 Oakbrook Parkway, Suite 200, Norcross, GA 30093 **
|
|
//** **
|
|
//** Phone: (770)-246-8600 **
|
|
//** **
|
|
//*************************************************************************
|
|
//*************************************************************************
|