]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkPkg/Include/Guid/DataHubRecords.h
Remove unnecessary FRAMEWORK_ prefix in IntelFrameworkPkg definitions for those defin...
[mirror_edk2.git] / IntelFrameworkPkg / Include / Guid / DataHubRecords.h
CommitLineData
79964ac8 1/** @file\r
afb84e42 2 DataHubRecord.h includes all data hub sub class GUID definitions.\r
905574d8 3\r
87d63447 4 This file includes all data hub sub class defitions from \r
5 Cache subclass spec 0.9, DataHub SubClass spec 0.9, Memory SubClass Spec 0.9,\r
6 Processor Subclass spec 0.9, and Misc SubClass spec 0.9.\r
7 \r
2bbaeb0d 8 Copyright (c) 2007 - 2009, Intel Corporation\r
79964ac8 9 All rights reserved. This program and the accompanying materials\r
10 are licensed and made available under the terms and conditions of the BSD License\r
11 which accompanies this distribution. The full text of the license may be found at\r
12 http://opensource.org/licenses/bsd-license.php\r
13\r
14 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
15 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
16\r
79964ac8 17**/\r
18#ifndef _DATAHUB_RECORDS_GUID_H_\r
19#define _DATAHUB_RECORDS_GUID_H_\r
20\r
79964ac8 21#define EFI_PROCESSOR_SUBCLASS_GUID \\r
22 { 0x26fdeb7e, 0xb8af, 0x4ccf, {0xaa, 0x97, 0x02, 0x63, 0x3c, 0xe4, 0x8c, 0xa7 } }\r
23\r
24extern EFI_GUID gEfiProcessorSubClassGuid;\r
25\r
26\r
27#define EFI_CACHE_SUBCLASS_GUID \\r
28 { 0x7f0013a7, 0xdc79, 0x4b22, {0x80, 0x99, 0x11, 0xf7, 0x5f, 0xdc, 0x82, 0x9d } }\r
29\r
30extern EFI_GUID gEfiCacheSubClassGuid;\r
31\r
2bbaeb0d 32///\r
33/// The memory subclass belongs to the data class and is identified as the memory \r
34/// subclass by the GUID.\r
35///\r
79964ac8 36#define EFI_MEMORY_SUBCLASS_GUID \\r
37 {0x4E8F4EBB, 0x64B9, 0x4e05, {0x9B, 0x18, 0x4C, 0xFE, 0x49, 0x23, 0x50, 0x97} }\r
38\r
39extern EFI_GUID gEfiMemorySubClassGuid;\r
40\r
79964ac8 41#define EFI_MISC_SUBCLASS_GUID \\r
42 { 0x772484B2, 0x7482, 0x4b91, {0x9F, 0x9A, 0xAD, 0x43, 0xF8, 0x1C, 0x58, 0x81 } }\r
43\r
44extern EFI_GUID gEfiMiscSubClassGuid;\r
45\r
87d63447 46\r
47///\r
48/// Inconsistent with specification here: \r
49/// In MiscSubclass spec 0.9, the value is 0x0100.\r
50/// Keep it unchanged from the perspective of binary consistency.\r
51///\r
52#define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000\r
53\r
54#pragma pack(1)\r
55\r
56typedef struct _USB_PORT_DEVICE_PATH {\r
57 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
58 PCI_DEVICE_PATH PciBusDevicePath;\r
59 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
60} USB_PORT_DEVICE_PATH;\r
61\r
62//\r
63// IDE\r
64//\r
65typedef struct _IDE_DEVICE_PATH {\r
66 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
67 PCI_DEVICE_PATH PciBusDevicePath;\r
68 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
69} IDE_DEVICE_PATH;\r
70\r
71//\r
72// RMC Connector\r
73//\r
74typedef struct _RMC_CONN_DEVICE_PATH {\r
75 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
76 PCI_DEVICE_PATH PciBridgeDevicePath;\r
77 PCI_DEVICE_PATH PciBusDevicePath;\r
78 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79} RMC_CONN_DEVICE_PATH;\r
80\r
81//\r
82// RIDE\r
83//\r
84typedef struct _RIDE_DEVICE_PATH {\r
85 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
86 PCI_DEVICE_PATH PciBridgeDevicePath;\r
87 PCI_DEVICE_PATH PciBusDevicePath;\r
88 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
89} RIDE_DEVICE_PATH;\r
90\r
91//\r
92// Gigabit NIC\r
93//\r
94typedef struct _GB_NIC_DEVICE_PATH {\r
95 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
96 PCI_DEVICE_PATH PciBridgeDevicePath;\r
97 PCI_DEVICE_PATH PciXBridgeDevicePath;\r
98 PCI_DEVICE_PATH PciXBusDevicePath;\r
99 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
100} GB_NIC_DEVICE_PATH;\r
101\r
102//\r
103// P/S2 Connector\r
104//\r
105typedef struct _PS2_CONN_DEVICE_PATH {\r
106 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
107 PCI_DEVICE_PATH LpcBridgeDevicePath;\r
108 ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
109 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
110} PS2_CONN_DEVICE_PATH;\r
111\r
112//\r
113// Serial Port Connector\r
114//\r
115typedef struct _SERIAL_CONN_DEVICE_PATH {\r
116 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
117 PCI_DEVICE_PATH LpcBridgeDevicePath;\r
118 ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
119 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
120} SERIAL_CONN_DEVICE_PATH;\r
121\r
122//\r
123// Parallel Port Connector\r
124//\r
125typedef struct _PARALLEL_CONN_DEVICE_PATH {\r
126 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
127 PCI_DEVICE_PATH LpcBridgeDevicePath;\r
128 ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
129 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
130} PARALLEL_CONN_DEVICE_PATH;\r
131\r
132//\r
133// Floopy Connector\r
134//\r
135typedef struct _FLOOPY_CONN_DEVICE_PATH {\r
136 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
137 PCI_DEVICE_PATH LpcBridgeDevicePath;\r
138 ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
139 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
140} FLOOPY_CONN_DEVICE_PATH;\r
141\r
142///\r
143/// Inconsistent with specification here: \r
144/// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
145/// It's implementation-specific to simplify the code logic.\r
146///\r
147typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
148 USB_PORT_DEVICE_PATH UsbDevicePath;\r
149 IDE_DEVICE_PATH IdeDevicePath;\r
150 RMC_CONN_DEVICE_PATH RmcConnDevicePath;\r
151 RIDE_DEVICE_PATH RideDevicePath;\r
152 GB_NIC_DEVICE_PATH GbNicDevicePath;\r
153 PS2_CONN_DEVICE_PATH Ps2ConnDevicePath;\r
154 SERIAL_CONN_DEVICE_PATH SerialConnDevicePath;\r
155 PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath;\r
156 FLOOPY_CONN_DEVICE_PATH FloppyConnDevicePath;\r
157} EFI_MISC_PORT_DEVICE_PATH;\r
158\r
159#pragma pack()\r
160\r
161///\r
162/// String Token Definition\r
163///\r
164/// Inconsistent with specification here: \r
165/// The macro isn't defined by any spec.\r
166/// Keep it unchanged for backward compatibility.\r
167///\r
168#define EFI_STRING_TOKEN UINT16\r
169\r
170///\r
171/// Each data record that is a member of some subclass starts with a standard \r
172/// header of type EFI_SUBCLASS_TYPE1_HEADER.\r
173/// This header is only a guideline and applicable only to a data \r
174/// subclass that is producing SMBIOS data records. A subclass can start with a \r
175/// different header if needed. \r
176///\r
177typedef struct {\r
178 ///\r
179 /// The version of the specification to which a specific subclass data record adheres. \r
180 ///\r
181 UINT32 Version;\r
182 ///\r
183 /// The size in bytes of this data class header. \r
184 ///\r
185 UINT32 HeaderSize;\r
186 ///\r
187 /// The instance number of the subclass with the same ProducerName. This number is \r
188 /// applicable in cases where multiple subclass instances that were produced by the same \r
189 /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not \r
190 /// Applicable. All data consumer drivers should be able to handle all the possible values \r
191 /// of Instance, including Not Applicable and Reserved. \r
192 ///\r
193 UINT16 Instance;\r
194 ///\r
195 /// The instance number of the RecordType for the same Instance. This number is \r
196 /// applicable in cases where multiple instances of the RecordType exist for a specific \r
197 /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable. \r
198 /// All data consumer drivers should be able to handle all the possible values of \r
199 /// SubInstance, including Not Applicable and Reserved. \r
200 ///\r
201 UINT16 SubInstance;\r
202 ///\r
203 /// The record number for the data record being specified. The numbering scheme and \r
204 /// definition is defined in the specific subclass specification. \r
205 ///\r
206 UINT32 RecordType;\r
207} EFI_SUBCLASS_TYPE1_HEADER;\r
208\r
209///\r
210/// This structure is used to link data records in the same subclasses. A data record is \r
211/// defined as a link to another data record in the same subclass using this structure. \r
212///\r
213typedef struct {\r
214 ///\r
215 /// An EFI_GUID that identifies the component that produced this data record. Type \r
216 /// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification. \r
217 ///\r
218 EFI_GUID ProducerName;\r
219 ///\r
220 /// The instance number of the subclass with the same ProducerName. This number is \r
221 /// applicable in cases where multiple subclass instances that were produced by the same \r
222 /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not \r
223 /// Applicable. All data consumer drivers should be able to handle all the possible values \r
224 /// of Instance, including Not Applicable and Reserved. \r
225 ///\r
226 UINT16 Instance;\r
227 /// The instance number of the RecordType for the same Instance. This number is \r
228 /// applicable in cases where multiple instances of the RecordType exist for a specific \r
229 /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable. \r
230 /// All data consumer drivers should be able to handle all the possible values of \r
231 /// SubInstance, including Not Applicable and Reserved. \r
232 UINT16 SubInstance;\r
233} EFI_INTER_LINK_DATA;\r
234\r
235//\r
236// EXP data\r
237//\r
238///\r
239/// This macro provides a calculation for base-10 representations. Value and Exponent are each \r
240/// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit\r
241/// for the sign). \r
242///\r
243typedef struct {\r
244 ///\r
245 /// The INT16 number by which to multiply the base-10 representation. \r
246 ///\r
247 UINT16 Value;\r
248 ///\r
249 /// The INT16 number by which to raise the base-10 calculation. \r
250 ///\r
251 UINT16 Exponent;\r
252} EFI_EXP_BASE2_DATA;\r
253\r
254///\r
255/// This macro provides a calculation for base-2 representations. Value and Exponent are each \r
256/// INT16. It is 16 bits wide and is unsigned to mean nonnegative values. \r
257///\r
258typedef struct {\r
259 ///\r
260 /// The INT16 number by which to multiply the base-2 representation.\r
261 ///\r
262 INT16 Value;\r
263 ///\r
264 /// The INT16 number by which to raise the base-2 calculation. \r
265 ///\r
266 INT16 Exponent;\r
267} EFI_EXP_BASE10_DATA;\r
268\r
269typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
270typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
271typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA;\r
272\r
273///\r
274/// This data record refers to the list of frequencies that the processor core supports. The list of \r
275/// supported frequencies is determined by the firmware based on hardware capabilities--for example, \r
276/// it could be a common subset of all processors and the chipset. The unit of measurement of this data \r
277/// record is in Hertz. For asynchronous processors, the content of this data record is zero. \r
278/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means \r
279/// that the processor/driver supports automatic frequency selection. \r
280///\r
281/// Inconsistent with specification here: \r
282/// According to MiscSubclass 0.9 spec, it should be a pointer since it refers to a list of frequencies.\r
283///\r
284typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
285\r
286///\r
287/// This data record refers to the list of supported frequencies of the processor external bus. The list of \r
288/// supported frequencies is determined by the firmware based on hardware capabilities--for example, \r
289/// it could be a common subset of all processors and the chipset. The unit of measurement of this data \r
290/// record is in Hertz. For asynchronous processors, the content of this data record is NULL. \r
291/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means \r
292/// that the processor/driver supports automatic frequency selection. \r
293///\r
294typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;\r
295typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA;\r
296typedef STRING_REF EFI_PROCESSOR_VERSION_DATA;\r
297typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA;\r
298typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA;\r
299typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA;\r
300\r
301typedef struct {\r
302 UINT32 ProcessorSteppingId:4;\r
303 UINT32 ProcessorModel: 4;\r
304 UINT32 ProcessorFamily: 4;\r
305 UINT32 ProcessorType: 2;\r
306 UINT32 ProcessorReserved1: 2;\r
307 UINT32 ProcessorXModel: 4;\r
308 UINT32 ProcessorXFamily: 8;\r
309 UINT32 ProcessorReserved2: 4;\r
310} EFI_PROCESSOR_SIGNATURE;\r
311\r
312\r
313///\r
314/// Inconsistent with specification here: \r
315/// The name of third field in ProcSubClass spec0.9 is LogicalProcessorCount.\r
316/// Keep it unchanged for backward compatibility.\r
317///\r
318typedef struct {\r
319 UINT32 ProcessorBrandIndex :8;\r
320 UINT32 ProcessorClflush :8;\r
321 UINT32 ProcessorReserved :8;\r
322 UINT32 ProcessorDfltApicId :8;\r
323} EFI_PROCESSOR_MISC_INFO;\r
324\r
325typedef struct {\r
326 UINT32 ProcessorFpu: 1;\r
327 UINT32 ProcessorVme: 1;\r
328 UINT32 ProcessorDe: 1;\r
329 UINT32 ProcessorPse: 1;\r
330 UINT32 ProcessorTsc: 1;\r
331 UINT32 ProcessorMsr: 1;\r
332 UINT32 ProcessorPae: 1;\r
333 UINT32 ProcessorMce: 1;\r
334 UINT32 ProcessorCx8: 1;\r
335 UINT32 ProcessorApic: 1;\r
336 UINT32 ProcessorReserved1: 1;\r
337 UINT32 ProcessorSep: 1;\r
338 UINT32 ProcessorMtrr: 1;\r
339 UINT32 ProcessorPge: 1;\r
340 UINT32 ProcessorMca: 1;\r
341 UINT32 ProcessorCmov: 1;\r
342 UINT32 ProcessorPat: 1;\r
343 UINT32 ProcessorPse36: 1;\r
344 UINT32 ProcessorPsn: 1;\r
345 UINT32 ProcessorClfsh: 1;\r
346 UINT32 ProcessorReserved2: 1;\r
347 UINT32 ProcessorDs: 1;\r
348 UINT32 ProcessorAcpi: 1;\r
349 UINT32 ProcessorMmx: 1;\r
350 UINT32 ProcessorFxsr: 1;\r
351 UINT32 ProcessorSse: 1;\r
352 UINT32 ProcessorSse2: 1;\r
353 UINT32 ProcessorSs: 1;\r
354 UINT32 ProcessorReserved3: 1;\r
355 UINT32 ProcessorTm: 1;\r
356 UINT32 ProcessorReserved4: 2;\r
357} EFI_PROCESSOR_FEATURE_FLAGS;\r
358\r
359///\r
360/// This data record refers to the unique ID that identifies a set of processors. This data record is 16 \r
361/// bytes in length. The data in this structure is processor specific and reserved values can be defined \r
362/// for future use. The consumer of this data should not make any assumption and should use this data \r
363/// with respect to the processor family defined in the Family record number. \r
364///\r
365typedef struct {\r
366 ///\r
367 /// Identifies the processor.\r
368 ///\r
369 EFI_PROCESSOR_SIGNATURE Signature;\r
370 ///\r
371 /// Provides additional processor information. \r
372 ///\r
373 EFI_PROCESSOR_MISC_INFO MiscInfo;\r
374 ///\r
375 /// Reserved for future use. \r
376 ///\r
377 UINT32 Reserved;\r
378 ///\r
379 /// Provides additional processor information. \r
380 ///\r
381 EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;\r
382} EFI_PROCESSOR_ID_DATA;\r
383\r
384///\r
385/// This data record refers to the general classification of the processor. This data record is 4 bytes in \r
386/// length. \r
387///\r
388typedef enum {\r
389 EfiProcessorOther = 1,\r
390 EfiProcessorUnknown = 2,\r
391 EfiCentralProcessor = 3,\r
392 EfiMathProcessor = 4,\r
393 EfiDspProcessor = 5,\r
394 EfiVideoProcessor = 6\r
395} EFI_PROCESSOR_TYPE_DATA;\r
396\r
397///\r
398/// This data record refers to the family of the processor as defined by the DMTF. \r
399/// This data record is 4 bytes in length. \r
400///\r
401typedef enum {\r
402 EfiProcessorFamilyOther = 0x01, \r
403 EfiProcessorFamilyUnknown = 0x02,\r
404 EfiProcessorFamily8086 = 0x03, \r
405 EfiProcessorFamily80286 = 0x04,\r
406 EfiProcessorFamilyIntel386 = 0x05, \r
407 EfiProcessorFamilyIntel486 = 0x06,\r
408 EfiProcessorFamily8087 = 0x07,\r
409 EfiProcessorFamily80287 = 0x08,\r
410 EfiProcessorFamily80387 = 0x09, \r
411 EfiProcessorFamily80487 = 0x0A,\r
412 EfiProcessorFamilyPentium = 0x0B, \r
413 EfiProcessorFamilyPentiumPro = 0x0C,\r
414 EfiProcessorFamilyPentiumII = 0x0D,\r
415 EfiProcessorFamilyPentiumMMX = 0x0E,\r
416 EfiProcessorFamilyCeleron = 0x0F,\r
417 EfiProcessorFamilyPentiumIIXeon = 0x10,\r
418 EfiProcessorFamilyPentiumIII = 0x11, \r
419 EfiProcessorFamilyM1 = 0x12,\r
420 EfiProcessorFamilyM2 = 0x13,\r
421 EfiProcessorFamilyM1Reserved2 = 0x14,\r
422 EfiProcessorFamilyM1Reserved3 = 0x15,\r
423 EfiProcessorFamilyM1Reserved4 = 0x16,\r
424 EfiProcessorFamilyM1Reserved5 = 0x17,\r
425 EfiProcessorFamilyAmdDuron = 0x18,\r
426 EfiProcessorFamilyK5 = 0x19, \r
427 EfiProcessorFamilyK6 = 0x1A,\r
428 EfiProcessorFamilyK6_2 = 0x1B,\r
429 EfiProcessorFamilyK6_3 = 0x1C,\r
430 EfiProcessorFamilyAmdAthlon = 0x1D,\r
431 EfiProcessorFamilyAmd29000 = 0x1E,\r
432 EfiProcessorFamilyK6_2Plus = 0x1F,\r
433 EfiProcessorFamilyPowerPC = 0x20,\r
434 EfiProcessorFamilyPowerPC601 = 0x21,\r
435 EfiProcessorFamilyPowerPC603 = 0x22,\r
436 EfiProcessorFamilyPowerPC603Plus = 0x23,\r
437 EfiProcessorFamilyPowerPC604 = 0x24,\r
438 EfiProcessorFamilyPowerPC620 = 0x25,\r
439 EfiProcessorFamilyPowerPCx704 = 0x26,\r
440 EfiProcessorFamilyPowerPC750 = 0x27,\r
441 EfiProcessorFamilyAlpha3 = 0x30,\r
442 EfiProcessorFamilyAlpha21064 = 0x31,\r
443 EfiProcessorFamilyAlpha21066 = 0x32,\r
444 EfiProcessorFamilyAlpha21164 = 0x33,\r
445 EfiProcessorFamilyAlpha21164PC = 0x34,\r
446 EfiProcessorFamilyAlpha21164a = 0x35,\r
447 EfiProcessorFamilyAlpha21264 = 0x36,\r
448 EfiProcessorFamilyAlpha21364 = 0x37,\r
449 EfiProcessorFamilyMips = 0x40,\r
450 EfiProcessorFamilyMIPSR4000 = 0x41,\r
451 EfiProcessorFamilyMIPSR4200 = 0x42,\r
452 EfiProcessorFamilyMIPSR4400 = 0x43,\r
453 EfiProcessorFamilyMIPSR4600 = 0x44,\r
454 EfiProcessorFamilyMIPSR10000 = 0x45,\r
455 EfiProcessorFamilySparc = 0x50,\r
456 EfiProcessorFamilySuperSparc = 0x51,\r
457 EfiProcessorFamilymicroSparcII = 0x52,\r
458 EfiProcessorFamilymicroSparcIIep = 0x53,\r
459 EfiProcessorFamilyUltraSparc = 0x54,\r
460 EfiProcessorFamilyUltraSparcII = 0x55,\r
461 EfiProcessorFamilyUltraSparcIIi = 0x56,\r
462 EfiProcessorFamilyUltraSparcIII = 0x57,\r
463 ///\r
464 /// Inconsistent with specification here: \r
465 /// This field in ProcSubClass spec 0.9 is defined as EfiProcessorFamilyUltraSparcIIi.\r
466 /// Change it to EfiProcessorFamilyUltraSparcIIIi to avoid build break.\r
467 ///\r
468 EfiProcessorFamilyUltraSparcIIIi = 0x58,\r
469 EfiProcessorFamily68040 = 0x60,\r
470 EfiProcessorFamily68xxx = 0x61,\r
471 EfiProcessorFamily68000 = 0x62,\r
472 EfiProcessorFamily68010 = 0x63,\r
473 EfiProcessorFamily68020 = 0x64,\r
474 EfiProcessorFamily68030 = 0x65,\r
475 EfiProcessorFamilyHobbit = 0x70,\r
476 EfiProcessorFamilyCrusoeTM5000 = 0x78,\r
477 EfiProcessorFamilyCrusoeTM3000 = 0x79,\r
478 EfiProcessorFamilyEfficeonTM8000 = 0x7A,\r
479 EfiProcessorFamilyWeitek = 0x80,\r
480 EfiProcessorFamilyItanium = 0x82,\r
481 EfiProcessorFamilyAmdAthlon64 = 0x83,\r
482 EfiProcessorFamilyAmdOpteron = 0x84,\r
483 EfiProcessorFamilyAmdSempron = 0x85,\r
484 EfiProcessorFamilyAmdTurion64Mobile = 0x86,\r
485 EfiProcessorFamilyDualCoreAmdOpteron = 0x87,\r
486 EfiProcessorFamilyAmdAthlon64X2DualCore = 0x88,\r
487 EfiProcessorFamilyAmdTurion64X2Mobile = 0x89,\r
488 EfiProcessorFamilyPARISC = 0x90,\r
489 EfiProcessorFamilyPaRisc8500 = 0x91,\r
490 EfiProcessorFamilyPaRisc8000 = 0x92,\r
491 EfiProcessorFamilyPaRisc7300LC = 0x93,\r
492 EfiProcessorFamilyPaRisc7200 = 0x94,\r
493 EfiProcessorFamilyPaRisc7100LC = 0x95,\r
494 EfiProcessorFamilyPaRisc7100 = 0x96,\r
495 EfiProcessorFamilyV30 = 0xA0,\r
496 EfiProcessorFamilyPentiumIIIXeon = 0xB0,\r
497 EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,\r
498 EfiProcessorFamilyPentium4 = 0xB2,\r
499 EfiProcessorFamilyIntelXeon = 0xB3,\r
500 EfiProcessorFamilyAS400 = 0xB4,\r
501 EfiProcessorFamilyIntelXeonMP = 0xB5,\r
502 EfiProcessorFamilyAMDAthlonXP = 0xB6,\r
503 EfiProcessorFamilyAMDAthlonMP = 0xB7,\r
504 EfiProcessorFamilyIntelItanium2 = 0xB8,\r
505 ///\r
506 /// Inconsistent with specification here: \r
507 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
508 ///\r
509 EfiProcessorFamilyIntelPentiumM = 0xB9,\r
510 ///\r
511 /// Inconsistent with specification here: \r
512 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
513 ///\r
514 EfiProcessorFamilyIntelCeleronD = 0xBA,\r
515 ///\r
516 /// Inconsistent with specification here: \r
517 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
518 ///\r
519 EfiProcessorFamilyIntelPentiumD = 0xBB,\r
520 ///\r
521 /// Inconsistent with specification here: \r
522 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
523 ///\r
524 EfiProcessorFamilyIntelPentiumEx = 0xBC,\r
525 ///\r
526 /// Inconsistent with specification here: \r
527 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
528 ///\r
529 EfiProcessorFamilyIntelCoreSolo = 0xBD, \r
530 ///\r
531 /// Inconsistent with specification here: \r
532 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
533 ///\r
534 EfiProcessorFamilyReserved = 0xBE, \r
535 ///\r
536 /// Inconsistent with specification here: \r
537 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
538 ///\r
539 EfiProcessorFamilyIntelCore2 = 0xBF,\r
540 EfiProcessorFamilyIBM390 = 0xC8,\r
541 EfiProcessorFamilyG4 = 0xC9,\r
542 EfiProcessorFamilyG5 = 0xCA,\r
543 ///\r
544 /// Inconsistent with specification here: \r
545 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
546 ///\r
547 EfiProcessorFamilyG6 = 0xCB,\r
548 ///\r
549 /// Inconsistent with specification here: \r
550 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
551 ///\r
552 EfiProcessorFamilyzArchitectur = 0xCC,\r
553 ///\r
554 /// Inconsistent with specification here: \r
555 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
556 ///\r
557 EfiProcessorFamilyViaC7M = 0xD2,\r
558 ///\r
559 /// Inconsistent with specification here: \r
560 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
561 ///\r
562 EfiProcessorFamilyViaC7D = 0xD3,\r
563 ///\r
564 /// Inconsistent with specification here: \r
565 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
566 ///\r
567 EfiProcessorFamilyViaC7 = 0xD4,\r
568 ///\r
569 /// Inconsistent with specification here: \r
570 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
571 ///\r
572 EfiProcessorFamilyViaEden = 0xD5,\r
573 EfiProcessorFamilyi860 = 0xFA,\r
574 EfiProcessorFamilyi960 = 0xFB,\r
575 ///\r
576 /// Inconsistent with specification here: \r
577 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
578 ///\r
579 EfiProcessorFamilyIndicatorFamily2 = 0xFE,\r
580 ///\r
581 /// Inconsistent with specification here: \r
582 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
583 ///\r
584 EfiProcessorFamilyReserved1 = 0xFF\r
585} EFI_PROCESSOR_FAMILY_DATA;\r
586\r
587///\r
588/// This data record refers to the core voltage of the processor being defined. The unit of measurement \r
589/// of this data record is in volts. \r
590///\r
591typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;\r
592\r
593///\r
594/// This data record refers to the base address of the APIC of the processor being defined. This data \r
595/// record is a physical address location. \r
596///\r
597typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;\r
598\r
599///\r
600/// This data record refers to the ID of the APIC of the processor being defined. This data record is a \r
601/// 4-byte entry. \r
602///\r
603typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;\r
604\r
605///\r
606/// This data record refers to the version number of the APIC of the processor being defined. This data \r
607/// record is a 4-byte entry. \r
608///\r
609typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;\r
610\r
611typedef enum {\r
612 EfiProcessorIa32Microcode = 1,\r
613 EfiProcessorIpfPalAMicrocode = 2,\r
614 EfiProcessorIpfPalBMicrocode = 3\r
615} EFI_PROCESSOR_MICROCODE_TYPE;\r
616\r
617///\r
618/// This data record refers to the revision of the processor microcode that is loaded in the processor. \r
619/// This data record is a 4-byte entry. \r
620///\r
621typedef struct {\r
622 ///\r
623 /// Identifies what type of microcode the data is. \r
624 /// \r
625 EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType;\r
626 ///\r
627 /// Indicates the revision number of this microcode. \r
628 ///\r
629 UINT32 ProcessorMicrocodeRevisionNumber;\r
630} EFI_PROCESSOR_MICROCODE_REVISION_DATA;\r
631\r
632///\r
633/// This data record refers to the status of the processor.\r
634///\r
635typedef struct {\r
ccd1862c 636 UINT32 CpuStatus :3; ///< Indicates the status of the processor. \r
637 UINT32 Reserved1 :3; ///< Reserved for future use. Should be set to zero. \r
638 UINT32 SocketPopulated :1; ///< Indicates if the processor is socketed or not. \r
639 UINT32 Reserved2 :1; ///< Reserved for future use. Should be set to zero. \r
640 UINT32 ApicEnable :1; ///< Indicates if the APIC is enabled or not. \r
641 UINT32 BootApplicationProcessor :1; ///< Indicates if this processor is the boot processor. \r
642 UINT32 Reserved3 :22;///< Reserved for future use. Should be set to zero. \r
87d63447 643} EFI_PROCESSOR_STATUS_DATA;\r
644\r
645typedef enum {\r
646 EfiCpuStatusUnknown = 0,\r
647 EfiCpuStatusEnabled = 1,\r
648 EfiCpuStatusDisabledByUser = 2,\r
649 EfiCpuStatusDisabledbyBios = 3,\r
650 EfiCpuStatusIdle = 4,\r
651 EfiCpuStatusOther = 7\r
652} EFI_CPU_STATUS;\r
653\r
654typedef enum {\r
655 EfiProcessorSocketOther = 1,\r
656 EfiProcessorSocketUnknown = 2,\r
657 EfiProcessorSocketDaughterBoard = 3,\r
658 EfiProcessorSocketZIF = 4,\r
659 EfiProcessorSocketReplacePiggyBack = 5,\r
660 EfiProcessorSocketNone = 6,\r
661 EfiProcessorSocketLIF = 7,\r
662 EfiProcessorSocketSlot1 = 8,\r
663 EfiProcessorSocketSlot2 = 9,\r
664 EfiProcessorSocket370Pin = 0xA,\r
665 EfiProcessorSocketSlotA = 0xB,\r
666 EfiProcessorSocketSlotM = 0xC,\r
667 EfiProcessorSocket423 = 0xD,\r
668 EfiProcessorSocketA462 = 0xE,\r
669 EfiProcessorSocket478 = 0xF,\r
670 EfiProcessorSocket754 = 0x10,\r
671 EfiProcessorSocket940 = 0x11,\r
672 ///\r
673 /// Inconsistent with specification here: \r
674 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
675 ///\r
676 EfiProcessorSocket939 = 0x12,\r
677 ///\r
678 /// Inconsistent with specification here: \r
679 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
680 ///\r
681 EfiProcessorSocketmPGA604 = 0x13,\r
682 ///\r
683 /// Inconsistent with specification here: \r
684 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
685 ///\r
686 EfiProcessorSocketLGA771 = 0x14,\r
687 ///\r
688 /// Inconsistent with specification here: \r
689 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
690 ///\r
691 EfiProcessorSocketLGA775 = 0x15\r
692\r
693} EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
694\r
695typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;\r
696\r
697///\r
698/// Inconsistent with specification here: \r
699/// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.\r
700/// Keep it unchanged for backward compatibilty.\r
701///\r
702typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;\r
703\r
704///\r
705/// This data record refers to the health status of the processor. \r
706///\r
707/// Inconsistent with specification here: \r
708/// In MiscSubclass spec 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.\r
709/// Keep it unchanged for backward compatibilty.\r
710///\r
711typedef enum {\r
712 EfiProcessorHealthy = 1,\r
713 EfiProcessorPerfRestricted = 2,\r
714 EfiProcessorFuncRestricted = 3 \r
715} EFI_PROCESSOR_HEALTH_STATUS;\r
716\r
717///\r
718/// This data record refers to the package number of this processor. Multiple logical processors can \r
719/// exist in a system and each logical processor can be correlated to the physical processor using this \r
720/// record type. \r
721///\r
722typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
723\r
724///\r
725/// Inconsistent with specification here:\r
726/// In ProcSubclass spec 0.9, the enumeration type data structure is NOT defined.\r
727/// The equivalent in spec is \r
728/// #define EFI_PROCESSOR_FREQUENCY_RECORD_NUMBER 0x00000001\r
729/// #define EFI_PROCESSOR_BUS_FREQUENCY_RECORD_NUMBER 0x00000002\r
730/// #define EFI_PROCESSOR_VERSION_RECORD_NUMBER 0x00000003\r
731/// #define EFI_PROCESSOR_MANUFACTURER_RECORD_NUMBER 0x00000004\r
732/// #define EFI_PROCESSOR_SERIAL_NUMBER_RECORD_NUMBER 0x00000005\r
733/// #define EFI_PROCESSOR_ID_RECORD_NUMBER 0x00000006\r
734/// #define EFI_PROCESSOR_TYPE_RECORD_NUMBER 0x00000007\r
735/// #define EFI_PROCESSOR_FAMILY_RECORD_NUMBER 0x00000008\r
736/// #define EFI_PROCESSOR_VOLTAGE_RECORD_NUMBER 0x00000009\r
737/// #define EFI_PROCESSOR_APIC_BASE_ADDRESS_RECORD_NUMBER 0x0000000A\r
738/// #define EFI_PROCESSOR_APIC_ID_RECORD_NUMBER 0x0000000B\r
739/// #define EFI_PROCESSOR_APIC_VER_NUMBER_RECORD_NUMBER 0x0000000C\r
740/// #define EFI_PROCESSOR_MICROCODE_REVISION_RECORD_NUMBER 0x0000000D\r
741/// #define EFI_PROCESSOR_STATUS_RECORD_NUMBER 0x0000000E\r
742/// #define EFI_PROCESSOR_SOCKET_TYPE_RECORD_NUMBER 0x0000000F\r
743/// #define EFI_PROCESSOR_SOCKET_NAME_RECORD_NUMBER 0x00000010\r
744/// #define EFI_PROCESSOR_CACHE_ASSOCIATION_RECORD_NUMBER 0x00000011\r
745/// #define EFI_PROCESSOR_MAX_FREQUENCY_RECORD_NUMBER 0x00000012\r
746/// #define EFI_PROCESSOR_ASSET_TAG_RECORD_NUMBER 0x00000013\r
747/// #define EFI_PROCESSOR_MAX_FSB_FREQUENCY_RECORD_NUMBER 0x00000014\r
748/// #define EFI_PROCESSOR_PACKAGE_NUMBER_RECORD_NUMBER 0x00000015\r
749/// #define EFI_PROCESSOR_FREQUENCY_LIST_RECORD_NUMBER 0x00000016\r
750/// #define EFI_PROCESSOR_FSB_FREQUENCY_LIST_RECORD_NUMBER 0x00000017\r
751/// #define EFI_PROCESSOR_HEALTH_STATUS_RECORD_NUMBER 0x00000018\r
752///\r
753/// Keep the definition unchanged for backward compatibility.\r
754typedef enum {\r
755 ProcessorCoreFrequencyRecordType = 1,\r
756 ProcessorFsbFrequencyRecordType = 2,\r
757 ProcessorVersionRecordType = 3,\r
758 ProcessorManufacturerRecordType = 4,\r
759 ProcessorSerialNumberRecordType = 5,\r
760 ProcessorIdRecordType = 6,\r
761 ProcessorTypeRecordType = 7,\r
762 ProcessorFamilyRecordType = 8,\r
763 ProcessorVoltageRecordType = 9,\r
764 ProcessorApicBaseAddressRecordType = 10,\r
765 ProcessorApicIdRecordType = 11,\r
766 ProcessorApicVersionNumberRecordType = 12,\r
767 CpuUcodeRevisionDataRecordType = 13,\r
768 ProcessorStatusRecordType = 14,\r
769 ProcessorSocketTypeRecordType = 15,\r
770 ProcessorSocketNameRecordType = 16,\r
771 CacheAssociationRecordType = 17,\r
772 ProcessorMaxCoreFrequencyRecordType = 18,\r
773 ProcessorAssetTagRecordType = 19,\r
774 ProcessorMaxFsbFrequencyRecordType = 20,\r
775 ProcessorPackageNumberRecordType = 21,\r
776 ProcessorCoreFrequencyListRecordType = 22,\r
777 ProcessorFsbFrequencyListRecordType = 23,\r
778 ProcessorHealthStatusRecordType = 24\r
779} EFI_CPU_VARIABLE_RECORD_TYPE;\r
780\r
781///\r
782/// Inconsistent with specification here: \r
783/// In ProcSubclass spec 0.9, the union type data structure is NOT defined.\r
784/// It's implementation-specific to simplify the code logic.\r
785///\r
786typedef union {\r
787 EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList;\r
788 EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList;\r
789 EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber;\r
790 EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency;\r
791 EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency;\r
792 EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency;\r
793 EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency;\r
794 EFI_PROCESSOR_VERSION_DATA ProcessorVersion;\r
795 EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer;\r
796 EFI_PROCESSOR_ID_DATA ProcessorId;\r
797 EFI_PROCESSOR_TYPE_DATA ProcessorType;\r
798 EFI_PROCESSOR_FAMILY_DATA ProcessorFamily;\r
799 EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage;\r
800 EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase;\r
801 EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId;\r
802 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber;\r
803 EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData;\r
804 EFI_PROCESSOR_STATUS_DATA ProcessorStatus;\r
805 EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType;\r
806 EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName;\r
807 EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag;\r
808 EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus;\r
809 EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber;\r
810} EFI_CPU_VARIABLE_RECORD;\r
811\r
812typedef struct {\r
813 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;\r
814 EFI_CPU_VARIABLE_RECORD VariableRecord;\r
815} EFI_CPU_DATA_RECORD;\r
816\r
817#define EFI_CACHE_SUBCLASS_VERSION 0x00010000\r
818\r
819typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA;\r
820///\r
821/// Inconsistent with specification here: \r
822/// In MiscSubclass spec 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.\r
823/// Keep it unchanged for backward compatibilty.\r
824///\r
825typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA;\r
826typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA;\r
827typedef STRING_REF EFI_CACHE_SOCKET_DATA;\r
828\r
829typedef struct {\r
830 UINT32 Other :1;\r
831 UINT32 Unknown :1;\r
832 UINT32 NonBurst :1;\r
833 UINT32 Burst :1;\r
834 UINT32 PipelineBurst :1;\r
835 UINT32 Asynchronous :1;\r
836 UINT32 Synchronous :1;\r
837 UINT32 Reserved :25;\r
838} EFI_CACHE_SRAM_TYPE_DATA;\r
839\r
840typedef EFI_CACHE_SRAM_TYPE_DATA EFI_CACHE_SRAM_INSTALL_DATA;\r
841\r
842typedef enum {\r
843 EfiCacheErrorOther = 1,\r
844 EfiCacheErrorUnknown = 2,\r
845 EfiCacheErrorNone = 3,\r
846 EfiCacheErrorParity = 4,\r
847 EfiCacheErrorSingleBit = 5,\r
848 EfiCacheErrorMultiBit = 6\r
849} EFI_CACHE_ERROR_TYPE_DATA;\r
850\r
851typedef enum {\r
852 EfiCacheTypeOther = 1,\r
853 EfiCacheTypeUnknown = 2,\r
854 EfiCacheTypeInstruction = 3,\r
855 EfiCacheTypeData = 4,\r
856 EfiCacheTypeUnified = 5\r
857} EFI_CACHE_TYPE_DATA;\r
858\r
859typedef enum {\r
860 EfiCacheAssociativityOther = 1,\r
861 EfiCacheAssociativityUnknown = 2,\r
862 EfiCacheAssociativityDirectMapped = 3,\r
863 EfiCacheAssociativity2Way = 4,\r
864 EfiCacheAssociativity4Way = 5,\r
865 EfiCacheAssociativityFully = 6,\r
866 EfiCacheAssociativity8Way = 7,\r
867 EfiCacheAssociativity16Way = 8\r
868} EFI_CACHE_ASSOCIATIVITY_DATA;\r
869\r
870///\r
871/// Inconsistent with specification here: \r
872/// In CacheSubclass 0.9 spec. It defines the field type as UINT16.\r
873/// In fact, it should be UINT32 type since it refers to a 32bit width data.\r
874///\r
875typedef struct {\r
876 UINT32 Level :3;\r
877 UINT32 Socketed :1;\r
878 UINT32 Reserved2 :1;\r
879 UINT32 Location :2;\r
880 UINT32 Enable :1;\r
881 UINT32 OperationalMode :2;\r
882 UINT32 Reserved1 :22;\r
883} EFI_CACHE_CONFIGURATION_DATA;\r
884\r
885#define EFI_CACHE_L1 1\r
886#define EFI_CACHE_L2 2\r
887#define EFI_CACHE_L3 3\r
888#define EFI_CACHE_L4 4\r
889#define EFI_CACHE_LMAX EFI_CACHE_L4\r
890\r
891#define EFI_CACHE_SOCKETED 1\r
892#define EFI_CACHE_NOT_SOCKETED 0\r
893\r
894typedef enum {\r
895 EfiCacheInternal = 0,\r
896 EfiCacheExternal = 1,\r
897 EfiCacheReserved = 2,\r
898 EfiCacheUnknown = 3\r
899} EFI_CACHE_LOCATION;\r
900\r
901#define EFI_CACHE_ENABLED 1\r
902#define EFI_CACHE_DISABLED 0\r
903\r
904typedef enum {\r
905 EfiCacheWriteThrough = 0,\r
906 EfiCacheWriteBack = 1,\r
907 EfiCacheDynamicMode = 2,\r
908 EfiCacheUnknownMode = 3\r
909} EFI_CACHE_OPERATIONAL_MODE;\r
910\r
911\r
912\r
913typedef enum {\r
914 CacheSizeRecordType = 1,\r
915 MaximumSizeCacheRecordType = 2,\r
916 CacheSpeedRecordType = 3,\r
917 CacheSocketRecordType = 4,\r
918 CacheSramTypeRecordType = 5,\r
919 CacheInstalledSramTypeRecordType = 6,\r
920 CacheErrorTypeRecordType = 7,\r
921 CacheTypeRecordType = 8,\r
922 CacheAssociativityRecordType = 9,\r
923 CacheConfigRecordType = 10\r
924} EFI_CACHE_VARIABLE_RECORD_TYPE;\r
925\r
926///\r
927/// Inconsistent with specification here: \r
928/// In CacheSubclass spec0.9, the union type data structure is NOT defined.\r
929/// It's implementation-specific to simplify the code logic.\r
930///\r
931typedef union {\r
932 EFI_CACHE_SIZE_DATA CacheSize;\r
933 EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize;\r
934 EFI_CACHE_SPEED_DATA CacheSpeed;\r
935 EFI_CACHE_SOCKET_DATA CacheSocket;\r
936 EFI_CACHE_SRAM_TYPE_DATA CacheSramType;\r
937 EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType;\r
938 EFI_CACHE_ERROR_TYPE_DATA CacheErrorType;\r
939 EFI_CACHE_TYPE_DATA CacheType;\r
940 EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity;\r
941 EFI_CACHE_CONFIGURATION_DATA CacheConfig;\r
942 EFI_CACHE_ASSOCIATION_DATA CacheAssociation;\r
943} EFI_CACHE_VARIABLE_RECORD;\r
944\r
945typedef struct {\r
946 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;\r
947 EFI_CACHE_VARIABLE_RECORD VariableRecord;\r
948} EFI_CACHE_DATA_RECORD;\r
949\r
950#define EFI_MEMORY_SUBCLASS_VERSION 0x0100\r
951#define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001\r
952\r
953typedef enum _EFI_MEMORY_REGION_TYPE {\r
954 EfiMemoryRegionMemory = 0x01,\r
955 EfiMemoryRegionReserved = 0x02,\r
956 EfiMemoryRegionAcpi = 0x03,\r
957 EfiMemoryRegionNvs = 0x04\r
958} EFI_MEMORY_REGION_TYPE;\r
959\r
960///\r
961/// This data record refers to the size of a memory region. The regions that are \r
962/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions. \r
963/// The unit of measurement of this data record is in bytes. \r
964///\r
965typedef struct {\r
966 ///\r
967 /// A zero-based value that indicates which processor(s) can access the memory region. \r
968 /// A value of 0xFFFF indicates the region is accessible by all processors. \r
969 ///\r
970 UINT32 ProcessorNumber;\r
971 ///\r
972 /// A zero-based value that indicates the starting bus that can access the memory region. \r
973 ///\r
974 UINT16 StartBusNumber;\r
975 ///\r
976 /// A zero-based value that indicates the ending bus that can access the memory region. \r
977 /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and \r
978 /// is global in scope. An example of the EndBusNumber not being 0xFF is a system \r
979 /// with two or more peer-to-host PCI bridges. \r
980 ///\r
981 UINT16 EndBusNumber;\r
982 ///\r
983 /// The type of memory region from the operating system's point of view. \r
984 /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS \r
985 /// command values. \r
986 ///\r
987 EFI_MEMORY_REGION_TYPE MemoryRegionType;\r
988 ///\r
989 /// The size of the memory region in bytes. \r
990 ///\r
991 EFI_EXP_BASE2_DATA MemorySize;\r
992 ///\r
993 /// The starting physical address of the memory region. \r
994 ///\r
995 EFI_PHYSICAL_ADDRESS MemoryStartAddress;\r
996} EFI_MEMORY_SIZE_DATA;\r
997\r
998\r
999#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002\r
1000\r
1001typedef enum _EFI_MEMORY_ARRAY_LOCATION {\r
1002 EfiMemoryArrayLocationOther = 0x01,\r
1003 EfiMemoryArrayLocationUnknown = 0x02,\r
1004 EfiMemoryArrayLocationSystemBoard = 0x03,\r
1005 EfiMemoryArrayLocationIsaAddonCard = 0x04,\r
1006 EfiMemoryArrayLocationEisaAddonCard = 0x05,\r
1007 EfiMemoryArrayLocationPciAddonCard = 0x06,\r
1008 EfiMemoryArrayLocationMcaAddonCard = 0x07,\r
1009 EfiMemoryArrayLocationPcmciaAddonCard = 0x08,\r
1010 EfiMemoryArrayLocationProprietaryAddonCard = 0x09,\r
1011 EfiMemoryArrayLocationNuBus = 0x0A,\r
1012 EfiMemoryArrayLocationPc98C20AddonCard = 0xA0,\r
1013 EfiMemoryArrayLocationPc98C24AddonCard = 0xA1,\r
1014 EfiMemoryArrayLocationPc98EAddonCard = 0xA2,\r
1015 EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3\r
1016} EFI_MEMORY_ARRAY_LOCATION;\r
1017\r
1018typedef enum _EFI_MEMORY_ARRAY_USE {\r
1019 EfiMemoryArrayUseOther = 0x01,\r
1020 EfiMemoryArrayUseUnknown = 0x02,\r
1021 EfiMemoryArrayUseSystemMemory = 0x03,\r
1022 EfiMemoryArrayUseVideoMemory = 0x04,\r
1023 EfiMemoryArrayUseFlashMemory = 0x05,\r
1024 EfiMemoryArrayUseNonVolatileRam = 0x06,\r
1025 EfiMemoryArrayUseCacheMemory = 0x07\r
1026} EFI_MEMORY_ARRAY_USE;\r
1027\r
1028typedef enum _EFI_MEMORY_ERROR_CORRECTION {\r
1029 EfiMemoryErrorCorrectionOther = 0x01,\r
1030 EfiMemoryErrorCorrectionUnknown = 0x02,\r
1031 EfiMemoryErrorCorrectionNone = 0x03,\r
1032 EfiMemoryErrorCorrectionParity = 0x04,\r
1033 EfiMemoryErrorCorrectionSingleBitEcc = 0x05,\r
1034 EfiMemoryErrorCorrectionMultiBitEcc = 0x06,\r
1035 EfiMemoryErrorCorrectionCrc = 0x07\r
1036} EFI_MEMORY_ERROR_CORRECTION;\r
1037\r
1038///\r
1039/// This data record refers to the physical memory array. This data record is a structure. \r
1040/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4: \r
1041/// - Table 3.3.17.1, Type 16, Offset 0x4 \r
1042/// - Table 3.3.17.2, Type 16, Offset 0x5 \r
1043/// - Table 3.3.17.3, Type 16, with the following offsets: \r
1044/// -- Offset 0x6 \r
1045/// -- Offset 0x7 \r
1046/// -- Offset 0xB \r
1047/// -- Offset 0xD \r
1048/// \r
1049typedef struct {\r
1050 ///\r
1051 /// The physical location of the memory array. \r
1052 ///\r
1053 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;\r
1054 ///\r
1055 /// The memory array usage.\r
1056 ///\r
1057 EFI_MEMORY_ARRAY_USE MemoryArrayUse;\r
1058 ///\r
1059 /// The primary error correction or detection supported by this memory array.\r
1060 ///\r
1061 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;\r
1062 ///\r
1063 /// The maximum memory capacity size in kilobytes. If capacity is unknown, then \r
1064 /// values of MaximumMemoryCapacity.Value = 0x00 and \r
1065 /// MaximumMemoryCapacity.Exponent = 0x8000 are used.\r
1066 ///\r
1067 EFI_EXP_BASE2_DATA MaximumMemoryCapacity;\r
1068 ///\r
1069 /// The number of memory slots or sockets that are available for memory devices \r
1070 /// in this array. \r
1071 ///\r
1072 UINT16 NumberMemoryDevices;\r
1073} EFI_MEMORY_ARRAY_LOCATION_DATA;\r
1074\r
1075\r
1076#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003\r
1077\r
1078typedef enum _EFI_MEMORY_FORM_FACTOR {\r
1079 EfiMemoryFormFactorOther = 0x01,\r
1080 EfiMemoryFormFactorUnknown = 0x02,\r
1081 EfiMemoryFormFactorSimm = 0x03,\r
1082 EfiMemoryFormFactorSip = 0x04,\r
1083 EfiMemoryFormFactorChip = 0x05,\r
1084 EfiMemoryFormFactorDip = 0x06,\r
1085 EfiMemoryFormFactorZip = 0x07,\r
1086 EfiMemoryFormFactorProprietaryCard = 0x08,\r
1087 EfiMemoryFormFactorDimm = 0x09,\r
1088 EfiMemoryFormFactorTsop = 0x0A,\r
1089 EfiMemoryFormFactorRowOfChips = 0x0B,\r
1090 EfiMemoryFormFactorRimm = 0x0C,\r
1091 EfiMemoryFormFactorSodimm = 0x0D,\r
1092 EfiMemoryFormFactorSrimm = 0x0E,\r
1093 ///\r
1094 /// Inconsistent with specification here: \r
1095 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1096 ///\r
1097 EfiMemoryFormFactorFbDimm = 0x0F\r
1098} EFI_MEMORY_FORM_FACTOR;\r
1099\r
1100typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
1101 EfiMemoryTypeOther = 0x01,\r
1102 EfiMemoryTypeUnknown = 0x02,\r
1103 EfiMemoryTypeDram = 0x03,\r
1104 EfiMemoryTypeEdram = 0x04,\r
1105 EfiMemoryTypeVram = 0x05,\r
1106 EfiMemoryTypeSram = 0x06,\r
1107 EfiMemoryTypeRam = 0x07,\r
1108 EfiMemoryTypeRom = 0x08,\r
1109 EfiMemoryTypeFlash = 0x09,\r
1110 EfiMemoryTypeEeprom = 0x0A,\r
1111 EfiMemoryTypeFeprom = 0x0B,\r
1112 EfiMemoryTypeEprom = 0x0C,\r
1113 EfiMemoryTypeCdram = 0x0D,\r
1114 EfiMemoryType3Dram = 0x0E,\r
1115 EfiMemoryTypeSdram = 0x0F,\r
1116 EfiMemoryTypeSgram = 0x10,\r
1117 EfiMemoryTypeRdram = 0x11,\r
1118 EfiMemoryTypeDdr = 0x12,\r
1119 ///\r
1120 /// Inconsistent with specification here: \r
1121 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1122 ///\r
1123 EfiMemoryTypeDdr2 = 0x13,\r
1124 ///\r
1125 /// Inconsistent with specification here: \r
1126 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1127 ///\r
1128 EfiMemoryTypeDdr2FbDimm = 0x14\r
1129} EFI_MEMORY_ARRAY_TYPE;\r
1130\r
1131typedef struct {\r
1132 UINT32 Reserved :1;\r
1133 UINT32 Other :1;\r
1134 UINT32 Unknown :1;\r
1135 UINT32 FastPaged :1;\r
1136 UINT32 StaticColumn :1;\r
1137 UINT32 PseudoStatic :1;\r
1138 UINT32 Rambus :1;\r
1139 UINT32 Synchronous :1;\r
1140 UINT32 Cmos :1;\r
1141 UINT32 Edo :1;\r
1142 UINT32 WindowDram :1;\r
1143 UINT32 CacheDram :1;\r
1144 UINT32 Nonvolatile :1;\r
1145 UINT32 Reserved1 :19;\r
1146} EFI_MEMORY_TYPE_DETAIL;\r
1147\r
1148typedef enum {\r
1149 EfiMemoryStateEnabled = 0,\r
1150 EfiMemoryStateUnknown = 1,\r
1151 EfiMemoryStateUnsupported = 2,\r
1152 EfiMemoryStateError = 3,\r
1153 EfiMemoryStateAbsent = 4,\r
1154 EfiMemoryStateDisabled = 5,\r
1155 ///\r
1156 /// Inconsistent with specification here: \r
1157 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1158 ///\r
1159 EfiMemoryStatePartial = 6\r
1160} EFI_MEMORY_STATE;\r
1161\r
1162///\r
1163/// This data record describes a memory device. This data record is a structure. \r
1164/// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.\r
1165///\r
1166typedef struct {\r
1167 ///\r
1168 /// A string that identifies the physically labeled socket or board position where the \r
1169 /// memory device is located.\r
1170 ///\r
1171 STRING_REF MemoryDeviceLocator;\r
1172 ///\r
1173 /// A string denoting the physically labeled bank where the memory device is located. \r
1174 ///\r
1175 STRING_REF MemoryBankLocator;\r
1176 ///\r
1177 /// A string denoting the memory manufacturer. \r
1178 /// \r
1179 STRING_REF MemoryManufacturer;\r
1180 ///\r
1181 /// A string denoting the serial number of the memory device. \r
1182 ///\r
1183 STRING_REF MemorySerialNumber;\r
1184 ///\r
1185 /// The asset tag of the memory device. \r
1186 ///\r
1187 STRING_REF MemoryAssetTag;\r
1188 ///\r
1189 /// A string denoting the part number of the memory device. \r
1190 ///\r
1191 STRING_REF MemoryPartNumber;\r
1192 ///\r
1193 /// A link to a memory array structure set. \r
1194 ///\r
1195 EFI_INTER_LINK_DATA MemoryArrayLink;\r
1196 ///\r
1197 /// A link to a memory array structure set.\r
1198 ///\r
1199 EFI_INTER_LINK_DATA MemorySubArrayLink;\r
1200 ///\r
1201 /// The total width in bits of this memory device. If there are no error correcting bits, \r
1202 /// then the total width equals the data width. If the width is unknown, then set the field \r
1203 /// to 0xFFFF. \r
1204 ///\r
1205 UINT16 MemoryTotalWidth;\r
1206 ///\r
1207 /// The data width in bits of the memory device. A data width of 0x00 and a total width \r
1208 /// of 0x08 indicate that the device is used solely for error correction. \r
1209 ///\r
1210 UINT16 MemoryDataWidth;\r
1211 ///\r
1212 /// The size in bytes of the memory device. A value of 0x00 denotes that no device is \r
1213 /// installed, while a value of all Fs denotes that the size is not known.\r
1214 ///\r
1215 EFI_EXP_BASE2_DATA MemoryDeviceSize;\r
1216 ///\r
1217 /// The form factor of the memory device. \r
1218 ///\r
1219 EFI_MEMORY_FORM_FACTOR MemoryFormFactor;\r
1220 ///\r
1221 /// A memory device set that must be populated with all devices of the same type and \r
1222 /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF \r
1223 /// indicates that the attribute is unknown. Any other value denotes the set number. \r
1224 ///\r
1225 UINT8 MemoryDeviceSet;\r
1226 ///\r
1227 /// The memory type in the socket. \r
1228 ///\r
1229 EFI_MEMORY_ARRAY_TYPE MemoryType;\r
1230 ///\r
1231 /// The memory type details. \r
1232 ///\r
1233 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;\r
1234 ///\r
1235 /// The memory speed in megahertz (MHz). A value of 0x00 denotes that \r
1236 /// the speed is unknown.\r
1237 /// Inconsistent with specification here: \r
1238 /// In MemSubclass spec 0.9, the naming is MemoryTypeSpeed.\r
1239 /// Keep it unchanged for backward compatibilty.\r
1240 ///\r
1241 EFI_EXP_BASE10_DATA MemorySpeed;\r
1242 ///\r
1243 /// The memory state. \r
1244 ///\r
1245 EFI_MEMORY_STATE MemoryState;\r
1246} EFI_MEMORY_ARRAY_LINK_DATA;\r
1247\r
1248\r
1249#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004\r
1250\r
1251///\r
1252/// This data record refers to a specified physical memory array associated with \r
1253/// a given memory range. \r
1254/// \r
1255typedef struct {\r
1256 ///\r
1257 /// The starting physical address in bytes of memory mapped to a specified physical \r
1258 /// memory array. \r
1259 ///\r
1260 EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress;\r
1261 ///\r
1262 /// The last physical address in bytes of memory mapped to a specified physical memory \r
1263 /// array. \r
1264 ///\r
1265 EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress;\r
1266 ///\r
1267 /// See Physical Memory Array (Type 16) for physical memory array structures.\r
1268 ///\r
1269 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;\r
1270 ///\r
1271 /// The number of memory devices that form a single row of memory for the address \r
1272 /// partition. \r
1273 ///\r
1274 UINT16 MemoryArrayPartitionWidth;\r
1275} EFI_MEMORY_ARRAY_START_ADDRESS_DATA;\r
1276\r
1277\r
1278#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005\r
1279\r
1280///\r
1281/// This data record refers to a physical memory device that is associated with \r
1282/// a given memory range.\r
1283/// \r
1284typedef struct {\r
1285 ///\r
1286 /// The starting physical address that is associated with the device. \r
1287 ///\r
1288 EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress;\r
1289 ///\r
1290 /// The ending physical address that is associated with the device. \r
1291 ///\r
1292 EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress;\r
1293 ///\r
1294 /// A link to the memory device data structure. \r
1295 ///\r
1296 EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink;\r
1297 /// \r
1298 /// A link to the memory array data structure. \r
1299 ///\r
1300 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;\r
1301 ///\r
1302 /// The position of the memory device in a row. A value of 0x00 is reserved and a value \r
1303 /// of 0xFF indicates that the position is unknown. \r
1304 ///\r
1305 UINT8 MemoryDevicePartitionRowPosition;\r
1306 ///\r
1307 /// The position of the device in an interleave. \r
1308 ///\r
1309 UINT8 MemoryDeviceInterleavePosition;\r
1310 ///\r
1311 /// The maximum number of consecutive rows from the device that are accessed in a \r
1312 /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved \r
1313 /// and a value of 0xFF indicates that the interleave configuration is unknown. \r
1314 ///\r
1315 UINT8 MemoryDeviceInterleaveDataDepth;\r
1316} EFI_MEMORY_DEVICE_START_ADDRESS_DATA;\r
1317\r
1318\r
1319//\r
1320// Memory. Channel Device Type - SMBIOS Type 37\r
1321//\r
1322\r
1323#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006\r
1324\r
1325typedef enum _EFI_MEMORY_CHANNEL_TYPE {\r
1326 EfiMemoryChannelTypeOther = 1,\r
1327 EfiMemoryChannelTypeUnknown = 2,\r
1328 EfiMemoryChannelTypeRambus = 3,\r
1329 EfiMemoryChannelTypeSyncLink = 4\r
1330} EFI_MEMORY_CHANNEL_TYPE;\r
1331\r
1332///\r
1333/// This data record refers the type of memory that is associated with the channel. This data record is a \r
1334/// structure. \r
1335/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4, \r
1336/// Table 3.3.38, Type 37, with the following offsets: \r
1337/// - Offset 0x4 \r
1338/// - Offset 0x5 \r
1339/// - Offset 0x6\r
1340/// \r
1341typedef struct {\r
1342 ///\r
1343 /// The type of memory that is associated with the channel. \r
1344 /// \r
1345 EFI_MEMORY_CHANNEL_TYPE MemoryChannelType;\r
1346 ///\r
1347 /// The maximum load that is supported by the channel.\r
1348 ///\r
1349 UINT8 MemoryChannelMaximumLoad;\r
1350 ///\r
1351 /// The number of memory devices on this channel. \r
1352 ///\r
1353 UINT8 MemoryChannelDeviceCount;\r
1354} EFI_MEMORY_CHANNEL_TYPE_DATA;\r
1355\r
1356#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007\r
1357\r
1358///\r
1359/// This data record refers to the memory device that is associated with the memory channel. This data \r
1360/// record is a structure. \r
1361/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4, \r
1362/// Table 3.3.38, Type 37, with the following offsets: \r
1363/// - Offset 0x7 \r
1364/// - Offset 0x8\r
1365///\r
1366typedef struct {\r
1367 ///\r
1368 /// A number between one and MemoryChannelDeviceCount plus an arbitrary base. \r
1369 /// \r
1370 UINT8 DeviceId;\r
1371 ///\r
1372 /// The Link of the associated memory device. See Memory Device (Type 17) for \r
1373 /// memory devices. \r
1374 ///\r
1375 EFI_INTER_LINK_DATA DeviceLink;\r
1376 ///\r
1377 /// The number of load units that this device consumes. \r
1378 ///\r
1379 UINT8 MemoryChannelDeviceLoad;\r
1380} EFI_MEMORY_CHANNEL_DEVICE_DATA;\r
1381\r
1382//\r
1383// Memory. Controller Information - SMBIOS Type 5\r
1384//\r
1385///\r
1386/// Inconsistent with specification here: \r
1387/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1388/// It's introduced for SmBios 2.6 type 5.\r
1389///\r
1390#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008\r
1391\r
1392///\r
1393/// Inconsistent with specification here: \r
1394/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1395/// It's introduced for SmBios 2.6 type 5.\r
1396///\r
1397typedef enum { \r
1398 EfiErrorDetectingMethodOther = 1,\r
1399 EfiErrorDetectingMethodUnknown = 2,\r
1400 EfiErrorDetectingMethodNone = 3,\r
1401 EfiErrorDetectingMethodParity = 4,\r
1402 EfiErrorDetectingMethod32Ecc = 5,\r
1403 EfiErrorDetectingMethod64Ecc = 6,\r
1404 EfiErrorDetectingMethod128Ecc = 7,\r
1405 EfiErrorDetectingMethodCrc = 8\r
1406} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
1407\r
1408///\r
1409/// Inconsistent with specification here: \r
1410/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1411/// It's introduced for SmBios 2.6 type 5.\r
1412///\r
1413typedef struct {\r
1414 UINT8 Other :1;\r
1415 UINT8 Unknown :1;\r
1416 UINT8 None :1;\r
1417 UINT8 SingleBitErrorCorrect :1;\r
1418 UINT8 DoubleBitErrorCorrect :1;\r
1419 UINT8 ErrorScrubbing :1;\r
1420 UINT8 Reserved :2;\r
1421} EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
1422\r
1423///\r
1424/// Inconsistent with specification here: \r
1425/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1426/// It's introduced for SmBios 2.6 type 5.\r
1427///\r
1428typedef enum { \r
1429 EfiMemoryInterleaveOther = 1,\r
1430 EfiMemoryInterleaveUnknown = 2,\r
1431 EfiMemoryInterleaveOneWay = 3,\r
1432 EfiMemoryInterleaveTwoWay = 4,\r
1433 EfiMemoryInterleaveFourWay = 5,\r
1434 EfiMemoryInterleaveEightWay = 6,\r
1435 EfiMemoryInterleaveSixteenWay = 7\r
1436} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
1437\r
1438///\r
1439/// Inconsistent with specification here: \r
1440/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1441/// It's introduced for SmBios 2.6 type 5.\r
1442///\r
1443typedef struct {\r
1444 UINT16 Other :1;\r
1445 UINT16 Unknown :1;\r
1446 UINT16 SeventyNs:1;\r
1447 UINT16 SixtyNs :1;\r
1448 UINT16 FiftyNs :1;\r
1449 UINT16 Reserved :11;\r
1450} EFI_MEMORY_SPEED_TYPE;\r
1451\r
1452///\r
1453/// Inconsistent with specification here: \r
1454/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1455/// It's introduced for SmBios 2.6 type 5.\r
1456///\r
1457typedef struct {\r
1458 UINT16 Other :1;\r
1459 UINT16 Unknown :1;\r
1460 UINT16 Standard :1;\r
1461 UINT16 FastPageMode:1;\r
1462 UINT16 EDO :1;\r
1463 UINT16 Parity :1;\r
1464 UINT16 ECC :1;\r
1465 UINT16 SIMM :1;\r
1466 UINT16 DIMM :1;\r
1467 UINT16 BurstEdo :1;\r
1468 UINT16 SDRAM :1;\r
1469 UINT16 Reserved :5;\r
1470} EFI_MEMORY_SUPPORTED_TYPE;\r
1471\r
1472///\r
1473/// Inconsistent with specification here: \r
1474/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1475/// It's introduced for SmBios 2.6 type 5.\r
1476///\r
1477typedef struct {\r
1478 UINT8 Five :1;\r
1479 UINT8 Three :1;\r
1480 UINT8 Two :1;\r
1481 UINT8 Reserved:5;\r
1482} EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
1483\r
1484///\r
1485/// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete\r
1486/// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead\r
1487///\r
1488/// Inconsistent with specification here: \r
1489/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1490/// It's introduced for SmBios 2.6 type 5.\r
1491///\r
1492typedef struct {\r
1493 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
1494 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
1495 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
1496 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
1497 UINT8 MaxMemoryModuleSize;\r
1498 EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
1499 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
1500 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
1501 UINT8 NumberofMemorySlot;\r
1502 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
1503 UINT16 *MemoryModuleConfigHandles;\r
1504} EFI_MEMORY_CONTROLLER_INFORMATION;\r
1505\r
1506///\r
1507/// Inconsistent with specification here: \r
1508/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1509/// It's introduced for SmBios 2.6 type 5.\r
1510///\r
1511typedef struct {\r
1512 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
1513 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
1514 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
1515 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
1516 UINT8 MaxMemoryModuleSize;\r
1517 EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
1518 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
1519 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
1520 UINT8 NumberofMemorySlot;\r
1521 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
1522 EFI_INTER_LINK_DATA MemoryModuleConfig[1];\r
1523} EFI_MEMORY_CONTROLLER_INFORMATION_DATA;\r
1524\r
1525///\r
1526/// Memory. Error Information - SMBIOS Type 18\r
1527///\r
1528/// Inconsistent with specification here: \r
1529/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1530/// It's introduced for SmBios 2.6 type 18.\r
1531///\r
1532#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009\r
1533///\r
1534/// Inconsistent with specification here: \r
1535/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1536/// It's introduced for SmBios 2.6 type 18.\r
1537///\r
1538typedef enum { \r
1539 EfiMemoryErrorOther = 1,\r
1540 EfiMemoryErrorUnknown = 2,\r
1541 EfiMemoryErrorOk = 3,\r
1542 EfiMemoryErrorBadRead = 4,\r
1543 EfiMemoryErrorParity = 5,\r
1544 EfiMemoryErrorSigleBit = 6,\r
1545 EfiMemoryErrorDoubleBit = 7,\r
1546 EfiMemoryErrorMultiBit = 8,\r
1547 EfiMemoryErrorNibble = 9,\r
1548 EfiMemoryErrorChecksum = 10,\r
1549 EfiMemoryErrorCrc = 11,\r
1550 EfiMemoryErrorCorrectSingleBit = 12,\r
1551 EfiMemoryErrorCorrected = 13,\r
1552 EfiMemoryErrorUnCorrectable = 14\r
1553} EFI_MEMORY_ERROR_TYPE;\r
1554///\r
1555/// Inconsistent with specification here: \r
1556/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1557/// It's introduced for SmBios 2.6 type 18.\r
1558///\r
1559typedef enum { \r
1560 EfiMemoryGranularityOther = 1,\r
1561 EfiMemoryGranularityOtherUnknown = 2,\r
1562 EfiMemoryGranularityDeviceLevel = 3,\r
1563 EfiMemoryGranularityMemPartitionLevel = 4\r
1564} EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
1565///\r
1566/// Inconsistent with specification here: \r
1567/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1568/// It's introduced for SmBios 2.6 type 18.\r
1569///\r
1570typedef enum { \r
1571 EfiMemoryErrorOperationOther = 1,\r
1572 EfiMemoryErrorOperationUnknown = 2,\r
1573 EfiMemoryErrorOperationRead = 3,\r
1574 EfiMemoryErrorOperationWrite = 4,\r
1575 EfiMemoryErrorOperationPartialWrite = 5\r
1576} EFI_MEMORY_ERROR_OPERATION_TYPE;\r
1577///\r
1578/// Inconsistent with specification here: \r
1579/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1580/// It's introduced for SmBios 2.6 type 18.\r
1581///\r
1582typedef struct {\r
1583 EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
1584 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
1585 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
1586 UINT32 VendorSyndrome;\r
1587 UINT32 MemoryArrayErrorAddress;\r
1588 UINT32 DeviceErrorAddress;\r
1589 UINT32 DeviceErrorResolution;\r
1590} EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
1591\r
1592///\r
1593/// Memory. Error Information - SMBIOS Type 33\r
1594///\r
1595/// Inconsistent with specification here: \r
1596/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1597/// It's introduced for SmBios 2.6 type 33.\r
1598///\r
1599#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A\r
1600\r
1601///\r
1602/// Inconsistent with specification here: \r
1603/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1604/// It's introduced for SmBios 2.6 type 33.\r
1605///\r
1606typedef struct {\r
1607 EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
1608 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
1609 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
1610 UINT32 VendorSyndrome;\r
1611 UINT64 MemoryArrayErrorAddress;\r
1612 UINT64 DeviceErrorAddress;\r
1613 UINT32 DeviceErrorResolution;\r
1614} EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
1615\r
1616///\r
1617/// Inconsistent with specification here: \r
1618/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1619/// It is implementation-specific to simplify the code logic.\r
1620///\r
1621typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
1622 EFI_MEMORY_SIZE_DATA SizeData;\r
1623 EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData;\r
1624 EFI_MEMORY_ARRAY_LINK_DATA ArrayLink;\r
1625 EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress;\r
1626 EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress;\r
1627 EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData;\r
1628 EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData;\r
1629 EFI_MEMORY_CONTROLLER_INFORMATION MemoryControllerInfo;\r
1630 EFI_MEMORY_32BIT_ERROR_INFORMATION Memory32bitErrorInfo;\r
1631 EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo;\r
1632} EFI_MEMORY_SUBCLASS_RECORDS;\r
1633\r
1634typedef struct {\r
1635 EFI_SUBCLASS_TYPE1_HEADER Header;\r
1636 EFI_MEMORY_SUBCLASS_RECORDS Record;\r
1637} EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
1638\r
1639#define EFI_MISC_SUBCLASS_VERSION 0x0100\r
1640\r
1641#pragma pack(1)\r
1642\r
1643//\r
1644// Last PCI Bus Number\r
1645//\r
1646#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001\r
1647\r
1648typedef struct {\r
1649 UINT8 LastPciBus;\r
1650} EFI_MISC_LAST_PCI_BUS_DATA;\r
1651\r
1652//\r
1653// Misc. BIOS Vendor - SMBIOS Type 0\r
1654//\r
1655#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002\r
1656\r
1657typedef struct {\r
1658 UINT64 Reserved1 :2;\r
1659 UINT64 Unknown :1;\r
1660 UINT64 BiosCharacteristicsNotSupported :1;\r
1661 UINT64 IsaIsSupported :1;\r
1662 UINT64 McaIsSupported :1;\r
1663 UINT64 EisaIsSupported :1;\r
1664 UINT64 PciIsSupported :1;\r
1665 UINT64 PcmciaIsSupported :1;\r
1666 UINT64 PlugAndPlayIsSupported :1;\r
1667 UINT64 ApmIsSupported :1;\r
1668 UINT64 BiosIsUpgradable :1;\r
1669 UINT64 BiosShadowingAllowed :1;\r
1670 UINT64 VlVesaIsSupported :1;\r
1671 UINT64 EscdSupportIsAvailable :1;\r
1672 UINT64 BootFromCdIsSupported :1;\r
1673 UINT64 SelectableBootIsSupported :1;\r
1674 UINT64 RomBiosIsSocketed :1;\r
1675 UINT64 BootFromPcmciaIsSupported :1;\r
1676 UINT64 EDDSpecificationIsSupported :1;\r
1677 UINT64 JapaneseNecFloppyIsSupported :1;\r
1678 UINT64 JapaneseToshibaFloppyIsSupported :1;\r
1679 UINT64 Floppy525_360IsSupported :1;\r
1680 UINT64 Floppy525_12IsSupported :1;\r
1681 UINT64 Floppy35_720IsSupported :1;\r
1682 UINT64 Floppy35_288IsSupported :1;\r
1683 UINT64 PrintScreenIsSupported :1;\r
1684 UINT64 Keyboard8042IsSupported :1;\r
1685 UINT64 SerialIsSupported :1;\r
1686 UINT64 PrinterIsSupported :1;\r
1687 UINT64 CgaMonoIsSupported :1;\r
1688 UINT64 NecPc98 :1;\r
1689 UINT64 AcpiIsSupported :1;\r
1690 UINT64 UsbLegacyIsSupported :1;\r
1691 UINT64 AgpIsSupported :1;\r
1692 UINT64 I20BootIsSupported :1;\r
1693 UINT64 Ls120BootIsSupported :1;\r
1694 UINT64 AtapiZipDriveBootIsSupported :1;\r
1695 UINT64 Boot1394IsSupported :1;\r
1696 UINT64 SmartBatteryIsSupported :1;\r
1697 UINT64 BiosBootSpecIsSupported :1;\r
1698 UINT64 FunctionKeyNetworkBootIsSupported :1;\r
1699 UINT64 Reserved :22;\r
1700} EFI_MISC_BIOS_CHARACTERISTICS;\r
1701\r
1702typedef struct {\r
1703 UINT64 BiosReserved :16;\r
1704 UINT64 SystemReserved:16;\r
1705 UINT64 Reserved :32;\r
1706} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;\r
1707\r
1708typedef struct {\r
1709 STRING_REF BiosVendor;\r
1710 STRING_REF BiosVersion;\r
1711 STRING_REF BiosReleaseDate;\r
1712 EFI_PHYSICAL_ADDRESS BiosStartingAddress;\r
1713 EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize;\r
1714 EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1;\r
1715 EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION \r
1716 BiosCharacteristics2;\r
1717 ///\r
1718 /// Inconsistent with specification here: \r
1719 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1720 /// It's introduced for SmBios 2.6 spec type 0.\r
1721 ///\r
1722 UINT8 BiosMajorRelease;\r
1723 ///\r
1724 /// Inconsistent with specification here: \r
1725 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1726 /// It's introduced for SmBios 2.6 spec type 0.\r
1727 ///\r
1728 UINT8 BiosMinorRelease;\r
1729 ///\r
1730 /// Inconsistent with specification here: \r
1731 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1732 /// It's introduced for SmBios 2.6 spec type 0.\r
1733 ///\r
1734 UINT8 BiosEmbeddedFirmwareMajorRelease;\r
1735 ///\r
1736 /// Inconsistent with specification here: \r
1737 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1738 /// It's introduced for SmBios 2.6 spec type 0.\r
1739 ///\r
1740 UINT8 BiosEmbeddedFirmwareMinorRelease;\r
1741} EFI_MISC_BIOS_VENDOR_DATA;\r
1742\r
1743//\r
1744// Misc. System Manufacturer - SMBIOS Type 1\r
1745//\r
1746#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003\r
1747\r
1748typedef enum {\r
1749 EfiSystemWakeupTypeReserved = 0,\r
1750 EfiSystemWakeupTypeOther = 1,\r
1751 EfiSystemWakeupTypeUnknown = 2,\r
1752 EfiSystemWakeupTypeApmTimer = 3,\r
1753 EfiSystemWakeupTypeModemRing = 4,\r
1754 EfiSystemWakeupTypeLanRemote = 5,\r
1755 EfiSystemWakeupTypePowerSwitch = 6,\r
1756 EfiSystemWakeupTypePciPme = 7,\r
1757 EfiSystemWakeupTypeAcPowerRestored = 8\r
1758} EFI_MISC_SYSTEM_WAKEUP_TYPE;\r
1759\r
1760typedef struct {\r
1761 STRING_REF SystemManufacturer;\r
1762 STRING_REF SystemProductName;\r
1763 STRING_REF SystemVersion;\r
1764 STRING_REF SystemSerialNumber;\r
1765 EFI_GUID SystemUuid;\r
1766 EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType;\r
1767 ///\r
1768 /// Inconsistent with specification here: \r
1769 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1770 /// It's introduced for SmBios 2.6 spec type 1.\r
1771 ///\r
1772 STRING_REF SystemSKUNumber;\r
1773 ///\r
1774 /// Inconsistent with specification here: \r
1775 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1776 /// It's introduced for SmBios 2.6 spec type 1.\r
1777 ///\r
1778 STRING_REF SystemFamily;\r
1779} EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
1780\r
1781//\r
1782// Misc. Base Board Manufacturer - SMBIOS Type 2\r
1783//\r
1784#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004\r
1785\r
1786typedef struct {\r
1787 UINT32 Motherboard :1;\r
1788 UINT32 RequiresDaughterCard :1;\r
1789 UINT32 Removable :1;\r
1790 UINT32 Replaceable :1;\r
1791 UINT32 HotSwappable :1;\r
1792 UINT32 Reserved :27;\r
1793} EFI_BASE_BOARD_FEATURE_FLAGS;\r
1794\r
1795typedef enum {\r
1796 EfiBaseBoardTypeUnknown = 1,\r
1797 EfiBaseBoardTypeOther = 2,\r
1798 EfiBaseBoardTypeServerBlade = 3,\r
1799 EfiBaseBoardTypeConnectivitySwitch = 4,\r
1800 EfiBaseBoardTypeSystemManagementModule = 5,\r
1801 EfiBaseBoardTypeProcessorModule = 6,\r
1802 EfiBaseBoardTypeIOModule = 7,\r
1803 EfiBaseBoardTypeMemoryModule = 8,\r
1804 EfiBaseBoardTypeDaughterBoard = 9,\r
1805 EfiBaseBoardTypeMotherBoard = 0xA,\r
1806 EfiBaseBoardTypeProcessorMemoryModule = 0xB,\r
1807 EfiBaseBoardTypeProcessorIOModule = 0xC,\r
1808 EfiBaseBoardTypeInterconnectBoard = 0xD\r
1809} EFI_BASE_BOARD_TYPE;\r
1810\r
1811typedef struct {\r
1812 STRING_REF BaseBoardManufacturer;\r
1813 STRING_REF BaseBoardProductName;\r
1814 STRING_REF BaseBoardVersion;\r
1815 STRING_REF BaseBoardSerialNumber;\r
1816 STRING_REF BaseBoardAssetTag;\r
1817 STRING_REF BaseBoardChassisLocation;\r
1818 EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags;\r
1819 EFI_BASE_BOARD_TYPE BaseBoardType;\r
1820 EFI_INTER_LINK_DATA BaseBoardChassisLink;\r
1821 UINT32 BaseBoardNumberLinks;\r
1822 EFI_INTER_LINK_DATA LinkN;\r
1823} EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;\r
1824\r
1825//\r
1826// Misc. System/Chassis Enclosure - SMBIOS Type 3\r
1827//\r
1828#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005\r
1829\r
1830typedef enum {\r
1831 EfiMiscChassisTypeOther = 0x1,\r
1832 EfiMiscChassisTypeUnknown = 0x2,\r
1833 EfiMiscChassisTypeDeskTop = 0x3,\r
1834 EfiMiscChassisTypeLowProfileDesktop = 0x4,\r
1835 EfiMiscChassisTypePizzaBox = 0x5,\r
1836 EfiMiscChassisTypeMiniTower = 0x6,\r
1837 EfiMiscChassisTypeTower = 0x7,\r
1838 EfiMiscChassisTypePortable = 0x8,\r
1839 EfiMiscChassisTypeLapTop = 0x9,\r
1840 EfiMiscChassisTypeNotebook = 0xA,\r
1841 EfiMiscChassisTypeHandHeld = 0xB,\r
1842 EfiMiscChassisTypeDockingStation = 0xC,\r
1843 EfiMiscChassisTypeAllInOne = 0xD,\r
1844 EfiMiscChassisTypeSubNotebook = 0xE,\r
1845 EfiMiscChassisTypeSpaceSaving = 0xF,\r
1846 EfiMiscChassisTypeLunchBox = 0x10,\r
1847 EfiMiscChassisTypeMainServerChassis = 0x11,\r
1848 EfiMiscChassisTypeExpansionChassis = 0x12,\r
1849 EfiMiscChassisTypeSubChassis = 0x13,\r
1850 EfiMiscChassisTypeBusExpansionChassis = 0x14,\r
1851 EfiMiscChassisTypePeripheralChassis = 0x15,\r
1852 EfiMiscChassisTypeRaidChassis = 0x16,\r
1853 EfiMiscChassisTypeRackMountChassis = 0x17,\r
1854 EfiMiscChassisTypeSealedCasePc = 0x18,\r
1855 EfiMiscChassisMultiSystemChassis = 0x19\r
1856} EFI_MISC_CHASSIS_TYPE;\r
1857\r
1858typedef struct {\r
1859 ///\r
1860 /// Inconsistent with specification here: \r
1861 /// In MiscSubclass 0.9 spec. It have a wrong field name "EFI_MISC_CHASSIS_TYPE".\r
1862 /// Change it to "ChassisType" to pass build.\r
1863 ///\r
1864 UINT32 ChassisType :16;\r
1865 UINT32 ChassisLockPresent:1;\r
1866 UINT32 Reserved :15;\r
1867} EFI_MISC_CHASSIS_STATUS;\r
1868\r
1869typedef enum {\r
1870 EfiChassisStateOther = 0x01,\r
1871 EfiChassisStateUnknown = 0x02,\r
1872 EfiChassisStateSafe = 0x03,\r
1873 EfiChassisStateWarning = 0x04,\r
1874 EfiChassisStateCritical = 0x05,\r
1875 EfiChassisStateNonRecoverable = 0x06\r
1876} EFI_MISC_CHASSIS_STATE;\r
1877\r
1878typedef enum {\r
1879 EfiChassisSecurityStatusOther = 0x01,\r
1880 EfiChassisSecurityStatusUnknown = 0x02,\r
1881 EfiChassisSecurityStatusNone = 0x03,\r
1882 EfiChassisSecurityStatusExternalInterfaceLockedOut = 0x04,\r
1883 EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05\r
1884} EFI_MISC_CHASSIS_SECURITY_STATE;\r
1885\r
1886typedef struct {\r
1887 UINT32 RecordType :1;\r
1888 UINT32 Type :7;\r
1889 UINT32 Reserved :24;\r
1890} EFI_MISC_ELEMENT_TYPE;\r
1891\r
1892typedef struct {\r
1893 EFI_MISC_ELEMENT_TYPE ChassisElementType;\r
1894 EFI_INTER_LINK_DATA ChassisElementStructure;\r
1895 EFI_BASE_BOARD_TYPE ChassisBaseBoard;\r
1896 UINT32 ChassisElementMinimum;\r
1897 UINT32 ChassisElementMaximum;\r
1898} EFI_MISC_ELEMENTS;\r
1899\r
1900typedef struct {\r
1901 STRING_REF ChassisManufacturer;\r
1902 STRING_REF ChassisVersion;\r
1903 STRING_REF ChassisSerialNumber;\r
1904 STRING_REF ChassisAssetTag;\r
1905 EFI_MISC_CHASSIS_STATUS ChassisType;\r
1906 EFI_MISC_CHASSIS_STATE ChassisBootupState;\r
1907 EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState;\r
1908 EFI_MISC_CHASSIS_STATE ChassisThermalState;\r
1909 EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;\r
1910 UINT32 ChassisOemDefined;\r
1911 UINT32 ChassisHeight;\r
1912 UINT32 ChassisNumberPowerCords;\r
1913 UINT32 ChassisElementCount;\r
1914 UINT32 ChassisElementRecordLength;\r
1915 EFI_MISC_ELEMENTS ChassisElements;\r
1916} EFI_MISC_CHASSIS_MANUFACTURER_DATA;\r
1917\r
1918//\r
1919// Misc. Port Connector Information - SMBIOS Type 8\r
1920//\r
1921#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006\r
1922\r
1923typedef enum {\r
1924 EfiPortConnectorTypeNone = 0x00,\r
1925 EfiPortConnectorTypeCentronics = 0x01,\r
1926 EfiPortConnectorTypeMiniCentronics = 0x02,\r
1927 EfiPortConnectorTypeProprietary = 0x03,\r
1928 EfiPortConnectorTypeDB25Male = 0x04,\r
1929 EfiPortConnectorTypeDB25Female = 0x05,\r
1930 EfiPortConnectorTypeDB15Male = 0x06,\r
1931 EfiPortConnectorTypeDB15Female = 0x07,\r
1932 EfiPortConnectorTypeDB9Male = 0x08,\r
1933 EfiPortConnectorTypeDB9Female = 0x09,\r
1934 EfiPortConnectorTypeRJ11 = 0x0A,\r
1935 EfiPortConnectorTypeRJ45 = 0x0B,\r
1936 EfiPortConnectorType50PinMiniScsi = 0x0C,\r
1937 EfiPortConnectorTypeMiniDin = 0x0D,\r
1938 EfiPortConnectorTypeMicriDin = 0x0E,\r
1939 EfiPortConnectorTypePS2 = 0x0F,\r
1940 EfiPortConnectorTypeInfrared = 0x10,\r
1941 EfiPortConnectorTypeHpHil = 0x11,\r
1942 EfiPortConnectorTypeUsb = 0x12,\r
1943 EfiPortConnectorTypeSsaScsi = 0x13,\r
1944 EfiPortConnectorTypeCircularDin8Male = 0x14,\r
1945 EfiPortConnectorTypeCircularDin8Female = 0x15,\r
1946 EfiPortConnectorTypeOnboardIde = 0x16,\r
1947 EfiPortConnectorTypeOnboardFloppy = 0x17,\r
1948 EfiPortConnectorType9PinDualInline = 0x18,\r
1949 EfiPortConnectorType25PinDualInline = 0x19,\r
1950 EfiPortConnectorType50PinDualInline = 0x1A,\r
1951 EfiPortConnectorType68PinDualInline = 0x1B,\r
1952 EfiPortConnectorTypeOnboardSoundInput = 0x1C,\r
1953 EfiPortConnectorTypeMiniCentronicsType14 = 0x1D,\r
1954 EfiPortConnectorTypeMiniCentronicsType26 = 0x1E,\r
1955 EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F,\r
1956 EfiPortConnectorTypeBNC = 0x20,\r
1957 EfiPortConnectorType1394 = 0x21,\r
1958 EfiPortConnectorTypePC98 = 0xA0,\r
1959 EfiPortConnectorTypePC98Hireso = 0xA1,\r
1960 EfiPortConnectorTypePCH98 = 0xA2,\r
1961 EfiPortConnectorTypePC98Note = 0xA3,\r
1962 EfiPortConnectorTypePC98Full = 0xA4,\r
1963 EfiPortConnectorTypeOther = 0xFF\r
1964} EFI_MISC_PORT_CONNECTOR_TYPE;\r
1965\r
1966typedef enum {\r
1967 EfiPortTypeNone = 0x00,\r
1968 EfiPortTypeParallelXtAtCompatible = 0x01,\r
1969 EfiPortTypeParallelPortPs2 = 0x02,\r
1970 EfiPortTypeParallelPortEcp = 0x03,\r
1971 EfiPortTypeParallelPortEpp = 0x04,\r
1972 EfiPortTypeParallelPortEcpEpp = 0x05,\r
1973 EfiPortTypeSerialXtAtCompatible = 0x06,\r
1974 EfiPortTypeSerial16450Compatible = 0x07,\r
1975 EfiPortTypeSerial16550Compatible = 0x08,\r
1976 EfiPortTypeSerial16550ACompatible = 0x09,\r
1977 EfiPortTypeScsi = 0x0A,\r
1978 EfiPortTypeMidi = 0x0B,\r
1979 EfiPortTypeJoyStick = 0x0C,\r
1980 EfiPortTypeKeyboard = 0x0D,\r
1981 EfiPortTypeMouse = 0x0E,\r
1982 EfiPortTypeSsaScsi = 0x0F,\r
1983 EfiPortTypeUsb = 0x10,\r
1984 EfiPortTypeFireWire = 0x11,\r
1985 EfiPortTypePcmciaTypeI = 0x12,\r
1986 EfiPortTypePcmciaTypeII = 0x13,\r
1987 EfiPortTypePcmciaTypeIII = 0x14,\r
1988 EfiPortTypeCardBus = 0x15,\r
1989 EfiPortTypeAccessBusPort = 0x16,\r
1990 EfiPortTypeScsiII = 0x17,\r
1991 EfiPortTypeScsiWide = 0x18,\r
1992 EfiPortTypePC98 = 0x19,\r
1993 EfiPortTypePC98Hireso = 0x1A,\r
1994 EfiPortTypePCH98 = 0x1B,\r
1995 EfiPortTypeVideoPort = 0x1C,\r
1996 EfiPortTypeAudioPort = 0x1D,\r
1997 EfiPortTypeModemPort = 0x1E,\r
1998 EfiPortTypeNetworkPort = 0x1F,\r
1999 EfiPortType8251Compatible = 0xA0,\r
2000 EfiPortType8251FifoCompatible = 0xA1,\r
2001 EfiPortTypeOther = 0xFF\r
2002} EFI_MISC_PORT_TYPE;\r
2003\r
2004typedef struct {\r
2005 STRING_REF PortInternalConnectorDesignator;\r
2006 STRING_REF PortExternalConnectorDesignator;\r
2007 EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType;\r
2008 EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType;\r
2009 EFI_MISC_PORT_TYPE PortType;\r
2010 EFI_MISC_PORT_DEVICE_PATH PortPath;\r
2011} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
2012\r
2013//\r
2014// Misc. System Slots - SMBIOS Type 9\r
2015//\r
2016#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007\r
2017\r
2018typedef enum {\r
2019 EfiSlotTypeOther = 0x01,\r
2020 EfiSlotTypeUnknown = 0x02,\r
2021 EfiSlotTypeIsa = 0x03,\r
2022 EfiSlotTypeMca = 0x04,\r
2023 EfiSlotTypeEisa = 0x05,\r
2024 EfiSlotTypePci = 0x06,\r
2025 EfiSlotTypePcmcia = 0x07,\r
2026 EfiSlotTypeVlVesa = 0x08,\r
2027 EfiSlotTypeProprietary = 0x09,\r
2028 EfiSlotTypeProcessorCardSlot = 0x0A,\r
2029 EfiSlotTypeProprietaryMemoryCardSlot = 0x0B,\r
2030 EfiSlotTypeIORiserCardSlot = 0x0C,\r
2031 EfiSlotTypeNuBus = 0x0D,\r
2032 EfiSlotTypePci66MhzCapable = 0x0E,\r
2033 EfiSlotTypeAgp = 0x0F,\r
2034 ///\r
2035 /// Inconsistent with specification here: \r
2036 /// In MiscSubclass spec 0.9, its naming should be EfiSlotTypeAgp2X\r
2037 /// rather than EfiSlotTypeApg2X.\r
2038 ///\r
2039 EfiSlotTypeAgp2X = 0x10,\r
2040 EfiSlotTypeAgp4X = 0x11,\r
2041 EfiSlotTypePciX = 0x12,\r
2042 EfiSlotTypeAgp8x = 0x13,\r
2043 EfiSlotTypePC98C20 = 0xA0,\r
2044 EfiSlotTypePC98C24 = 0xA1,\r
2045 EfiSlotTypePC98E = 0xA2,\r
2046 EfiSlotTypePC98LocalBus = 0xA3,\r
2047 EfiSlotTypePC98Card = 0xA4,\r
2048 ///\r
2049 /// Inconsistent with specification here: \r
2050 /// In MiscSubclass spec 0.9, this field isn't defined.\r
2051 /// It's introduced for SmBios 2.6 spec type 9.\r
2052 ///\r
2053 EfiSlotTypePciExpress = 0xA5\r
2054} EFI_MISC_SLOT_TYPE;\r
2055\r
2056typedef enum {\r
2057 EfiSlotDataBusWidthOther = 0x01,\r
2058 EfiSlotDataBusWidthUnknown = 0x02,\r
2059 EfiSlotDataBusWidth8Bit = 0x03,\r
2060 EfiSlotDataBusWidth16Bit = 0x04,\r
2061 EfiSlotDataBusWidth32Bit = 0x05,\r
2062 EfiSlotDataBusWidth64Bit = 0x06,\r
2063 EfiSlotDataBusWidth128Bit = 0x07\r
2064} EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
2065\r
2066typedef enum {\r
2067 EfiSlotUsageOther = 1,\r
2068 EfiSlotUsageUnknown = 2,\r
2069 EfiSlotUsageAvailable = 3,\r
2070 EfiSlotUsageInUse = 4\r
2071} EFI_MISC_SLOT_USAGE;\r
2072\r
2073typedef enum {\r
2074 EfiSlotLengthOther = 1,\r
2075 EfiSlotLengthUnknown = 2,\r
2076 EfiSlotLengthShort = 3,\r
2077 EfiSlotLengthLong = 4\r
2078} EFI_MISC_SLOT_LENGTH;\r
2079\r
2080typedef struct {\r
2081 UINT32 CharacteristicsUnknown :1;\r
2082 UINT32 Provides50Volts :1;\r
2083 UINT32 Provides33Volts :1;\r
2084 UINT32 SharedSlot :1;\r
2085 UINT32 PcCard16Supported :1;\r
2086 UINT32 CardBusSupported :1;\r
2087 UINT32 ZoomVideoSupported :1;\r
2088 UINT32 ModemRingResumeSupported:1;\r
2089 UINT32 PmeSignalSupported :1;\r
2090 UINT32 HotPlugDevicesSupported :1;\r
2091 UINT32 SmbusSignalSupported :1;\r
2092 UINT32 Reserved :21;\r
2093} EFI_MISC_SLOT_CHARACTERISTICS;\r
2094\r
2095typedef struct {\r
2096 STRING_REF SlotDesignation;\r
2097 EFI_MISC_SLOT_TYPE SlotType;\r
2098 EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth;\r
2099 EFI_MISC_SLOT_USAGE SlotUsage;\r
2100 EFI_MISC_SLOT_LENGTH SlotLength;\r
2101 UINT16 SlotId;\r
2102 EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;\r
2103 EFI_DEVICE_PATH_PROTOCOL SlotDevicePath;\r
2104} EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;\r
2105\r
2106//\r
2107// Misc. Onboard Device - SMBIOS Type 10\r
2108//\r
2109#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008\r
2110\r
2111typedef enum {\r
2112 EfiOnBoardDeviceTypeOther = 1,\r
2113 EfiOnBoardDeviceTypeUnknown = 2,\r
2114 EfiOnBoardDeviceTypeVideo = 3,\r
2115 EfiOnBoardDeviceTypeScsiController = 4,\r
2116 EfiOnBoardDeviceTypeEthernet = 5,\r
2117 EfiOnBoardDeviceTypeTokenRing = 6,\r
2118 EfiOnBoardDeviceTypeSound = 7\r
2119} EFI_MISC_ONBOARD_DEVICE_TYPE;\r
2120\r
2121typedef struct {\r
2122 UINT32 DeviceType :16;\r
2123 UINT32 DeviceEnabled :1;\r
2124 UINT32 Reserved :15;\r
2125} EFI_MISC_ONBOARD_DEVICE_STATUS;\r
2126\r
2127typedef struct {\r
2128 STRING_REF OnBoardDeviceDescription;\r
2129 ///\r
2130 /// Inconsistent with specification here: \r
2131 /// In MiscSubclass spec 0.9, the naming is OnBoardDeviceType.\r
2132 /// Keep it unchanged for backward compatibilty.\r
2133 ///\r
2134 EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus;\r
2135 EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath;\r
2136} EFI_MISC_ONBOARD_DEVICE_DATA;\r
2137\r
2138//\r
2139// Misc. BIOS Language Information - SMBIOS Type 11\r
2140//\r
2141#define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009\r
2142\r
2143typedef struct {\r
2144 STRING_REF OemStringRef[1];\r
2145} EFI_MISC_OEM_STRING_DATA;\r
2146\r
2147//\r
2148// Misc. System Options - SMBIOS Type 12\r
2149//\r
2150typedef struct {\r
2151 STRING_REF SystemOptionStringRef[1];\r
2152} EFI_MISC_SYSTEM_OPTION_STRING_DATA;\r
2153\r
2154#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A\r
2155\r
2156//\r
2157// Misc. Number of Installable Languages - SMBIOS Type 13\r
2158//\r
2159#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B\r
2160\r
2161typedef struct {\r
2162 UINT32 AbbreviatedLanguageFormat :1;\r
2163 UINT32 Reserved :31;\r
2164} EFI_MISC_LANGUAGE_FLAGS;\r
2165\r
2166typedef struct {\r
2167 UINT16 NumberOfInstallableLanguages;\r
2168 EFI_MISC_LANGUAGE_FLAGS LanguageFlags;\r
2169 UINT16 CurrentLanguageNumber;\r
2170} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;\r
2171\r
2172//\r
2173// Misc. System Language String\r
2174//\r
2175#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C\r
2176\r
2177typedef struct {\r
2178 UINT16 LanguageId;\r
2179 STRING_REF SystemLanguageString;\r
2180} EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;\r
2181\r
2182//\r
2183// Group Associations - SMBIOS Type 14\r
2184//\r
2185#define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D\r
2186\r
2187typedef struct {\r
2188 STRING_REF GroupName;\r
2189 UINT16 NumberGroupItems;\r
2190 UINT16 GroupId;\r
2191} EFI_MISC_GROUP_NAME_DATA;\r
2192\r
2193//\r
2194// Group Item Set Element\r
2195//\r
2196#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E\r
2197\r
2198typedef struct {\r
2199 EFI_GUID SubClass;\r
2200 EFI_INTER_LINK_DATA GroupLink;\r
2201 UINT16 GroupId;\r
2202 UINT16 GroupElementId;\r
2203} EFI_MISC_GROUP_ITEM_SET_DATA;\r
2204\r
2205//\r
2206// Misc. Pointing Device Type - SMBIOS Type 21\r
2207//\r
2208#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F\r
2209\r
2210typedef enum {\r
2211 EfiPointingDeviceTypeOther = 0x01,\r
2212 EfiPointingDeviceTypeUnknown = 0x02,\r
2213 EfiPointingDeviceTypeMouse = 0x03,\r
2214 EfiPointingDeviceTypeTrackBall = 0x04,\r
2215 EfiPointingDeviceTypeTrackPoint = 0x05,\r
2216 EfiPointingDeviceTypeGlidePoint = 0x06,\r
2217 EfiPointingDeviceTouchPad = 0x07,\r
2218 EfiPointingDeviceTouchScreen = 0x08,\r
2219 EfiPointingDeviceOpticalSensor = 0x09\r
2220} EFI_MISC_POINTING_DEVICE_TYPE;\r
2221\r
2222typedef enum {\r
2223 EfiPointingDeviceInterfaceOther = 0x01,\r
2224 EfiPointingDeviceInterfaceUnknown = 0x02,\r
2225 EfiPointingDeviceInterfaceSerial = 0x03,\r
2226 EfiPointingDeviceInterfacePs2 = 0x04,\r
2227 EfiPointingDeviceInterfaceInfrared = 0x05,\r
2228 EfiPointingDeviceInterfaceHpHil = 0x06,\r
2229 EfiPointingDeviceInterfaceBusMouse = 0x07,\r
2230 EfiPointingDeviceInterfaceADB = 0x08,\r
2231 EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0,\r
2232 EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1,\r
2233 EfiPointingDeviceInterfaceUsb = 0xA2\r
2234} EFI_MISC_POINTING_DEVICE_INTERFACE;\r
2235\r
2236typedef struct {\r
2237 EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType;\r
2238 EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface;\r
2239 UINT16 NumberPointingDeviceButtons;\r
2240 EFI_DEVICE_PATH_PROTOCOL PointingDevicePath;\r
2241} EFI_MISC_POINTING_DEVICE_TYPE_DATA;\r
2242\r
2243//\r
2244// Portable Battery - SMBIOS Type 22\r
2245//\r
2246///\r
2247/// Inconsistent with specification here: \r
2248/// In MiscSubclass spec 0.9, the naming is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.\r
2249/// Keep it unchanged for backward compatibilty.\r
2250///\r
2251#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010\r
2252\r
2253///\r
2254/// Inconsistent with specification here: \r
2255/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.\r
2256/// And all field namings are also different with spec.\r
2257/// Keep it unchanged for backward compatibilty.\r
2258///\r
2259typedef enum { \r
2260 EfiPortableBatteryDeviceChemistryOther = 1,\r
2261 EfiPortableBatteryDeviceChemistryUnknown = 2,\r
2262 EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
2263 EfiPortableBatteryDeviceChemistryNickelCadmium = 4,\r
2264 EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,\r
2265 EfiPortableBatteryDeviceChemistryLithiumIon = 6,\r
2266 EfiPortableBatteryDeviceChemistryZincAir = 7,\r
2267 EfiPortableBatteryDeviceChemistryLithiumPolymer = 8\r
2268} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
2269\r
2270///\r
2271/// Inconsistent with specification here: \r
2272/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.\r
2273/// And the name and the order of the fields are also different with spec.\r
2274/// Keep it unchanged for backward compatibilty.\r
2275///\r
2276typedef struct {\r
2277 STRING_REF Location;\r
2278 STRING_REF Manufacturer;\r
2279 STRING_REF ManufactureDate;\r
2280 STRING_REF SerialNumber;\r
2281 STRING_REF DeviceName;\r
2282 EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY \r
2283 DeviceChemistry;\r
2284 UINT16 DesignCapacity;\r
2285 UINT16 DesignVoltage;\r
2286 STRING_REF SBDSVersionNumber;\r
2287 UINT8 MaximumError;\r
2288 UINT16 SBDSSerialNumber;\r
2289 UINT16 SBDSManufactureDate;\r
2290 STRING_REF SBDSDeviceChemistry;\r
2291 UINT8 DesignCapacityMultiplier;\r
2292 UINT32 OEMSpecific; \r
2293 UINT8 BatteryNumber; // Temporary \r
2294 BOOLEAN Valid; // Is entry valid - Temporary\r
2295} EFI_MISC_PORTABLE_BATTERY;\r
2296\r
2297\r
2298//\r
2299// Misc. Reset Capabilities - SMBIOS Type 23\r
2300//\r
2301#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011\r
2302\r
2303typedef struct {\r
2304 UINT32 Status :1;\r
2305 UINT32 BootOption :2;\r
2306 UINT32 BootOptionOnLimit :2;\r
2307 UINT32 WatchdogTimerPresent:1;\r
2308 UINT32 Reserved :26;\r
2309} EFI_MISC_RESET_CAPABILITIES_TYPE;\r
2310\r
2311typedef struct {\r
2312 EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities;\r
2313 UINT16 ResetCount;\r
2314 UINT16 ResetLimit;\r
2315 UINT16 ResetTimerInterval;\r
2316 UINT16 ResetTimeout;\r
2317} EFI_MISC_RESET_CAPABILITIES;\r
2318\r
2319typedef struct {\r
2320 EFI_MISC_RESET_CAPABILITIES ResetCapabilities;\r
2321 UINT16 ResetCount;\r
2322 UINT16 ResetLimit;\r
2323 UINT16 ResetTimerInterval;\r
2324 UINT16 ResetTimeout;\r
2325} EFI_MISC_RESET_CAPABILITIES_DATA;\r
2326\r
2327//\r
2328// Misc. Hardware Security - SMBIOS Type 24\r
2329//\r
2330#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012\r
2331\r
2332///\r
2333/// Inconsistent with specification here: \r
2334/// In MiscSubclass spec 0.9, it only mention the possible value of each field in\r
2335/// EFI_MISC_HARDWARE_SECURITY_SETTINGS. \r
2336/// It's implementation-specific to simplify the code logic.\r
2337///\r
2338typedef enum {\r
2339 EfiHardwareSecurityStatusDisabled = 0,\r
2340 EfiHardwareSecurityStatusEnabled = 1,\r
2341 EfiHardwareSecurityStatusNotImplemented = 2,\r
2342 EfiHardwareSecurityStatusUnknown = 3\r
2343} EFI_MISC_HARDWARE_SECURITY_STATUS;\r
2344\r
2345typedef struct {\r
2346 UINT32 FrontPanelResetStatus :2;\r
2347 UINT32 AdministratorPasswordStatus :2;\r
2348 UINT32 KeyboardPasswordStatus :2;\r
2349 UINT32 PowerOnPasswordStatus :2;\r
2350 UINT32 Reserved :24;\r
2351} EFI_MISC_HARDWARE_SECURITY_SETTINGS;\r
2352\r
2353typedef struct {\r
2354 EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;\r
2355} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;\r
2356\r
2357//\r
2358// System Power Controls - SMBIOS Type 25\r
2359//\r
2360#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013\r
2361\r
2362typedef struct {\r
2363 UINT16 ScheduledPoweronMonth;\r
2364 UINT16 ScheduledPoweronDayOfMonth;\r
2365 UINT16 ScheduledPoweronHour;\r
2366 UINT16 ScheduledPoweronMinute;\r
2367 UINT16 ScheduledPoweronSecond;\r
2368} EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;\r
2369\r
2370//\r
2371// Voltage Probe - SMBIOS Type 26\r
2372//\r
2373#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014\r
2374\r
2375typedef struct {\r
2376 UINT32 VoltageProbeSite :5;\r
2377 UINT32 VoltageProbeStatus :3;\r
2378 UINT32 Reserved :24;\r
2379} EFI_MISC_VOLTAGE_PROBE_LOCATION;\r
2380\r
2381typedef struct {\r
2382 STRING_REF VoltageProbeDescription;\r
2383 EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation;\r
2384 EFI_EXP_BASE10_DATA VoltageProbeMaximumValue;\r
2385 EFI_EXP_BASE10_DATA VoltageProbeMinimumValue;\r
2386 EFI_EXP_BASE10_DATA VoltageProbeResolution;\r
2387 EFI_EXP_BASE10_DATA VoltageProbeTolerance;\r
2388 EFI_EXP_BASE10_DATA VoltageProbeAccuracy;\r
2389 EFI_EXP_BASE10_DATA VoltageProbeNominalValue;\r
2390 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2391 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2392 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2393 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2394 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2395 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2396 UINT32 VoltageProbeOemDefined;\r
2397} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;\r
2398\r
2399//\r
2400// Cooling Device - SMBIOS Type 27\r
2401//\r
2402#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015\r
2403\r
2404typedef struct {\r
2405 UINT32 CoolingDevice :5;\r
2406 UINT32 CoolingDeviceStatus :3;\r
2407 UINT32 Reserved :24;\r
2408} EFI_MISC_COOLING_DEVICE_TYPE;\r
2409\r
2410typedef struct {\r
2411 EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType;\r
2412 EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink;\r
2413 UINT16 CoolingDeviceUnitGroup;\r
2414 EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed;\r
2415 UINT32 CoolingDeviceOemDefined;\r
2416} EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
2417\r
2418//\r
2419// Temperature Probe - SMBIOS Type 28\r
2420//\r
2421#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016\r
2422\r
2423typedef struct {\r
2424 UINT32 TemperatureProbeSite :5;\r
2425 UINT32 TemperatureProbeStatus :3;\r
2426 UINT32 Reserved :24;\r
2427} EFI_MISC_TEMPERATURE_PROBE_LOCATION;\r
2428\r
2429typedef struct {\r
2430 STRING_REF TemperatureProbeDescription;\r
2431 EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
2432 TemperatureProbeLocation;\r
2433 EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue;\r
2434 EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue;\r
2435 EFI_EXP_BASE10_DATA TemperatureProbeResolution;\r
2436 EFI_EXP_BASE10_DATA TemperatureProbeTolerance;\r
2437 EFI_EXP_BASE10_DATA TemperatureProbeAccuracy;\r
2438 EFI_EXP_BASE10_DATA TemperatureProbeNominalValue;\r
2439 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2440 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2441 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2442 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2443 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2444 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2445 UINT32 TemperatureProbeOemDefined;\r
2446} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
2447\r
2448//\r
2449// Electrical Current Probe - SMBIOS Type 29\r
2450//\r
2451\r
2452#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017\r
2453\r
2454typedef struct {\r
2455 UINT32 ElectricalCurrentProbeSite :5;\r
2456 UINT32 ElectricalCurrentProbeStatus :3;\r
2457 UINT32 Reserved :24;\r
2458} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;\r
2459\r
2460typedef struct {\r
2461 STRING_REF ElectricalCurrentProbeDescription;\r
2462 EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION\r
2463 ElectricalCurrentProbeLocation;\r
2464 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue;\r
2465 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue;\r
2466 EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution;\r
2467 EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance;\r
2468 EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy;\r
2469 EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue;\r
2470 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2471 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2472 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2473 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2474 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2475 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2476 UINT32 ElectricalCurrentProbeOemDefined;\r
2477} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;\r
2478\r
2479//\r
2480// Out-of-Band Remote Access - SMBIOS Type 30\r
2481//\r
2482\r
2483#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018\r
2484\r
2485typedef struct {\r
2486 UINT32 InboundConnectionEnabled :1;\r
2487 UINT32 OutboundConnectionEnabled :1;\r
2488 UINT32 Reserved :30;\r
2489} EFI_MISC_REMOTE_ACCESS_CONNECTIONS;\r
2490\r
2491typedef struct {\r
2492 STRING_REF RemoteAccessManufacturerNameDescription;\r
2493 EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections;\r
2494} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;\r
2495\r
2496//\r
2497// Misc. BIS Entry Point - SMBIOS Type 31\r
2498//\r
2499#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019\r
2500\r
2501typedef struct {\r
2502 EFI_PHYSICAL_ADDRESS BisEntryPoint;\r
2503} EFI_MISC_BIS_ENTRY_POINT_DATA;\r
2504\r
2505//\r
2506// Misc. Boot Information - SMBIOS Type 32\r
2507//\r
2508#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A\r
2509\r
2510///\r
2511/// Inconsistent with specification here: \r
2512/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
2513/// Keep it unchanged for backward compatibilty.\r
2514///\r
2515typedef enum {\r
2516 EfiBootInformationStatusNoError = 0x00,\r
2517 EfiBootInformationStatusNoBootableMedia = 0x01,\r
2518 EfiBootInformationStatusNormalOSFailedLoading = 0x02,\r
2519 EfiBootInformationStatusFirmwareDetectedFailure = 0x03,\r
2520 EfiBootInformationStatusOSDetectedFailure = 0x04,\r
2521 EfiBootInformationStatusUserRequestedBoot = 0x05,\r
2522 EfiBootInformationStatusSystemSecurityViolation = 0x06,\r
2523 EfiBootInformationStatusPreviousRequestedImage = 0x07,\r
2524 EfiBootInformationStatusWatchdogTimerExpired = 0x08,\r
2525 EfiBootInformationStatusStartReserved = 0x09,\r
2526 EfiBootInformationStatusStartOemSpecific = 0x80,\r
2527 EfiBootInformationStatusStartProductSpecific = 0xC0\r
2528} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
2529\r
2530typedef struct {\r
2531 ///\r
2532 /// Inconsistent with specification here: \r
2533 /// In MiscSubclass spec 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
2534 /// Keep it unchanged for backward compatibilty.\r
2535 ///\r
2536 EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
2537 UINT8 BootInformationData[9];\r
2538} EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
2539\r
2540//\r
2541// Management Device - SMBIOS Type 34\r
2542//\r
2543#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B\r
2544\r
2545typedef enum {\r
2546 EfiManagementDeviceTypeOther = 0x01,\r
2547 EfiManagementDeviceTypeUnknown = 0x02,\r
2548 EfiManagementDeviceTypeLm75 = 0x03,\r
2549 EfiManagementDeviceTypeLm78 = 0x04,\r
2550 EfiManagementDeviceTypeLm79 = 0x05,\r
2551 EfiManagementDeviceTypeLm80 = 0x06,\r
2552 EfiManagementDeviceTypeLm81 = 0x07,\r
2553 EfiManagementDeviceTypeAdm9240 = 0x08,\r
2554 EfiManagementDeviceTypeDs1780 = 0x09,\r
2555 EfiManagementDeviceTypeMaxim1617 = 0x0A,\r
2556 EfiManagementDeviceTypeGl518Sm = 0x0B,\r
2557 EfiManagementDeviceTypeW83781D = 0x0C,\r
2558 EfiManagementDeviceTypeHt82H791 = 0x0D\r
2559} EFI_MISC_MANAGEMENT_DEVICE_TYPE;\r
2560\r
2561typedef enum {\r
2562 EfiManagementDeviceAddressTypeOther = 1,\r
2563 EfiManagementDeviceAddressTypeUnknown = 2,\r
2564 EfiManagementDeviceAddressTypeIOPort = 3,\r
2565 EfiManagementDeviceAddressTypeMemory = 4,\r
2566 EfiManagementDeviceAddressTypeSmbus = 5\r
2567} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;\r
2568\r
2569typedef struct {\r
2570 STRING_REF ManagementDeviceDescription;\r
2571 EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType;\r
2572 UINTN ManagementDeviceAddress;\r
2573 EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE\r
2574 ManagementDeviceAddressType;\r
2575} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;\r
2576\r
2577//\r
2578// Management Device Component - SMBIOS Type 35\r
2579//\r
2580\r
2581#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C\r
2582\r
2583typedef struct {\r
2584 STRING_REF ManagementDeviceComponentDescription;\r
2585 EFI_INTER_LINK_DATA ManagementDeviceLink;\r
2586 EFI_INTER_LINK_DATA ManagementDeviceComponentLink;\r
2587 ///\r
2588 /// Inconsistent with specification here: \r
2589 /// In MiscSubclass spec 0.9, this field is NOT defined.\r
2590 /// It's introduced for SmBios 2.6 spec type 35.\r
2591 ///\r
2592 EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;\r
2593} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
2594\r
2595//\r
2596// IPMI Data Record - SMBIOS Type 38\r
2597//\r
2598typedef enum {\r
2599 EfiIpmiOther = 0,\r
2600 EfiIpmiKcs = 1,\r
2601 EfiIpmiSmic = 2,\r
2602 EfiIpmiBt = 3\r
2603} EFI_MISC_IPMI_INTERFACE_TYPE;\r
2604\r
2605typedef struct {\r
2606 UINT16 IpmiSpecLeastSignificantDigit:4;\r
2607 UINT16 IpmiSpecMostSignificantDigit: 4;\r
2608 UINT16 Reserved: 8;\r
2609} EFI_MISC_IPMI_SPECIFICATION_REVISION;\r
2610\r
2611typedef struct {\r
2612 EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType;\r
2613 EFI_MISC_IPMI_SPECIFICATION_REVISION \r
2614 IpmiSpecificationRevision;\r
2615 UINT16 IpmiI2CSlaveAddress;\r
2616 UINT16 IpmiNvDeviceAddress;\r
2617 UINT64 IpmiBaseAddress;\r
2618 EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath;\r
2619} EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
2620\r
2621#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D\r
2622\r
2623///\r
2624/// System Power supply Record - SMBIOS Type 39\r
2625///\r
2626/// Inconsistent with specification here: \r
2627/// In MiscSubclass spec 0.9, the type of all fields are UINT32.\r
2628/// Keep it unchanged for backward compatibilty.\r
2629///\r
2630typedef struct {\r
2631 UINT16 PowerSupplyHotReplaceable:1;\r
2632 UINT16 PowerSupplyPresent :1;\r
2633 UINT16 PowerSupplyUnplugged :1;\r
2634 UINT16 InputVoltageRangeSwitch :4;\r
2635 UINT16 PowerSupplyStatus :3;\r
2636 UINT16 PowerSupplyType :4;\r
2637 UINT16 Reserved :2;\r
2638} EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;\r
2639\r
2640///\r
2641/// Inconsistent with specification here: \r
2642/// In MiscSubclass spec 0.9, the field name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.\r
2643/// Keep it unchanged for backward compatibilty.\r
2644///\r
2645typedef struct {\r
2646 UINT16 PowerUnitGroup;\r
2647 STRING_REF PowerSupplyLocation;\r
2648 STRING_REF PowerSupplyDeviceName;\r
2649 STRING_REF PowerSupplyManufacturer;\r
2650 STRING_REF PowerSupplySerialNumber;\r
2651 STRING_REF PowerSupplyAssetTagNumber;\r
2652 STRING_REF PowerSupplyModelPartNumber;\r
2653 STRING_REF PowerSupplyRevisionLevel;\r
2654 UINT16 PowerSupplyMaxPowerCapacity;\r
2655 EFI_MISC_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;\r
2656 EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;\r
2657 EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;\r
2658 EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;\r
2659} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
2660\r
2661#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E\r
2662\r
2663///\r
2664/// OEM Data Record - SMBIOS Type 0x80-0xFF\r
2665///\r
2666/// Inconsistent with specification here: \r
2667/// In MiscSubclass spec 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.\r
2668/// Due to this structure is commonly used by vendor to construct SmBios type 0x80~0xFF table,\r
2669/// Keep it unchanged for backward compatibilty.\r
2670///\r
2671typedef struct {\r
2672 UINT8 Type;\r
2673 UINT8 Length;\r
2674 UINT16 Handle;\r
2675} SMBIOS_STRUCTURE_HDR;\r
2676\r
2677typedef struct {\r
2678 ///\r
2679 /// Inconsistent with specification here: \r
2680 /// In MiscSubclass spec 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.\r
2681 /// Keep it unchanged for backward compatibilty.\r
2682 ///\r
2683 SMBIOS_STRUCTURE_HDR Header;\r
2684 UINT8 RawData[1];\r
2685} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
2686\r
2687#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F\r
2688\r
2689///\r
2690/// Misc. System Event Log - SMBIOS Type 15\r
2691///\r
2692/// Inconsistent with specification here: \r
2693/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
2694/// It's introduced for SmBios 2.6 spec type 15.\r
2695///\r
2696#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020\r
2697\r
2698///\r
2699/// Inconsistent with specification here: \r
2700/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
2701/// It's introduced for SmBios 2.6 spec type 15.\r
2702///\r
2703typedef struct {\r
2704 UINT16 LogAreaLength;\r
2705 UINT16 LogHeaderStartOffset;\r
2706 UINT16 LogDataStartOffset;\r
2707 UINT8 AccessMethod;\r
2708 UINT8 LogStatus;\r
2709 UINT32 LogChangeToken;\r
2710 UINT32 AccessMethodAddress;\r
2711 UINT8 LogHeaderFormat;\r
2712 UINT8 NumberOfSupportedLogType;\r
2713 UINT8 LengthOfLogDescriptor;\r
2714} EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
2715\r
2716//\r
2717// Access Method.\r
2718// 0x00~0x04: as following definition\r
2719// 0x05~0x7f: Available for future assignment.\r
2720// 0x80~0xff: BIOS Vendor/OEM-specific.\r
2721// \r
2722#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00\r
2723#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01\r
2724#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02\r
2725#define ACCESS_MEMORY_MAPPED 0x03\r
2726#define ACCESS_GPNV 0x04\r
2727\r
2728///\r
2729/// Management Device Threshold Data Record - SMBIOS Type 36\r
2730///\r
2731/// Inconsistent with specification here: \r
2732/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
2733/// It's introduced for SmBios 2.6 spec type 36.\r
2734///\r
2735#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021\r
2736///\r
2737/// Inconsistent with specification here: \r
2738/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
2739/// It's introduced for SmBios 2.6 spec type 36.\r
2740///\r
2741typedef struct {\r
2742 UINT16 LowerThresNonCritical;\r
2743 UINT16 UpperThresNonCritical;\r
2744 UINT16 LowerThresCritical;\r
2745 UINT16 UpperThresCritical;\r
2746 UINT16 LowerThresNonRecover;\r
2747 UINT16 UpperThresNonRecover;\r
2748} EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;\r
2749\r
2750//\r
2751// Declare the following strutures alias to use them more conviniently.\r
2752//\r
2753typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS;\r
2754typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR;\r
2755typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER;\r
2756typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER;\r
2757typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER;\r
2758typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;\r
2759typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION;\r
2760typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE;\r
2761typedef EFI_MISC_POINTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
2762typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING;\r
2763typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING;\r
2764typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;\r
2765typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING;\r
2766typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG;\r
2767typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT;\r
2768typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS;\r
2769typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY;\r
2770typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;\r
2771typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA EFI_MISC_SCHEDULED_POWER_ON_MONTH;\r
2772typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;\r
2773typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA EFI_MISC_COOLING_DEVICE_TEMP_LINK;\r
2774typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION;\r
2775typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA \r
2776 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION;\r
2777typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;\r
2778typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;\r
2779\r
2780///\r
2781/// Inconsistent with specification here: \r
2782/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
2783/// It is implementation-specific to simplify the code logic.\r
2784///\r
2785typedef union {\r
2786 EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;\r
2787 EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor;\r
2788 EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer;\r
2789 EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer;\r
2790 EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer;\r
2791 EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator;\r
2792 EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation;\r
2793 EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice;\r
2794 EFI_MISC_OEM_STRING_DATA MiscOemString;\r
2795 EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString;\r
2796 EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages;\r
2797 EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString;\r
2798 EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog;\r
2799 EFI_MISC_GROUP_NAME_DATA MiscGroupNameData;\r
2800 EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData;\r
2801 EFI_MISC_POINTING_DEVICE_TYPE_DATA MiscPointingDeviceTypeData;\r
2802 EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData;\r
2803 EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData;\r
2804 EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData;\r
2805 EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData;\r
2806 EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData;\r
2807 EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData;\r
2808 EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;\r
2809 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
2810 MiscRemoteAccessManufacturerDescriptionData;\r
2811 EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint;\r
2812 EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus;\r
2813 EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData;\r
2814 EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
2815 MiscmangementDeviceComponentDescriptionData;\r
2816 EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData;\r
2817 EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo;\r
2818 EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation;\r
2819 EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold;\r
2820} EFI_MISC_SUBCLASS_RECORDS;\r
2821\r
2822///\r
2823/// Inconsistent with specification here: \r
2824/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
2825/// It is implementation-specific to simplify the code logic.\r
2826///\r
2827typedef struct {\r
2828 EFI_SUBCLASS_TYPE1_HEADER Header;\r
2829 EFI_MISC_SUBCLASS_RECORDS Record;\r
2830} EFI_MISC_SUBCLASS_DRIVER_DATA;\r
2831#pragma pack()\r
2832\r
2833///\r
2834/// Inconsistent with specification here: \r
2835/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\r
2836/// But value is meaningful, 0 means Reserved.\r
2837///\r
2838#define EFI_SUBCLASS_INSTANCE_RESERVED 0\r
2839///\r
2840/// Inconsistent with specification here: \r
2841/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\r
2842/// But value is meaningful, -1 means Not Applicable.\r
2843///\r
2844#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r
2845\r
79964ac8 2846#endif\r