audk/Vlv2TbltDevicePkg/Include/Guid/SensorInfoVariable.h

280 lines
11 KiB
C

/*++
Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>
SPDX-License-Identifier: BSD-2-Clause-Patent
Module Name:
SensorInfoVariable.h
Abstract:
GUID used for Sensor Info variable.
--*/
//
// Module: SensorInfoVariable.h
//
// Description: Provides structure and literal definitions for the
// Sensor Information Variable. The BIOS will provide
// this variable to runtime applications via the EFI
// GetVariable function.
//
// Notes: 1. When defining and initializing the variable within the
// BIOS, the module will define the structure using the
// typedef macros in a block. For an ATX board using a
// single Heceta 6P, which has 4 temperature sensors, 6
// voltage sensors, 4 fan speed sensors and 3 fan speed
// controllers, this block would be declared as follows:
//
// TYPEDEF_TEMP_SENSOR_SECTION(4);
// TYPEDEF_VOLT_SENSOR_SECTION(6);
// TYPEDEF_FAN_SENSOR_SECTION(4);
// TYPEDEF_FAN_CONTROLLER_SENSOR(3);
// TYPEDEF_SENSOR_INFO_VAR;
//
// 2. When crafting code to access the variable, the module
// will also need to invoke the typedef macros in a
// block but, since it cannot declare a structure for the
// overall variable (because array lengths will vary), it
// cannot use TYPEDEF_SENSOR_INFO_VAR. The block will
// typically be used as follows:
//
// TYPEDEF_TEMP_SENSOR_SECTION(1);
// TYPEDEF_VOLT_SENSOR_SECTION(1);
// TYPEDEF_FAN_SENSOR_SECTION(1);
// TYPEDEF_FAN_CONTROLLER_SENSOR(1);
//
// The structure buffer should instead be declared as a
// BYTE array. Pointers to the various sections can then
// be built using the XXXX_SECTION_LEN macros...
//
#ifndef _SENSOR_INFO_VAR_GUID_H_
#define _SENSOR_INFO_VAR_GUID_H_
#define SENSOR_INFO_VAR_GUID \
{ \
0xE59E7B4D, 0x06DC, 0x44AB, 0xB3, 0x6D, 0x5E, 0xD7, 0x78, 0x9C, 0x53, 0x0A \
}
extern EFI_GUID gEfiSensorInfoVarGuid;
extern CHAR16 gEfiSensorInfoVarName[];
extern CHAR16 gEfiSensorInfoVarNameWithPassword[];
#define SENSOR_INFO_VAR_NAME L"SensorInfoVar"
#define SENSOR_INFO_VAR_NAME_WITH_PASSWORD SENSOR_INFO_VAR_NAME L"S4k?A^7!"
//
// Sensor/Controller usage definitions
//
#define UNKNOWN_OTHER 0
//
// Temperature Sensors
//
#define CPU_CORE_TEMPERATURE 1
#define CPU_DIE_TEMPERATURE 2
#define ICH_TEMPERATURE 3
#define MCH_TEMPERATURE 4
#define VR_TEMPERATURE 5
#define MEMORY_TEMPERATURE 6
#define MOTHERBOARD_AMBIENT_TEMPERATURE 7
#define SYSTEM_AMBIENT_AIR_TEMPERATURE 8
#define CPU_INLET_AIR_TEMPERATURE 9
#define SYSTEM_INLET_AIR_TEMPERATURE 10
#define SYSTEM_OUTLET_AIR_TEMPERATURE 11
#define PSU_HOTSPOT_TEMPERATURE 12
#define PSU_INLET_AIR_TEMPERATURE 13
#define PSU_OUTLET_AIR_TEMPERATURE 14
#define DRIVE_TEMPERATURE 15
#define GPU_TEMPERATURE 16
#define IOH_TEMPERATURE 17
#define LAST_TEMPERATURE 17
//
// Voltage Sensors
//
#define PLUS_12_VOLTS 1
#define NEG_12_VOLTS 2
#define PLUS_5_VOLTS 3
#define PLUS_5_VOLT_BACKUP 4
#define NEG_5_VOLTS 5
#define PLUS_3P3_VOLTS 6
#define PLUS_2P5_VOLTS 7
#define PLUS_1P5_VOLTS 8
#define CPU_1_VCCP_VOLTAGE 9
#define CPU_2_VCCP_VOLTAGE 10
#define CPU_3_VCCP_VOLTAGE 11
#define CPU_4_VCCP_VOLTAGE 12
#define PSU_INPUT_VOLTAGE 13
#define MCH_VCC_VOLTAGE 14
#define PLUS_3P3_VOLT_STANDBY 15
#define CPU_VTT_VOLTAGE 16
#define PLUS_1P8_VOLTS 17
#define LAST_VOLTAGE 17
//
// Fan Speed Sensors and Controllers.
//
#define CPU_COOLING_FAN 1
#define SYSTEM_COOLING_FAN 2
#define MCH_COOLING_FAN 3
#define VR_COOLING_FAN 4
#define CHASSIS_COOLING_FAN 5
#define CHASSIS_INLET_FAN 6
#define CHASSIS_OUTLET_FAN 7
#define PSU_COOLING_FAN 8
#define PSU_INLET_FAN 9
#define PSU_OUTLET_FAN 10
#define DRIVE_COOLING_FAN 11
#define GPU_COOLING_FAN 12
#define AUX_COOLING_FAN 13
#define IOH_COOLING_FAN 14
#define LAST_FAN 14
//
// Fan Type Definitions
//
#define FAN_TYPE_UNKNOWN 0
#define FAN_3WIRE_PULSE 1
#define FAN_3WIRE_VOLTAGE 2
#define FAN_4WIRE 3
#pragma pack(1)
//
// TEMP_SENSOR_INFO - Structure providing info for a temperature sensor.
//
typedef struct _TEMP_SENSOR_INFO
{
UINT8 byDevice; // Device index
UINT8 byIndex; // Physical sensor index
UINT8 byUsage; // Usage indicator
UINT8 bRelative; // Relative vs. Absolute readings
} TEMP_SENSOR_INFO, *P_TEMP_SENSOR_INFO;
//
// TYPEDEF_TEMP_SENSOR_SECTION - Macro that can be used to typedef the
// TEMP_SENSOR_SECTION structure, which provides information about all
// temperature sensors.
//
#define TYPEDEF_TEMP_SENSOR_SECTION(count) \
typedef struct _TEMP_SENSOR_SECTION \
{ \
UINT8 byCount; \
TEMP_SENSOR_INFO stSensor[count]; \
\
} TEMP_SENSOR_SECTION, *P_TEMP_SENSOR_SECTION
//
// VOLT_SENSOR_INFO - Structure providing info for a voltage sensor.
//
typedef struct _VOLT_SENSOR_INFO
{
UINT8 byDevice; // Device index
UINT8 byIndex; // Physical sensor index
UINT8 byUsage; // Usage indicator
} VOLT_SENSOR_INFO, *P_VOLT_SENSOR_INFO;
//
// TYPEDEF_VOLT_SENSOR_SECTION - Macro that can be used to typedef the
// VOLT_SENSOR_SECTION structure, which provides information about all
// voltage sensors.
//
#define TYPEDEF_VOLT_SENSOR_SECTION(count) \
typedef struct _VOLT_SENSOR_SECTION \
{ \
UINT8 byCount; \
VOLT_SENSOR_INFO stSensor[count]; \
\
} VOLT_SENSOR_SECTION, *P_VOLT_SENSOR_SECTION
//
// FAN_SENSOR_INFO - Structure providing info for a fan speed sensor.
//
typedef struct _FAN_SENSOR_INFO
{
UINT8 byDevice; // Device index
UINT8 byIndex; // Physical sensor index
UINT8 byUsage; // Usage indicator
UINT8 byType; // Fan type
UINT8 byController; // Associated Fan Controller
} FAN_SENSOR_INFO, *P_FAN_SENSOR_INFO;
//
// TYPEDEF_FAN_SENSOR_SECTION - Macro that can be used to typedef the
// FAN_SENSOR_SECTION structure, which provides information about all fan
// speed sensors.
//
#define TYPEDEF_FAN_SENSOR_SECTION(count) \
typedef struct _FAN_SENSOR_SECTION \
{ \
UINT8 byCount; \
FAN_SENSOR_INFO stSensor[count]; \
\
} FAN_SENSOR_SECTION, *P_FAN_SENSOR_SECTION
//
// FAN_CONTROLLER_INFO - Structure providing info for a fan speed controller.
//
#define MAX_ASSOC_FANS 4
#define ASSOC_UNUSED 0xFF
typedef struct _FAN_CONTROLLER_INFO
{
UINT8 byDevice; // Device index
UINT8 byIndex; // Physical Controller Index
UINT8 byUsage; // Usage Indicator
UINT8 byFan[MAX_ASSOC_FANS]; // Associated Fan Sensors
} FAN_CONTROLLER_INFO, *P_FAN_CONTROLLER_INFO;
//
// TYPEDEF_FAN_CONTROLLER_SECTION - Macro that can be used to typedef the
// FAN_CONTROLLER_SECTION structure, which provides information about all
// fan speed controllers.
//
#define TYPEDEF_FAN_CONTROLLER_SECTION(count) \
typedef struct _FAN_CONTROLLER_SECTION \
{ \
UINT8 byCount; \
FAN_CONTROLLER_INFO stController[count]; \
\
} FAN_CONTROLLER_SECTION, *P_FAN_CONTROLLER_SECTION
//
// TYPEDEF_SENSOR_INFO_VAR - Macro that can be used to typedef the
// SENSOR_INFO_VAR structure, which provides information about all sensors
// and fan speed controllers. The other TYPEDEF macros must be invoked
// before using this one...
//
#define TYPEDEF_SENSOR_INFO_VAR \
typedef struct _SENSOR_INFO_VAR \
{ \
TEMP_SENSOR_SECTION stTemps; \
VOLT_SENSOR_SECTION stVolts; \
FAN_SENSOR_SECTION stFans; \
FAN_CONTROLLER_SECTION stCtrls; \
\
} SENSOR_INFO_VAR, *P_SENSOR_INFO_VAR
#pragma pack()
#endif