1024 lines
25 KiB
C
1024 lines
25 KiB
C
//**********************************************************************
|
|
//**********************************************************************
|
|
//** **
|
|
//** (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: <F81866HwmSetup.c>
|
|
//
|
|
// Description: This is related to individual HWM devices.
|
|
//
|
|
//<AMI_FHDR_END>
|
|
//**********************************************************************
|
|
//----------------------------------------------------------------------
|
|
// Include Files
|
|
//----------------------------------------------------------------------
|
|
#include <AmiDxeLib.h>
|
|
#include <Setup.h>
|
|
#include <SioSetup.h>
|
|
#include "AaeonIoSetup.h"
|
|
//----------------------------------------------------------------------
|
|
// Constants, Macros and Type Definitions
|
|
//----------------------------------------------------------------------
|
|
|
|
//----------------------------------------------------------------------
|
|
//Variable, Prototype, and External Declarations
|
|
//----------------------------------------------------------------------
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
////////////OEM PORTING REQUIRED/////////////OEM PORTING REQUIRED///////
|
|
////////////////////////////////////////////////////////////////////////
|
|
//<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:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetValueWithIO (
|
|
IN UINT8 BankNo,
|
|
IN UINT8 Register,
|
|
OUT UINTN *Value
|
|
)
|
|
{
|
|
|
|
// Enter Bank NO!
|
|
|
|
//Read the data from register
|
|
IoWrite8(F81866_HWM_INDEX_PORT, Register);
|
|
*Value = IoRead8(F81866_HWM_DATA_PORT);
|
|
return;
|
|
}
|
|
|
|
//RayWu, ADD 2014/12/03 >>
|
|
#if defined(AAEON_CPU_CORE_TEMP_DETECTION) && (AAEON_CPU_CORE_TEMP_DETECTION)
|
|
void AaeonCpuCoreTemperatureDetection(IN OUT HWM_DATA * Data)
|
|
{
|
|
UINTN T1;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP1_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = 0x00;
|
|
|
|
#if defined(INTEL_DTS_SUPPORT) && (INTEL_DTS_SUPPORT)
|
|
{
|
|
// F81866_IntelDTS_Miles, remove depency for baytrail code >>>>>
|
|
//#include "Vlv2DeviceRefCodePkg/ValleyView2Soc/CPU/Include/CpuRegs.h"
|
|
#ifndef EFI_MSR_CPU_THERM_TEMPERATURE
|
|
#define EFI_MSR_CPU_THERM_TEMPERATURE 0x1A2
|
|
#endif
|
|
#ifndef EFI_MSR_IA32_CR_THERM_STATUS
|
|
#define EFI_MSR_IA32_CR_THERM_STATUS 0x19C
|
|
#endif
|
|
// F81866_IntelDTS_Miles <<<<<
|
|
extern UINT64 ReadMsr(UINT32 Msr);
|
|
|
|
EFI_STATUS Status = EFI_SUCCESS;
|
|
UINT8 RegTmp8, TjMax;
|
|
UINT64 RegTmp64;
|
|
|
|
TjMax = (UINT8)(ReadMsr(EFI_MSR_CPU_THERM_TEMPERATURE) >> 16);
|
|
RegTmp64 = ReadMsr(EFI_MSR_IA32_CR_THERM_STATUS);
|
|
RegTmp8 = (UINT8)TjMax - (UINT8)((RegTmp64 >> 16) & 0x7F);
|
|
|
|
T1 = (UINTN)RegTmp8;
|
|
}
|
|
#endif //INTEL_DTS_SUPPORT
|
|
|
|
|
|
if(T1 == 0x80)
|
|
Data->Value = 0x00;
|
|
else
|
|
Data->Value = (UINT16)T1;
|
|
|
|
return;
|
|
}
|
|
#endif //AAEON_CPU_CORE_TEMP_DETECTION
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateTemperature1
|
|
//
|
|
// Description:
|
|
// Get Temperature1 value in HWM space register and update to HII.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateTemperature1(
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP1_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x72,&T1); // Bank0 Register 0x72.
|
|
if(T1 == 0x80)
|
|
Data->Value = 0x00;
|
|
else
|
|
Data->Value = (UINT16)T1;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateTemperature2
|
|
//
|
|
// Description:
|
|
// Get the second System temperature value in HWM space register and update
|
|
// to HII.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateTemperature2 (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP2_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x74,&T1); // Bank0 Register 0x74.
|
|
if(T1 == 0x80)
|
|
Data->Value = 0x00;
|
|
else
|
|
Data->Value = (UINT16)T1;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateTemperature3
|
|
//
|
|
// Description:
|
|
// Get the second System temperature value in HWM space register and update
|
|
// to Hii.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateTemperature3 (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP3_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x7E,&T1); // Bank0 Register 0x7E.
|
|
if(T1 == 0x80)
|
|
Data->Value = 0x00;
|
|
else
|
|
Data->Value = (UINT16)T1;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateTemperature4
|
|
//
|
|
// Description:
|
|
// Get the second System temperature value in HWM space register and update
|
|
// to HII.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateTemperature4 (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP4_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x7A,&T1); // Bank0 Register 0x7A.
|
|
if(T1 == 0x80)
|
|
Data->Value = 0x00;
|
|
else
|
|
Data->Value = (UINT16)T1;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateTemperature5
|
|
//
|
|
// Description:
|
|
// Get the second System temperature value in HWM space register and update
|
|
// to HII.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateTemperature5 (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP5_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x7B,&T1); // Bank0 Register 0x7B.
|
|
if(T1 == 0x80)
|
|
Data->Value = 0x00;
|
|
else
|
|
Data->Value = (UINT16)T1;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateTemperature6
|
|
//
|
|
// Description:
|
|
// Get the second System temperature value in HWM space register and update
|
|
// to HII.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateTemperature6 (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN T1;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_SYSTEM_TEMP6_VALUE);
|
|
Data->Type = TEMPERATURE;
|
|
Data->OddPos = 0x00;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x7C,&T1); // Bank0 Register 0x7C.
|
|
if(T1 == 0x80)
|
|
Data->Value = 0x00;
|
|
else
|
|
Data->Value = (UINT16)T1;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateFan1Speed
|
|
//
|
|
// Description:
|
|
// Get the First FAN Speed value in HWM space register and update it to HII.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateFan1Speed (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN Speed;
|
|
UINTN Divisor;
|
|
|
|
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,0xA0,&Speed); // Register 0xA0
|
|
Divisor = (UINT8)Speed << 8;
|
|
GetValueWithIO(0x00,0xA1,&Speed); // Register 0xA1
|
|
Divisor |= (UINT8) Speed;
|
|
if( (Divisor == 0xFFFF) || (Divisor == 0x0FFF) || (Divisor == 0 )) {
|
|
Speed = 0;
|
|
} else {
|
|
Speed = (UINTN)1500000/Divisor;
|
|
}
|
|
Data->Value = (UINT16)Speed;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateFan2Speed
|
|
//
|
|
// Description:
|
|
// Get FAN2 Speed value in HWM space register and update it to HII.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateFan2Speed (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN Speed;
|
|
UINTN Divisor;
|
|
|
|
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,0xB0,&Speed); // Register 0xA0
|
|
Divisor = (UINT8)Speed << 8;
|
|
GetValueWithIO(0x00,0xB1,&Speed); // Register 0xA1
|
|
Divisor |= (UINT8) Speed;
|
|
|
|
if( (Divisor == 0xFFFF) || (Divisor == 0x0FFF) || (Divisor == 0 )) {
|
|
Speed = 0;
|
|
} else {
|
|
Speed = (UINTN)1500000/Divisor;
|
|
}
|
|
|
|
Data->Value = (UINT16)Speed;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateFan3Speed
|
|
//
|
|
// Description:
|
|
// Get FAN2 Speed value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateFan3Speed (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN Speed;
|
|
UINTN Divisor;
|
|
|
|
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,0xC0,&Speed); // Register 0xA0
|
|
Divisor = (UINT8)Speed << 8;
|
|
GetValueWithIO(0x00,0xC1,&Speed); // Register 0xA1
|
|
Divisor |= (UINT8) Speed;
|
|
|
|
if( (Divisor == 0xFFFF) || (Divisor == 0x0FFF) || (Divisor == 0 )) {
|
|
Speed = 0;
|
|
} else {
|
|
Speed = (UINTN)1500000/Divisor;
|
|
}
|
|
Data->Value = (UINT16)Speed;
|
|
|
|
return;
|
|
}
|
|
//RayWu, ADD 2014/12/03 >>
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN1Voltage
|
|
//
|
|
// Description: Get the Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN1Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VIN1;
|
|
UINTN Ra = VIN1_RA;
|
|
UINTN Rb = VIN1_RB;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN1_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x21,&VIN1) ; // Register 0x21
|
|
VIN1 = VIN1*8*(Ra+Rb)/Rb;
|
|
|
|
Data->Value = (UINT16)VIN1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN2Voltage
|
|
//
|
|
// Description: Get the Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN2Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VIN2;
|
|
UINTN Ra = VIN2_RA;
|
|
UINTN Rb = VIN2_RB;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN2_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x22,&VIN2) ; // Register 0x22
|
|
VIN2 = VIN2*8*(Ra+Rb)/Rb;
|
|
Data->Value = (UINT16)VIN2;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN3Voltage
|
|
//
|
|
// Description:
|
|
// Get the Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN3Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VIN3;
|
|
UINTN Ra = VIN3_RA;
|
|
UINTN Rb = VIN3_RB;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN3_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x23,&VIN3) ; // Register 0x23
|
|
VIN3 = VIN3*8*(Ra+Rb)/Rb;
|
|
Data->Value = (UINT16)VIN3;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVIN4Voltage
|
|
//
|
|
// Description:
|
|
// Get the Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVIN4Voltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VIN4;
|
|
UINTN Ra = VIN4_RA;
|
|
UINTN Rb = VIN4_RB;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VIN4_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x24,&VIN4) ; // Register 0x24
|
|
VIN4 = VIN4*8*(Ra+Rb)/Rb;
|
|
Data->Value = (UINT16)VIN4;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVSB5VVoltage
|
|
//
|
|
// Description:
|
|
// Get the Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVSB5VVoltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VSB5V;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VSB5V_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x27,&VSB5V) ; // Register 0x27
|
|
VSB5V = VSB5V*8*3;
|
|
Data->Value = (UINT16)VSB5V;
|
|
|
|
return;
|
|
}
|
|
//RayWu, ADD 2014/12/03 <<
|
|
//RayWu, REMOVE 2014/12/03 >>
|
|
////<AMI_PHDR_START>
|
|
////----------------------------------------------------------------------
|
|
//// Procedure: GetAndUpdateVIN1Voltage
|
|
////
|
|
//// Description: Get the Voltage value in HWM space register.
|
|
////
|
|
//// Input:
|
|
//// UINTN IN OUT HWM_DATA * Data
|
|
////
|
|
//// Output:
|
|
//// None
|
|
////
|
|
////----------------------------------------------------------------------
|
|
////<AMI_PHDR_END>
|
|
//void
|
|
//GetAndUpdateVIN1Voltage (
|
|
// IN OUT HWM_DATA * Data
|
|
//)
|
|
//{
|
|
// UINTN VIN1;
|
|
//
|
|
// Data->Token = STRING_TOKEN(STR_HWM1_VIN1_VALUE);
|
|
// Data->Type = VOLTAGE;
|
|
// Data->OddPos = 0x03;
|
|
//
|
|
// //OEM_TODO:Get value with HWM IO interface
|
|
// GetValueWithIO(0x00,0x21,&VIN1) ; // Register 0x21
|
|
// VIN1 = VIN1*8;
|
|
//
|
|
// Data->Value = (UINT16)VIN1;
|
|
//
|
|
// return;
|
|
//
|
|
//}
|
|
//
|
|
////<AMI_PHDR_START>
|
|
////----------------------------------------------------------------------
|
|
//// Procedure: GetAndUpdateVIN2Voltage
|
|
////
|
|
//// Description: Get the Voltage value in HWM space register.
|
|
////
|
|
//// Input:
|
|
//// UINTN IN OUT HWM_DATA * Data
|
|
////
|
|
//// Output:
|
|
//// None
|
|
////
|
|
////----------------------------------------------------------------------
|
|
////<AMI_PHDR_END>
|
|
//void
|
|
//GetAndUpdateVIN2Voltage (
|
|
// IN OUT HWM_DATA * Data
|
|
//)
|
|
//{
|
|
// UINTN VIN2;
|
|
//
|
|
// Data->Token = STRING_TOKEN(STR_HWM1_VIN2_VALUE);
|
|
// Data->Type = VOLTAGE;
|
|
// Data->OddPos = 0x03;
|
|
//
|
|
// //OEM_TODO:Get value with HWM IO interface
|
|
// GetValueWithIO(0x00,0x22,&VIN2) ; // Register 0x22
|
|
// VIN2 = VIN2*8*(20+47)/47;
|
|
// Data->Value = (UINT16)VIN2;
|
|
//
|
|
// return;
|
|
//}
|
|
//
|
|
////<AMI_PHDR_START>
|
|
////----------------------------------------------------------------------
|
|
//// Procedure: GetAndUpdateVIN3Voltage
|
|
////
|
|
//// Description:
|
|
//// Get the Voltage value in HWM space register.
|
|
////
|
|
//// Input:
|
|
//// UINTN IN OUT HWM_DATA * Data
|
|
////
|
|
//// Output:
|
|
//// None
|
|
////
|
|
////----------------------------------------------------------------------
|
|
////<AMI_PHDR_END>
|
|
//void
|
|
//GetAndUpdateVIN3Voltage (
|
|
// IN OUT HWM_DATA * Data
|
|
//)
|
|
//{
|
|
// UINTN VIN3;
|
|
//
|
|
// Data->Token = STRING_TOKEN(STR_HWM1_VIN3_VALUE);
|
|
// Data->Type = VOLTAGE;
|
|
// Data->OddPos = 0x03;
|
|
//
|
|
// //OEM_TODO:Get value with HWM IO interface
|
|
// GetValueWithIO(0x00,0x23,&VIN3) ; // Register 0x23
|
|
// VIN3 = VIN3*8;
|
|
// Data->Value = (UINT16)VIN3;
|
|
//
|
|
// return;
|
|
//}
|
|
//
|
|
////<AMI_PHDR_START>
|
|
////----------------------------------------------------------------------
|
|
//// Procedure: GetAndUpdateVIN4Voltage
|
|
////
|
|
//// Description:
|
|
//// Get the Voltage value in HWM space register.
|
|
////
|
|
//// Input:
|
|
//// UINTN IN OUT HWM_DATA * Data
|
|
////
|
|
//// Output:
|
|
//// None
|
|
////
|
|
////----------------------------------------------------------------------
|
|
////<AMI_PHDR_END>
|
|
//void
|
|
//GetAndUpdateVIN4Voltage (
|
|
// IN OUT HWM_DATA * Data
|
|
//)
|
|
//{
|
|
// UINTN VIN4;
|
|
//
|
|
// Data->Token = STRING_TOKEN(STR_HWM1_VIN4_VALUE);
|
|
// Data->Type = VOLTAGE;
|
|
// Data->OddPos = 0x03;
|
|
//
|
|
// //OEM_TODO:Get value with HWM IO interface
|
|
// GetValueWithIO(0x00,0x24,&VIN4) ; // Register 0x24
|
|
// VIN4 = VIN4*8*(100+100)/100;
|
|
// Data->Value = (UINT16)VIN4;
|
|
//
|
|
// return;
|
|
//}
|
|
//
|
|
////<AMI_PHDR_START>
|
|
////----------------------------------------------------------------------
|
|
//// Procedure: GetAndUpdateVSB5VVoltage
|
|
////
|
|
//// Description:
|
|
//// Get the Voltage value in HWM space register.
|
|
////
|
|
//// Input:
|
|
//// UINTN IN OUT HWM_DATA * Data
|
|
////
|
|
//// Output:
|
|
//// None
|
|
////
|
|
////----------------------------------------------------------------------
|
|
////<AMI_PHDR_END>
|
|
//void
|
|
//GetAndUpdateVSB5VVoltage (
|
|
// IN OUT HWM_DATA * Data
|
|
//)
|
|
//{
|
|
// UINTN VSB5V;
|
|
//
|
|
// Data->Token = STRING_TOKEN(STR_HWM1_VSB5V_VALUE);
|
|
// Data->Type = VOLTAGE;
|
|
// Data->OddPos = 0x03;
|
|
//
|
|
// //OEM_TODO:Get value with HWM IO interface
|
|
// GetValueWithIO(0x00,0x27,&VSB5V) ; // Register 0x27
|
|
// VSB5V = VSB5V*8*2;
|
|
// Data->Value = (UINT16)VSB5V;
|
|
//
|
|
// return;
|
|
//}
|
|
//RayWu, REMOVE 2014/12/03 <<
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVCC3VVoltage
|
|
//
|
|
// Description:
|
|
// Get the Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVCC3VVoltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VCC3V;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VCC3V_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x20,&VCC3V) ; // Register 0x20
|
|
VCC3V = VCC3V * 8 * 2;
|
|
|
|
Data->Value = (UINT16)VCC3V;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVSB3VVoltage
|
|
//
|
|
// Description:
|
|
// Get the Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVSB3VVoltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VSB3V;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VSB3V_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x25,&VSB3V) ; // Register 0x25
|
|
VSB3V = VSB3V * 8 * 2 ;
|
|
|
|
Data->Value = (UINT16)VSB3V;
|
|
|
|
return;
|
|
}
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: GetAndUpdateVBATVoltage
|
|
//
|
|
// Description:
|
|
// Get the Voltage value in HWM space register.
|
|
//
|
|
// Input:
|
|
// UINTN IN OUT HWM_DATA * Data
|
|
//
|
|
// Output:
|
|
// None
|
|
|
|
//
|
|
//----------------------------------------------------------------------
|
|
//<AMI_PHDR_END>
|
|
void
|
|
GetAndUpdateVBATVoltage (
|
|
IN OUT HWM_DATA * Data
|
|
)
|
|
{
|
|
UINTN VBAT;
|
|
|
|
Data->Token = STRING_TOKEN(STR_HWM1_VBAT_VALUE);
|
|
Data->Type = VOLTAGE;
|
|
Data->OddPos = 0x03;
|
|
|
|
//OEM_TODO:Get value with HWM IO interface
|
|
GetValueWithIO(0x00,0x26,&VBAT) ; // Register 0x26
|
|
VBAT = VBAT*8*2;
|
|
Data->Value = (UINT16)VBAT;
|
|
|
|
return;
|
|
}
|
|
|
|
SIO_EXTERNAL_FUN *F81866ExternalFunList[] = {
|
|
//RayWu, ADD 2014/12/03 >>
|
|
#if defined(AAEON_CPU_CORE_TEMP_DETECTION) && (AAEON_CPU_CORE_TEMP_DETECTION)
|
|
AaeonCpuCoreTemperatureDetection,
|
|
GetAndUpdateTemperature2,
|
|
GetAndUpdateTemperature3,
|
|
GetAndUpdateTemperature4,
|
|
GetAndUpdateTemperature5,
|
|
GetAndUpdateTemperature6,
|
|
#else
|
|
GetAndUpdateTemperature1,
|
|
GetAndUpdateTemperature2,
|
|
GetAndUpdateTemperature3,
|
|
GetAndUpdateTemperature4,
|
|
GetAndUpdateTemperature5,
|
|
GetAndUpdateTemperature6,
|
|
#endif //AAEON_CPU_CORE_TEMP_DETECTION
|
|
//RayWu, ADD 2014/12/03 <<
|
|
//RayWu, REMOVE 2014/12/03 >>
|
|
//GetAndUpdateTemperature1,
|
|
//GetAndUpdateTemperature2,
|
|
//GetAndUpdateTemperature3,
|
|
//GetAndUpdateTemperature4,
|
|
//GetAndUpdateTemperature5,
|
|
//GetAndUpdateTemperature6,
|
|
//RayWu, REMOVE 2014/12/03 <<
|
|
GetAndUpdateFan1Speed,
|
|
GetAndUpdateFan2Speed,
|
|
GetAndUpdateFan3Speed,
|
|
GetAndUpdateVIN1Voltage,
|
|
GetAndUpdateVIN2Voltage,
|
|
GetAndUpdateVIN3Voltage,
|
|
GetAndUpdateVIN4Voltage,
|
|
GetAndUpdateVSB5VVoltage,
|
|
GetAndUpdateVCC3VVoltage,
|
|
GetAndUpdateVSB3VVoltage,
|
|
GetAndUpdateVBATVoltage,
|
|
NULL
|
|
};
|
|
|
|
//<AMI_PHDR_START>
|
|
//----------------------------------------------------------------------
|
|
// Procedure: F81866_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 F81866_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; F81866ExternalFunList[index]; index++) {
|
|
F81866ExternalFunList[index](&Data);
|
|
AaeonHHMCommon(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 **
|
|
//** **
|
|
//**********************************************************************
|
|
//**********************************************************************
|