]> git.proxmox.com Git - mirror_edk2.git/blame - Vlv2TbltDevicePkg/Include/Guid/SensorInfoVariable.h
Vlv2TbltDevicePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / Vlv2TbltDevicePkg / Include / Guid / SensorInfoVariable.h
CommitLineData
3cbfba02
DW
1/*++\r
2\r
3 Copyright (c) 2004 - 2014, Intel Corporation. All rights reserved.<BR>\r
4 \r\r
9dc8036d
MK
5 SPDX-License-Identifier: BSD-2-Clause-Patent\r
6\r
3cbfba02
DW
7 \r\r
8\r
9\r
10\r
11Module Name:\r
12\r
13 SensorInfoVariable.h\r
14\r
15Abstract:\r
16\r
17 GUID used for Sensor Info variable.\r
18\r
19--*/\r
20\r
21\r
22//\r
23// Module: SensorInfoVariable.h\r
24//\r
25// Description: Provides structure and literal definitions for the\r
26// Sensor Information Variable. The BIOS will provide\r
27// this variable to runtime applications via the EFI\r
28// GetVariable function.\r
29//\r
30// Notes: 1. When defining and initializing the variable within the\r
31// BIOS, the module will define the structure using the\r
32// typedef macros in a block. For an ATX board using a\r
33// single Heceta 6P, which has 4 temperature sensors, 6\r
34// voltage sensors, 4 fan speed sensors and 3 fan speed\r
35// controllers, this block would be declared as follows:\r
36//\r
37// TYPEDEF_TEMP_SENSOR_SECTION(4);\r
38// TYPEDEF_VOLT_SENSOR_SECTION(6);\r
39// TYPEDEF_FAN_SENSOR_SECTION(4);\r
40// TYPEDEF_FAN_CONTROLLER_SENSOR(3);\r
41// TYPEDEF_SENSOR_INFO_VAR;\r
42//\r
43// 2. When crafting code to access the variable, the module\r
44// will also need to invoke the typedef macros in a\r
45// block but, since it cannot declare a structure for the\r
46// overall variable (because array lengths will vary), it\r
47// cannot use TYPEDEF_SENSOR_INFO_VAR. The block will\r
48// typically be used as follows:\r
49//\r
50// TYPEDEF_TEMP_SENSOR_SECTION(1);\r
51// TYPEDEF_VOLT_SENSOR_SECTION(1);\r
52// TYPEDEF_FAN_SENSOR_SECTION(1);\r
53// TYPEDEF_FAN_CONTROLLER_SENSOR(1);\r
54//\r
55// The structure buffer should instead be declared as a\r
56// BYTE array. Pointers to the various sections can then\r
57// be built using the XXXX_SECTION_LEN macros...\r
58//\r
59\r
60\r
61#ifndef _SENSOR_INFO_VAR_GUID_H_\r
62#define _SENSOR_INFO_VAR_GUID_H_\r
63\r
64#define SENSOR_INFO_VAR_GUID \\r
65 { \\r
66 0xE59E7B4D, 0x06DC, 0x44AB, 0xB3, 0x6D, 0x5E, 0xD7, 0x78, 0x9C, 0x53, 0x0A \\r
67 }\r
68\r
69extern EFI_GUID gEfiSensorInfoVarGuid;\r
70extern CHAR16 gEfiSensorInfoVarName[];\r
71extern CHAR16 gEfiSensorInfoVarNameWithPassword[];\r
72\r
73#define SENSOR_INFO_VAR_NAME L"SensorInfoVar"\r
74#define SENSOR_INFO_VAR_NAME_WITH_PASSWORD SENSOR_INFO_VAR_NAME L"S4k?A^7!"\r
75\r
76//\r
77// Sensor/Controller usage definitions\r
78//\r
79\r
80#define UNKNOWN_OTHER 0\r
81\r
82//\r
83// Temperature Sensors\r
84//\r
85#define CPU_CORE_TEMPERATURE 1\r
86#define CPU_DIE_TEMPERATURE 2\r
87#define ICH_TEMPERATURE 3\r
88#define MCH_TEMPERATURE 4\r
89#define VR_TEMPERATURE 5\r
90#define MEMORY_TEMPERATURE 6\r
91#define MOTHERBOARD_AMBIENT_TEMPERATURE 7\r
92#define SYSTEM_AMBIENT_AIR_TEMPERATURE 8\r
93#define CPU_INLET_AIR_TEMPERATURE 9\r
94#define SYSTEM_INLET_AIR_TEMPERATURE 10\r
95#define SYSTEM_OUTLET_AIR_TEMPERATURE 11\r
96#define PSU_HOTSPOT_TEMPERATURE 12\r
97#define PSU_INLET_AIR_TEMPERATURE 13\r
98#define PSU_OUTLET_AIR_TEMPERATURE 14\r
99#define DRIVE_TEMPERATURE 15\r
100#define GPU_TEMPERATURE 16\r
101#define IOH_TEMPERATURE 17\r
102\r
103#define LAST_TEMPERATURE 17\r
104\r
105//\r
106// Voltage Sensors\r
107//\r
108#define PLUS_12_VOLTS 1\r
109#define NEG_12_VOLTS 2\r
110#define PLUS_5_VOLTS 3\r
111#define PLUS_5_VOLT_BACKUP 4\r
112#define NEG_5_VOLTS 5\r
113#define PLUS_3P3_VOLTS 6\r
114#define PLUS_2P5_VOLTS 7\r
115#define PLUS_1P5_VOLTS 8\r
116#define CPU_1_VCCP_VOLTAGE 9\r
117#define CPU_2_VCCP_VOLTAGE 10\r
118#define CPU_3_VCCP_VOLTAGE 11\r
119#define CPU_4_VCCP_VOLTAGE 12\r
120#define PSU_INPUT_VOLTAGE 13\r
121#define MCH_VCC_VOLTAGE 14\r
122#define PLUS_3P3_VOLT_STANDBY 15\r
123#define CPU_VTT_VOLTAGE 16\r
124#define PLUS_1P8_VOLTS 17\r
125\r
126#define LAST_VOLTAGE 17\r
127\r
128//\r
129// Fan Speed Sensors and Controllers.\r
130//\r
131#define CPU_COOLING_FAN 1\r
132#define SYSTEM_COOLING_FAN 2\r
133#define MCH_COOLING_FAN 3\r
134#define VR_COOLING_FAN 4\r
135#define CHASSIS_COOLING_FAN 5\r
136#define CHASSIS_INLET_FAN 6\r
137#define CHASSIS_OUTLET_FAN 7\r
138#define PSU_COOLING_FAN 8\r
139#define PSU_INLET_FAN 9\r
140#define PSU_OUTLET_FAN 10\r
141#define DRIVE_COOLING_FAN 11\r
142#define GPU_COOLING_FAN 12\r
143#define AUX_COOLING_FAN 13\r
144#define IOH_COOLING_FAN 14\r
145\r
146#define LAST_FAN 14\r
147\r
148//\r
149// Fan Type Definitions\r
150//\r
151#define FAN_TYPE_UNKNOWN 0\r
152#define FAN_3WIRE_PULSE 1\r
153#define FAN_3WIRE_VOLTAGE 2\r
154#define FAN_4WIRE 3\r
155\r
156#pragma pack(1)\r
157\r
158//\r
159// TEMP_SENSOR_INFO - Structure providing info for a temperature sensor.\r
160//\r
161typedef struct _TEMP_SENSOR_INFO\r
162{\r
163 UINT8 byDevice; // Device index\r
164 UINT8 byIndex; // Physical sensor index\r
165 UINT8 byUsage; // Usage indicator\r
166 UINT8 bRelative; // Relative vs. Absolute readings\r
167\r
168} TEMP_SENSOR_INFO, *P_TEMP_SENSOR_INFO;\r
169\r
170//\r
171// TYPEDEF_TEMP_SENSOR_SECTION - Macro that can be used to typedef the\r
172// TEMP_SENSOR_SECTION structure, which provides information about all\r
173// temperature sensors.\r
174//\r
175#define TYPEDEF_TEMP_SENSOR_SECTION(count) \\r
176typedef struct _TEMP_SENSOR_SECTION \\r
177{ \\r
178 UINT8 byCount; \\r
179 TEMP_SENSOR_INFO stSensor[count]; \\r
180 \\r
181} TEMP_SENSOR_SECTION, *P_TEMP_SENSOR_SECTION\r
182\r
183//\r
184// VOLT_SENSOR_INFO - Structure providing info for a voltage sensor.\r
185//\r
186typedef struct _VOLT_SENSOR_INFO\r
187{\r
188 UINT8 byDevice; // Device index\r
189 UINT8 byIndex; // Physical sensor index\r
190 UINT8 byUsage; // Usage indicator\r
191\r
192} VOLT_SENSOR_INFO, *P_VOLT_SENSOR_INFO;\r
193\r
194//\r
195// TYPEDEF_VOLT_SENSOR_SECTION - Macro that can be used to typedef the\r
196// VOLT_SENSOR_SECTION structure, which provides information about all\r
197// voltage sensors.\r
198//\r
199#define TYPEDEF_VOLT_SENSOR_SECTION(count) \\r
200typedef struct _VOLT_SENSOR_SECTION \\r
201{ \\r
202 UINT8 byCount; \\r
203 VOLT_SENSOR_INFO stSensor[count]; \\r
204 \\r
205} VOLT_SENSOR_SECTION, *P_VOLT_SENSOR_SECTION\r
206\r
207//\r
208// FAN_SENSOR_INFO - Structure providing info for a fan speed sensor.\r
209//\r
210typedef struct _FAN_SENSOR_INFO\r
211{\r
212 UINT8 byDevice; // Device index\r
213 UINT8 byIndex; // Physical sensor index\r
214 UINT8 byUsage; // Usage indicator\r
215 UINT8 byType; // Fan type\r
216 UINT8 byController; // Associated Fan Controller\r
217\r
218} FAN_SENSOR_INFO, *P_FAN_SENSOR_INFO;\r
219\r
220//\r
221// TYPEDEF_FAN_SENSOR_SECTION - Macro that can be used to typedef the\r
222// FAN_SENSOR_SECTION structure, which provides information about all fan\r
223// speed sensors.\r
224//\r
225#define TYPEDEF_FAN_SENSOR_SECTION(count) \\r
226typedef struct _FAN_SENSOR_SECTION \\r
227{ \\r
228 UINT8 byCount; \\r
229 FAN_SENSOR_INFO stSensor[count]; \\r
230 \\r
231} FAN_SENSOR_SECTION, *P_FAN_SENSOR_SECTION\r
232\r
233//\r
234// FAN_CONTROLLER_INFO - Structure providing info for a fan speed controller.\r
235//\r
236#define MAX_ASSOC_FANS 4\r
237#define ASSOC_UNUSED 0xFF\r
238\r
239typedef struct _FAN_CONTROLLER_INFO\r
240{\r
241 UINT8 byDevice; // Device index\r
242 UINT8 byIndex; // Physical Controller Index\r
243 UINT8 byUsage; // Usage Indicator\r
244 UINT8 byFan[MAX_ASSOC_FANS]; // Associated Fan Sensors\r
245\r
246} FAN_CONTROLLER_INFO, *P_FAN_CONTROLLER_INFO;\r
247\r
248//\r
249// TYPEDEF_FAN_CONTROLLER_SECTION - Macro that can be used to typedef the\r
250// FAN_CONTROLLER_SECTION structure, which provides information about all\r
251// fan speed controllers.\r
252//\r
253#define TYPEDEF_FAN_CONTROLLER_SECTION(count) \\r
254typedef struct _FAN_CONTROLLER_SECTION \\r
255{ \\r
256 UINT8 byCount; \\r
257 FAN_CONTROLLER_INFO stController[count]; \\r
258 \\r
259} FAN_CONTROLLER_SECTION, *P_FAN_CONTROLLER_SECTION\r
260\r
261//\r
262// TYPEDEF_SENSOR_INFO_VAR - Macro that can be used to typedef the\r
263// SENSOR_INFO_VAR structure, which provides information about all sensors\r
264// and fan speed controllers. The other TYPEDEF macros must be invoked\r
265// before using this one...\r
266//\r
267#define TYPEDEF_SENSOR_INFO_VAR \\r
268typedef struct _SENSOR_INFO_VAR \\r
269{ \\r
270 TEMP_SENSOR_SECTION stTemps; \\r
271 VOLT_SENSOR_SECTION stVolts; \\r
272 FAN_SENSOR_SECTION stFans; \\r
273 FAN_CONTROLLER_SECTION stCtrls; \\r
274 \\r
275} SENSOR_INFO_VAR, *P_SENSOR_INFO_VAR\r
276\r
277#pragma pack()\r
278\r
279#endif\r