]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkPkg/Include/Guid/DataHubRecords.h
Move those status code definitions that exactly match the PI 1.2 Specification from...
[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
409669d5 49/// In ProcSubclass spec 0.9, the value is 0x0100.\r
87d63447 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
409669d5 699/// In ProcSubclass spec 0.9, the naming is EFI_PROCESSOR_CACHE_ASSOCIATION_DATA.\r
87d63447 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
409669d5 708/// In ProcSubclass spec 0.9, the naming is EFI_PROCESSOR_HEALTH_STATUS_DATA.\r
87d63447 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
409669d5 822/// In CacheSubclass spec 0.9, the naming is EFI_CACHE_MAXIMUM_SIZE_DATA.\r
87d63447 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
409669d5 912///\r
913/// Inconsistent with specification here:\r
914/// In CacheSubclass spec 0.9, the enumeration type data structure is NOT defined.\r
915/// The equivalent in spec is \r
916/// #define EFI_CACHE_SIZE_RECORD_NUMBER 0x00000001\r
917/// #define EFI_CACHE_MAXIMUM_SIZE_RECORD_NUMBER 0x00000002\r
918/// #define EFI_CACHE_SPEED_RECORD_NUMBER 0x00000003\r
919/// #define EFI_CACHE_SOCKET_RECORD_NUMBER 0x00000004\r
920/// #define EFI_CACHE_SRAM_SUPPORT_RECORD_NUMBER 0x00000005 \r
921/// #define EFI_CACHE_SRAM_INSTALL_RECORD_NUMBER 0x00000006 \r
922/// #define EFI_CACHE_ERROR_SUPPORT_RECORD_NUMBER 0x00000007\r
923/// #define EFI_CACHE_TYPE_RECORD_NUMBER 0x00000008\r
924/// #define EFI_CACHE_ASSOCIATIVITY_RECORD_NUMBER 0x00000009\r
925/// #define EFI_CACHE_CONFIGURATION_RECORD_NUMBER 0x0000000A\r
926/// Keep the definition unchanged for backward compatibility.\r
927///\r
87d63447 928typedef enum {\r
929 CacheSizeRecordType = 1,\r
930 MaximumSizeCacheRecordType = 2,\r
931 CacheSpeedRecordType = 3,\r
932 CacheSocketRecordType = 4,\r
933 CacheSramTypeRecordType = 5,\r
934 CacheInstalledSramTypeRecordType = 6,\r
935 CacheErrorTypeRecordType = 7,\r
936 CacheTypeRecordType = 8,\r
937 CacheAssociativityRecordType = 9,\r
938 CacheConfigRecordType = 10\r
939} EFI_CACHE_VARIABLE_RECORD_TYPE;\r
940\r
941///\r
942/// Inconsistent with specification here: \r
943/// In CacheSubclass spec0.9, the union type data structure is NOT defined.\r
944/// It's implementation-specific to simplify the code logic.\r
945///\r
946typedef union {\r
947 EFI_CACHE_SIZE_DATA CacheSize;\r
948 EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize;\r
949 EFI_CACHE_SPEED_DATA CacheSpeed;\r
950 EFI_CACHE_SOCKET_DATA CacheSocket;\r
951 EFI_CACHE_SRAM_TYPE_DATA CacheSramType;\r
952 EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType;\r
953 EFI_CACHE_ERROR_TYPE_DATA CacheErrorType;\r
954 EFI_CACHE_TYPE_DATA CacheType;\r
955 EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity;\r
956 EFI_CACHE_CONFIGURATION_DATA CacheConfig;\r
957 EFI_CACHE_ASSOCIATION_DATA CacheAssociation;\r
958} EFI_CACHE_VARIABLE_RECORD;\r
959\r
960typedef struct {\r
961 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;\r
962 EFI_CACHE_VARIABLE_RECORD VariableRecord;\r
963} EFI_CACHE_DATA_RECORD;\r
964\r
965#define EFI_MEMORY_SUBCLASS_VERSION 0x0100\r
966#define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001\r
967\r
968typedef enum _EFI_MEMORY_REGION_TYPE {\r
969 EfiMemoryRegionMemory = 0x01,\r
970 EfiMemoryRegionReserved = 0x02,\r
971 EfiMemoryRegionAcpi = 0x03,\r
972 EfiMemoryRegionNvs = 0x04\r
973} EFI_MEMORY_REGION_TYPE;\r
974\r
975///\r
976/// This data record refers to the size of a memory region. The regions that are \r
977/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions. \r
978/// The unit of measurement of this data record is in bytes. \r
979///\r
980typedef struct {\r
981 ///\r
982 /// A zero-based value that indicates which processor(s) can access the memory region. \r
983 /// A value of 0xFFFF indicates the region is accessible by all processors. \r
984 ///\r
985 UINT32 ProcessorNumber;\r
986 ///\r
987 /// A zero-based value that indicates the starting bus that can access the memory region. \r
988 ///\r
989 UINT16 StartBusNumber;\r
990 ///\r
991 /// A zero-based value that indicates the ending bus that can access the memory region. \r
992 /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and \r
993 /// is global in scope. An example of the EndBusNumber not being 0xFF is a system \r
994 /// with two or more peer-to-host PCI bridges. \r
995 ///\r
996 UINT16 EndBusNumber;\r
997 ///\r
998 /// The type of memory region from the operating system's point of view. \r
999 /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS \r
1000 /// command values. \r
1001 ///\r
1002 EFI_MEMORY_REGION_TYPE MemoryRegionType;\r
1003 ///\r
1004 /// The size of the memory region in bytes. \r
1005 ///\r
1006 EFI_EXP_BASE2_DATA MemorySize;\r
1007 ///\r
1008 /// The starting physical address of the memory region. \r
1009 ///\r
1010 EFI_PHYSICAL_ADDRESS MemoryStartAddress;\r
1011} EFI_MEMORY_SIZE_DATA;\r
1012\r
1013\r
1014#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002\r
1015\r
1016typedef enum _EFI_MEMORY_ARRAY_LOCATION {\r
1017 EfiMemoryArrayLocationOther = 0x01,\r
1018 EfiMemoryArrayLocationUnknown = 0x02,\r
1019 EfiMemoryArrayLocationSystemBoard = 0x03,\r
1020 EfiMemoryArrayLocationIsaAddonCard = 0x04,\r
1021 EfiMemoryArrayLocationEisaAddonCard = 0x05,\r
1022 EfiMemoryArrayLocationPciAddonCard = 0x06,\r
1023 EfiMemoryArrayLocationMcaAddonCard = 0x07,\r
1024 EfiMemoryArrayLocationPcmciaAddonCard = 0x08,\r
1025 EfiMemoryArrayLocationProprietaryAddonCard = 0x09,\r
1026 EfiMemoryArrayLocationNuBus = 0x0A,\r
1027 EfiMemoryArrayLocationPc98C20AddonCard = 0xA0,\r
1028 EfiMemoryArrayLocationPc98C24AddonCard = 0xA1,\r
1029 EfiMemoryArrayLocationPc98EAddonCard = 0xA2,\r
1030 EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3\r
1031} EFI_MEMORY_ARRAY_LOCATION;\r
1032\r
1033typedef enum _EFI_MEMORY_ARRAY_USE {\r
1034 EfiMemoryArrayUseOther = 0x01,\r
1035 EfiMemoryArrayUseUnknown = 0x02,\r
1036 EfiMemoryArrayUseSystemMemory = 0x03,\r
1037 EfiMemoryArrayUseVideoMemory = 0x04,\r
1038 EfiMemoryArrayUseFlashMemory = 0x05,\r
1039 EfiMemoryArrayUseNonVolatileRam = 0x06,\r
1040 EfiMemoryArrayUseCacheMemory = 0x07\r
1041} EFI_MEMORY_ARRAY_USE;\r
1042\r
1043typedef enum _EFI_MEMORY_ERROR_CORRECTION {\r
1044 EfiMemoryErrorCorrectionOther = 0x01,\r
1045 EfiMemoryErrorCorrectionUnknown = 0x02,\r
1046 EfiMemoryErrorCorrectionNone = 0x03,\r
1047 EfiMemoryErrorCorrectionParity = 0x04,\r
1048 EfiMemoryErrorCorrectionSingleBitEcc = 0x05,\r
1049 EfiMemoryErrorCorrectionMultiBitEcc = 0x06,\r
1050 EfiMemoryErrorCorrectionCrc = 0x07\r
1051} EFI_MEMORY_ERROR_CORRECTION;\r
1052\r
1053///\r
1054/// This data record refers to the physical memory array. This data record is a structure. \r
1055/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4: \r
1056/// - Table 3.3.17.1, Type 16, Offset 0x4 \r
1057/// - Table 3.3.17.2, Type 16, Offset 0x5 \r
1058/// - Table 3.3.17.3, Type 16, with the following offsets: \r
1059/// -- Offset 0x6 \r
1060/// -- Offset 0x7 \r
1061/// -- Offset 0xB \r
1062/// -- Offset 0xD \r
1063/// \r
1064typedef struct {\r
1065 ///\r
1066 /// The physical location of the memory array. \r
1067 ///\r
1068 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;\r
1069 ///\r
1070 /// The memory array usage.\r
1071 ///\r
1072 EFI_MEMORY_ARRAY_USE MemoryArrayUse;\r
1073 ///\r
1074 /// The primary error correction or detection supported by this memory array.\r
1075 ///\r
1076 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;\r
1077 ///\r
1078 /// The maximum memory capacity size in kilobytes. If capacity is unknown, then \r
1079 /// values of MaximumMemoryCapacity.Value = 0x00 and \r
1080 /// MaximumMemoryCapacity.Exponent = 0x8000 are used.\r
1081 ///\r
1082 EFI_EXP_BASE2_DATA MaximumMemoryCapacity;\r
1083 ///\r
1084 /// The number of memory slots or sockets that are available for memory devices \r
1085 /// in this array. \r
1086 ///\r
1087 UINT16 NumberMemoryDevices;\r
1088} EFI_MEMORY_ARRAY_LOCATION_DATA;\r
1089\r
1090\r
1091#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003\r
1092\r
1093typedef enum _EFI_MEMORY_FORM_FACTOR {\r
1094 EfiMemoryFormFactorOther = 0x01,\r
1095 EfiMemoryFormFactorUnknown = 0x02,\r
1096 EfiMemoryFormFactorSimm = 0x03,\r
1097 EfiMemoryFormFactorSip = 0x04,\r
1098 EfiMemoryFormFactorChip = 0x05,\r
1099 EfiMemoryFormFactorDip = 0x06,\r
1100 EfiMemoryFormFactorZip = 0x07,\r
1101 EfiMemoryFormFactorProprietaryCard = 0x08,\r
1102 EfiMemoryFormFactorDimm = 0x09,\r
1103 EfiMemoryFormFactorTsop = 0x0A,\r
1104 EfiMemoryFormFactorRowOfChips = 0x0B,\r
1105 EfiMemoryFormFactorRimm = 0x0C,\r
1106 EfiMemoryFormFactorSodimm = 0x0D,\r
1107 EfiMemoryFormFactorSrimm = 0x0E,\r
1108 ///\r
1109 /// Inconsistent with specification here: \r
1110 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1111 ///\r
1112 EfiMemoryFormFactorFbDimm = 0x0F\r
1113} EFI_MEMORY_FORM_FACTOR;\r
1114\r
1115typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
1116 EfiMemoryTypeOther = 0x01,\r
1117 EfiMemoryTypeUnknown = 0x02,\r
1118 EfiMemoryTypeDram = 0x03,\r
1119 EfiMemoryTypeEdram = 0x04,\r
1120 EfiMemoryTypeVram = 0x05,\r
1121 EfiMemoryTypeSram = 0x06,\r
1122 EfiMemoryTypeRam = 0x07,\r
1123 EfiMemoryTypeRom = 0x08,\r
1124 EfiMemoryTypeFlash = 0x09,\r
1125 EfiMemoryTypeEeprom = 0x0A,\r
1126 EfiMemoryTypeFeprom = 0x0B,\r
1127 EfiMemoryTypeEprom = 0x0C,\r
1128 EfiMemoryTypeCdram = 0x0D,\r
1129 EfiMemoryType3Dram = 0x0E,\r
1130 EfiMemoryTypeSdram = 0x0F,\r
1131 EfiMemoryTypeSgram = 0x10,\r
1132 EfiMemoryTypeRdram = 0x11,\r
1133 EfiMemoryTypeDdr = 0x12,\r
1134 ///\r
1135 /// Inconsistent with specification here: \r
1136 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1137 ///\r
1138 EfiMemoryTypeDdr2 = 0x13,\r
1139 ///\r
1140 /// Inconsistent with specification here: \r
1141 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1142 ///\r
1143 EfiMemoryTypeDdr2FbDimm = 0x14\r
1144} EFI_MEMORY_ARRAY_TYPE;\r
1145\r
1146typedef struct {\r
1147 UINT32 Reserved :1;\r
1148 UINT32 Other :1;\r
1149 UINT32 Unknown :1;\r
1150 UINT32 FastPaged :1;\r
1151 UINT32 StaticColumn :1;\r
1152 UINT32 PseudoStatic :1;\r
1153 UINT32 Rambus :1;\r
1154 UINT32 Synchronous :1;\r
1155 UINT32 Cmos :1;\r
1156 UINT32 Edo :1;\r
1157 UINT32 WindowDram :1;\r
1158 UINT32 CacheDram :1;\r
1159 UINT32 Nonvolatile :1;\r
1160 UINT32 Reserved1 :19;\r
1161} EFI_MEMORY_TYPE_DETAIL;\r
1162\r
1163typedef enum {\r
1164 EfiMemoryStateEnabled = 0,\r
1165 EfiMemoryStateUnknown = 1,\r
1166 EfiMemoryStateUnsupported = 2,\r
1167 EfiMemoryStateError = 3,\r
1168 EfiMemoryStateAbsent = 4,\r
1169 EfiMemoryStateDisabled = 5,\r
1170 ///\r
1171 /// Inconsistent with specification here: \r
1172 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1173 ///\r
1174 EfiMemoryStatePartial = 6\r
1175} EFI_MEMORY_STATE;\r
1176\r
1177///\r
1178/// This data record describes a memory device. This data record is a structure. \r
1179/// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.\r
1180///\r
1181typedef struct {\r
1182 ///\r
1183 /// A string that identifies the physically labeled socket or board position where the \r
1184 /// memory device is located.\r
1185 ///\r
1186 STRING_REF MemoryDeviceLocator;\r
1187 ///\r
1188 /// A string denoting the physically labeled bank where the memory device is located. \r
1189 ///\r
1190 STRING_REF MemoryBankLocator;\r
1191 ///\r
1192 /// A string denoting the memory manufacturer. \r
1193 /// \r
1194 STRING_REF MemoryManufacturer;\r
1195 ///\r
1196 /// A string denoting the serial number of the memory device. \r
1197 ///\r
1198 STRING_REF MemorySerialNumber;\r
1199 ///\r
1200 /// The asset tag of the memory device. \r
1201 ///\r
1202 STRING_REF MemoryAssetTag;\r
1203 ///\r
1204 /// A string denoting the part number of the memory device. \r
1205 ///\r
1206 STRING_REF MemoryPartNumber;\r
1207 ///\r
1208 /// A link to a memory array structure set. \r
1209 ///\r
1210 EFI_INTER_LINK_DATA MemoryArrayLink;\r
1211 ///\r
1212 /// A link to a memory array structure set.\r
1213 ///\r
1214 EFI_INTER_LINK_DATA MemorySubArrayLink;\r
1215 ///\r
1216 /// The total width in bits of this memory device. If there are no error correcting bits, \r
1217 /// then the total width equals the data width. If the width is unknown, then set the field \r
1218 /// to 0xFFFF. \r
1219 ///\r
1220 UINT16 MemoryTotalWidth;\r
1221 ///\r
1222 /// The data width in bits of the memory device. A data width of 0x00 and a total width \r
1223 /// of 0x08 indicate that the device is used solely for error correction. \r
1224 ///\r
1225 UINT16 MemoryDataWidth;\r
1226 ///\r
1227 /// The size in bytes of the memory device. A value of 0x00 denotes that no device is \r
1228 /// installed, while a value of all Fs denotes that the size is not known.\r
1229 ///\r
1230 EFI_EXP_BASE2_DATA MemoryDeviceSize;\r
1231 ///\r
1232 /// The form factor of the memory device. \r
1233 ///\r
1234 EFI_MEMORY_FORM_FACTOR MemoryFormFactor;\r
1235 ///\r
1236 /// A memory device set that must be populated with all devices of the same type and \r
1237 /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF \r
1238 /// indicates that the attribute is unknown. Any other value denotes the set number. \r
1239 ///\r
1240 UINT8 MemoryDeviceSet;\r
1241 ///\r
1242 /// The memory type in the socket. \r
1243 ///\r
1244 EFI_MEMORY_ARRAY_TYPE MemoryType;\r
1245 ///\r
1246 /// The memory type details. \r
1247 ///\r
1248 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;\r
1249 ///\r
1250 /// The memory speed in megahertz (MHz). A value of 0x00 denotes that \r
1251 /// the speed is unknown.\r
1252 /// Inconsistent with specification here: \r
1253 /// In MemSubclass spec 0.9, the naming is MemoryTypeSpeed.\r
1254 /// Keep it unchanged for backward compatibilty.\r
1255 ///\r
1256 EFI_EXP_BASE10_DATA MemorySpeed;\r
1257 ///\r
1258 /// The memory state. \r
1259 ///\r
1260 EFI_MEMORY_STATE MemoryState;\r
1261} EFI_MEMORY_ARRAY_LINK_DATA;\r
1262\r
1263\r
1264#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004\r
1265\r
1266///\r
1267/// This data record refers to a specified physical memory array associated with \r
1268/// a given memory range. \r
1269/// \r
1270typedef struct {\r
1271 ///\r
1272 /// The starting physical address in bytes of memory mapped to a specified physical \r
1273 /// memory array. \r
1274 ///\r
1275 EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress;\r
1276 ///\r
1277 /// The last physical address in bytes of memory mapped to a specified physical memory \r
1278 /// array. \r
1279 ///\r
1280 EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress;\r
1281 ///\r
1282 /// See Physical Memory Array (Type 16) for physical memory array structures.\r
1283 ///\r
1284 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;\r
1285 ///\r
1286 /// The number of memory devices that form a single row of memory for the address \r
1287 /// partition. \r
1288 ///\r
1289 UINT16 MemoryArrayPartitionWidth;\r
1290} EFI_MEMORY_ARRAY_START_ADDRESS_DATA;\r
1291\r
1292\r
1293#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005\r
1294\r
1295///\r
1296/// This data record refers to a physical memory device that is associated with \r
1297/// a given memory range.\r
1298/// \r
1299typedef struct {\r
1300 ///\r
1301 /// The starting physical address that is associated with the device. \r
1302 ///\r
1303 EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress;\r
1304 ///\r
1305 /// The ending physical address that is associated with the device. \r
1306 ///\r
1307 EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress;\r
1308 ///\r
1309 /// A link to the memory device data structure. \r
1310 ///\r
1311 EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink;\r
1312 /// \r
1313 /// A link to the memory array data structure. \r
1314 ///\r
1315 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;\r
1316 ///\r
1317 /// The position of the memory device in a row. A value of 0x00 is reserved and a value \r
1318 /// of 0xFF indicates that the position is unknown. \r
1319 ///\r
1320 UINT8 MemoryDevicePartitionRowPosition;\r
1321 ///\r
1322 /// The position of the device in an interleave. \r
1323 ///\r
1324 UINT8 MemoryDeviceInterleavePosition;\r
1325 ///\r
1326 /// The maximum number of consecutive rows from the device that are accessed in a \r
1327 /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved \r
1328 /// and a value of 0xFF indicates that the interleave configuration is unknown. \r
1329 ///\r
1330 UINT8 MemoryDeviceInterleaveDataDepth;\r
1331} EFI_MEMORY_DEVICE_START_ADDRESS_DATA;\r
1332\r
1333\r
1334//\r
1335// Memory. Channel Device Type - SMBIOS Type 37\r
1336//\r
1337\r
1338#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006\r
1339\r
1340typedef enum _EFI_MEMORY_CHANNEL_TYPE {\r
1341 EfiMemoryChannelTypeOther = 1,\r
1342 EfiMemoryChannelTypeUnknown = 2,\r
1343 EfiMemoryChannelTypeRambus = 3,\r
1344 EfiMemoryChannelTypeSyncLink = 4\r
1345} EFI_MEMORY_CHANNEL_TYPE;\r
1346\r
1347///\r
1348/// This data record refers the type of memory that is associated with the channel. This data record is a \r
1349/// structure. \r
1350/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4, \r
1351/// Table 3.3.38, Type 37, with the following offsets: \r
1352/// - Offset 0x4 \r
1353/// - Offset 0x5 \r
1354/// - Offset 0x6\r
1355/// \r
1356typedef struct {\r
1357 ///\r
1358 /// The type of memory that is associated with the channel. \r
1359 /// \r
1360 EFI_MEMORY_CHANNEL_TYPE MemoryChannelType;\r
1361 ///\r
1362 /// The maximum load that is supported by the channel.\r
1363 ///\r
1364 UINT8 MemoryChannelMaximumLoad;\r
1365 ///\r
1366 /// The number of memory devices on this channel. \r
1367 ///\r
1368 UINT8 MemoryChannelDeviceCount;\r
1369} EFI_MEMORY_CHANNEL_TYPE_DATA;\r
1370\r
1371#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007\r
1372\r
1373///\r
1374/// This data record refers to the memory device that is associated with the memory channel. This data \r
1375/// record is a structure. \r
1376/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4, \r
1377/// Table 3.3.38, Type 37, with the following offsets: \r
1378/// - Offset 0x7 \r
1379/// - Offset 0x8\r
1380///\r
1381typedef struct {\r
1382 ///\r
1383 /// A number between one and MemoryChannelDeviceCount plus an arbitrary base. \r
1384 /// \r
1385 UINT8 DeviceId;\r
1386 ///\r
1387 /// The Link of the associated memory device. See Memory Device (Type 17) for \r
1388 /// memory devices. \r
1389 ///\r
1390 EFI_INTER_LINK_DATA DeviceLink;\r
1391 ///\r
1392 /// The number of load units that this device consumes. \r
1393 ///\r
1394 UINT8 MemoryChannelDeviceLoad;\r
1395} EFI_MEMORY_CHANNEL_DEVICE_DATA;\r
1396\r
1397//\r
1398// Memory. Controller Information - SMBIOS Type 5\r
1399//\r
1400///\r
1401/// Inconsistent with specification here: \r
1402/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1403/// It's introduced for SmBios 2.6 type 5.\r
1404///\r
1405#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008\r
1406\r
1407///\r
1408/// Inconsistent with specification here: \r
1409/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1410/// It's introduced for SmBios 2.6 type 5.\r
1411///\r
1412typedef enum { \r
1413 EfiErrorDetectingMethodOther = 1,\r
1414 EfiErrorDetectingMethodUnknown = 2,\r
1415 EfiErrorDetectingMethodNone = 3,\r
1416 EfiErrorDetectingMethodParity = 4,\r
1417 EfiErrorDetectingMethod32Ecc = 5,\r
1418 EfiErrorDetectingMethod64Ecc = 6,\r
1419 EfiErrorDetectingMethod128Ecc = 7,\r
1420 EfiErrorDetectingMethodCrc = 8\r
1421} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\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 struct {\r
1429 UINT8 Other :1;\r
1430 UINT8 Unknown :1;\r
1431 UINT8 None :1;\r
1432 UINT8 SingleBitErrorCorrect :1;\r
1433 UINT8 DoubleBitErrorCorrect :1;\r
1434 UINT8 ErrorScrubbing :1;\r
1435 UINT8 Reserved :2;\r
1436} EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\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 enum { \r
1444 EfiMemoryInterleaveOther = 1,\r
1445 EfiMemoryInterleaveUnknown = 2,\r
1446 EfiMemoryInterleaveOneWay = 3,\r
1447 EfiMemoryInterleaveTwoWay = 4,\r
1448 EfiMemoryInterleaveFourWay = 5,\r
1449 EfiMemoryInterleaveEightWay = 6,\r
1450 EfiMemoryInterleaveSixteenWay = 7\r
1451} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
1452\r
1453///\r
1454/// Inconsistent with specification here: \r
1455/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1456/// It's introduced for SmBios 2.6 type 5.\r
1457///\r
1458typedef struct {\r
1459 UINT16 Other :1;\r
1460 UINT16 Unknown :1;\r
1461 UINT16 SeventyNs:1;\r
1462 UINT16 SixtyNs :1;\r
1463 UINT16 FiftyNs :1;\r
1464 UINT16 Reserved :11;\r
1465} EFI_MEMORY_SPEED_TYPE;\r
1466\r
1467///\r
1468/// Inconsistent with specification here: \r
1469/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1470/// It's introduced for SmBios 2.6 type 5.\r
1471///\r
1472typedef struct {\r
1473 UINT16 Other :1;\r
1474 UINT16 Unknown :1;\r
1475 UINT16 Standard :1;\r
1476 UINT16 FastPageMode:1;\r
1477 UINT16 EDO :1;\r
1478 UINT16 Parity :1;\r
1479 UINT16 ECC :1;\r
1480 UINT16 SIMM :1;\r
1481 UINT16 DIMM :1;\r
1482 UINT16 BurstEdo :1;\r
1483 UINT16 SDRAM :1;\r
1484 UINT16 Reserved :5;\r
1485} EFI_MEMORY_SUPPORTED_TYPE;\r
1486\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 UINT8 Five :1;\r
1494 UINT8 Three :1;\r
1495 UINT8 Two :1;\r
1496 UINT8 Reserved:5;\r
1497} EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
1498\r
1499///\r
1500/// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete\r
1501/// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead\r
1502///\r
1503/// Inconsistent with specification here: \r
1504/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1505/// It's introduced for SmBios 2.6 type 5.\r
1506///\r
1507typedef struct {\r
1508 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
1509 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
1510 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
1511 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
1512 UINT8 MaxMemoryModuleSize;\r
1513 EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
1514 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
1515 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
1516 UINT8 NumberofMemorySlot;\r
1517 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
1518 UINT16 *MemoryModuleConfigHandles;\r
1519} EFI_MEMORY_CONTROLLER_INFORMATION;\r
1520\r
1521///\r
1522/// Inconsistent with specification here: \r
1523/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1524/// It's introduced for SmBios 2.6 type 5.\r
1525///\r
1526typedef struct {\r
1527 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
1528 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
1529 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
1530 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
1531 UINT8 MaxMemoryModuleSize;\r
1532 EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
1533 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
1534 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
1535 UINT8 NumberofMemorySlot;\r
1536 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
1537 EFI_INTER_LINK_DATA MemoryModuleConfig[1];\r
1538} EFI_MEMORY_CONTROLLER_INFORMATION_DATA;\r
1539\r
1540///\r
1541/// Memory. Error Information - SMBIOS Type 18\r
1542///\r
1543/// Inconsistent with specification here: \r
1544/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1545/// It's introduced for SmBios 2.6 type 18.\r
1546///\r
1547#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009\r
1548///\r
1549/// Inconsistent with specification here: \r
1550/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1551/// It's introduced for SmBios 2.6 type 18.\r
1552///\r
1553typedef enum { \r
1554 EfiMemoryErrorOther = 1,\r
1555 EfiMemoryErrorUnknown = 2,\r
1556 EfiMemoryErrorOk = 3,\r
1557 EfiMemoryErrorBadRead = 4,\r
1558 EfiMemoryErrorParity = 5,\r
1559 EfiMemoryErrorSigleBit = 6,\r
1560 EfiMemoryErrorDoubleBit = 7,\r
1561 EfiMemoryErrorMultiBit = 8,\r
1562 EfiMemoryErrorNibble = 9,\r
1563 EfiMemoryErrorChecksum = 10,\r
1564 EfiMemoryErrorCrc = 11,\r
1565 EfiMemoryErrorCorrectSingleBit = 12,\r
1566 EfiMemoryErrorCorrected = 13,\r
1567 EfiMemoryErrorUnCorrectable = 14\r
1568} EFI_MEMORY_ERROR_TYPE;\r
1569///\r
1570/// Inconsistent with specification here: \r
1571/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1572/// It's introduced for SmBios 2.6 type 18.\r
1573///\r
1574typedef enum { \r
1575 EfiMemoryGranularityOther = 1,\r
1576 EfiMemoryGranularityOtherUnknown = 2,\r
1577 EfiMemoryGranularityDeviceLevel = 3,\r
1578 EfiMemoryGranularityMemPartitionLevel = 4\r
1579} EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
1580///\r
1581/// Inconsistent with specification here: \r
1582/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1583/// It's introduced for SmBios 2.6 type 18.\r
1584///\r
1585typedef enum { \r
1586 EfiMemoryErrorOperationOther = 1,\r
1587 EfiMemoryErrorOperationUnknown = 2,\r
1588 EfiMemoryErrorOperationRead = 3,\r
1589 EfiMemoryErrorOperationWrite = 4,\r
1590 EfiMemoryErrorOperationPartialWrite = 5\r
1591} EFI_MEMORY_ERROR_OPERATION_TYPE;\r
1592///\r
1593/// Inconsistent with specification here: \r
1594/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1595/// It's introduced for SmBios 2.6 type 18.\r
1596///\r
1597typedef struct {\r
1598 EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
1599 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
1600 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
1601 UINT32 VendorSyndrome;\r
1602 UINT32 MemoryArrayErrorAddress;\r
1603 UINT32 DeviceErrorAddress;\r
1604 UINT32 DeviceErrorResolution;\r
1605} EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
1606\r
1607///\r
1608/// Memory. Error Information - SMBIOS Type 33\r
1609///\r
1610/// Inconsistent with specification here: \r
1611/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1612/// It's introduced for SmBios 2.6 type 33.\r
1613///\r
1614#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A\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's introduced for SmBios 2.6 type 33.\r
1620///\r
1621typedef struct {\r
1622 EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
1623 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
1624 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
1625 UINT32 VendorSyndrome;\r
1626 UINT64 MemoryArrayErrorAddress;\r
1627 UINT64 DeviceErrorAddress;\r
1628 UINT32 DeviceErrorResolution;\r
1629} EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
1630\r
1631///\r
1632/// Inconsistent with specification here: \r
1633/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
1634/// It is implementation-specific to simplify the code logic.\r
1635///\r
1636typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
1637 EFI_MEMORY_SIZE_DATA SizeData;\r
1638 EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData;\r
1639 EFI_MEMORY_ARRAY_LINK_DATA ArrayLink;\r
1640 EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress;\r
1641 EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress;\r
1642 EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData;\r
1643 EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData;\r
1644 EFI_MEMORY_CONTROLLER_INFORMATION MemoryControllerInfo;\r
1645 EFI_MEMORY_32BIT_ERROR_INFORMATION Memory32bitErrorInfo;\r
1646 EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo;\r
1647} EFI_MEMORY_SUBCLASS_RECORDS;\r
1648\r
1649typedef struct {\r
1650 EFI_SUBCLASS_TYPE1_HEADER Header;\r
1651 EFI_MEMORY_SUBCLASS_RECORDS Record;\r
1652} EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
1653\r
1654#define EFI_MISC_SUBCLASS_VERSION 0x0100\r
1655\r
1656#pragma pack(1)\r
1657\r
1658//\r
1659// Last PCI Bus Number\r
1660//\r
1661#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001\r
1662\r
1663typedef struct {\r
1664 UINT8 LastPciBus;\r
1665} EFI_MISC_LAST_PCI_BUS_DATA;\r
1666\r
1667//\r
1668// Misc. BIOS Vendor - SMBIOS Type 0\r
1669//\r
1670#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002\r
1671\r
1672typedef struct {\r
1673 UINT64 Reserved1 :2;\r
1674 UINT64 Unknown :1;\r
1675 UINT64 BiosCharacteristicsNotSupported :1;\r
1676 UINT64 IsaIsSupported :1;\r
1677 UINT64 McaIsSupported :1;\r
1678 UINT64 EisaIsSupported :1;\r
1679 UINT64 PciIsSupported :1;\r
1680 UINT64 PcmciaIsSupported :1;\r
1681 UINT64 PlugAndPlayIsSupported :1;\r
1682 UINT64 ApmIsSupported :1;\r
1683 UINT64 BiosIsUpgradable :1;\r
1684 UINT64 BiosShadowingAllowed :1;\r
1685 UINT64 VlVesaIsSupported :1;\r
1686 UINT64 EscdSupportIsAvailable :1;\r
1687 UINT64 BootFromCdIsSupported :1;\r
1688 UINT64 SelectableBootIsSupported :1;\r
1689 UINT64 RomBiosIsSocketed :1;\r
1690 UINT64 BootFromPcmciaIsSupported :1;\r
1691 UINT64 EDDSpecificationIsSupported :1;\r
1692 UINT64 JapaneseNecFloppyIsSupported :1;\r
1693 UINT64 JapaneseToshibaFloppyIsSupported :1;\r
1694 UINT64 Floppy525_360IsSupported :1;\r
1695 UINT64 Floppy525_12IsSupported :1;\r
1696 UINT64 Floppy35_720IsSupported :1;\r
1697 UINT64 Floppy35_288IsSupported :1;\r
1698 UINT64 PrintScreenIsSupported :1;\r
1699 UINT64 Keyboard8042IsSupported :1;\r
1700 UINT64 SerialIsSupported :1;\r
1701 UINT64 PrinterIsSupported :1;\r
1702 UINT64 CgaMonoIsSupported :1;\r
1703 UINT64 NecPc98 :1;\r
1704 UINT64 AcpiIsSupported :1;\r
1705 UINT64 UsbLegacyIsSupported :1;\r
1706 UINT64 AgpIsSupported :1;\r
1707 UINT64 I20BootIsSupported :1;\r
1708 UINT64 Ls120BootIsSupported :1;\r
1709 UINT64 AtapiZipDriveBootIsSupported :1;\r
1710 UINT64 Boot1394IsSupported :1;\r
1711 UINT64 SmartBatteryIsSupported :1;\r
1712 UINT64 BiosBootSpecIsSupported :1;\r
1713 UINT64 FunctionKeyNetworkBootIsSupported :1;\r
1714 UINT64 Reserved :22;\r
1715} EFI_MISC_BIOS_CHARACTERISTICS;\r
1716\r
1717typedef struct {\r
1718 UINT64 BiosReserved :16;\r
1719 UINT64 SystemReserved:16;\r
1720 UINT64 Reserved :32;\r
1721} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;\r
1722\r
1723typedef struct {\r
1724 STRING_REF BiosVendor;\r
1725 STRING_REF BiosVersion;\r
1726 STRING_REF BiosReleaseDate;\r
1727 EFI_PHYSICAL_ADDRESS BiosStartingAddress;\r
1728 EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize;\r
1729 EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1;\r
1730 EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION \r
1731 BiosCharacteristics2;\r
1732 ///\r
1733 /// Inconsistent with specification here: \r
1734 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1735 /// It's introduced for SmBios 2.6 spec type 0.\r
1736 ///\r
1737 UINT8 BiosMajorRelease;\r
1738 ///\r
1739 /// Inconsistent with specification here: \r
1740 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1741 /// It's introduced for SmBios 2.6 spec type 0.\r
1742 ///\r
1743 UINT8 BiosMinorRelease;\r
1744 ///\r
1745 /// Inconsistent with specification here: \r
1746 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1747 /// It's introduced for SmBios 2.6 spec type 0.\r
1748 ///\r
1749 UINT8 BiosEmbeddedFirmwareMajorRelease;\r
1750 ///\r
1751 /// Inconsistent with specification here: \r
1752 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1753 /// It's introduced for SmBios 2.6 spec type 0.\r
1754 ///\r
1755 UINT8 BiosEmbeddedFirmwareMinorRelease;\r
1756} EFI_MISC_BIOS_VENDOR_DATA;\r
1757\r
1758//\r
1759// Misc. System Manufacturer - SMBIOS Type 1\r
1760//\r
1761#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003\r
1762\r
1763typedef enum {\r
1764 EfiSystemWakeupTypeReserved = 0,\r
1765 EfiSystemWakeupTypeOther = 1,\r
1766 EfiSystemWakeupTypeUnknown = 2,\r
1767 EfiSystemWakeupTypeApmTimer = 3,\r
1768 EfiSystemWakeupTypeModemRing = 4,\r
1769 EfiSystemWakeupTypeLanRemote = 5,\r
1770 EfiSystemWakeupTypePowerSwitch = 6,\r
1771 EfiSystemWakeupTypePciPme = 7,\r
1772 EfiSystemWakeupTypeAcPowerRestored = 8\r
1773} EFI_MISC_SYSTEM_WAKEUP_TYPE;\r
1774\r
1775typedef struct {\r
1776 STRING_REF SystemManufacturer;\r
1777 STRING_REF SystemProductName;\r
1778 STRING_REF SystemVersion;\r
1779 STRING_REF SystemSerialNumber;\r
1780 EFI_GUID SystemUuid;\r
1781 EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType;\r
1782 ///\r
1783 /// Inconsistent with specification here: \r
1784 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1785 /// It's introduced for SmBios 2.6 spec type 1.\r
1786 ///\r
1787 STRING_REF SystemSKUNumber;\r
1788 ///\r
1789 /// Inconsistent with specification here: \r
1790 /// In MiscSubclass spec 0.9, this data structure and corrsponding fields are NOT defined.\r
1791 /// It's introduced for SmBios 2.6 spec type 1.\r
1792 ///\r
1793 STRING_REF SystemFamily;\r
1794} EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
1795\r
1796//\r
1797// Misc. Base Board Manufacturer - SMBIOS Type 2\r
1798//\r
1799#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004\r
1800\r
1801typedef struct {\r
1802 UINT32 Motherboard :1;\r
1803 UINT32 RequiresDaughterCard :1;\r
1804 UINT32 Removable :1;\r
1805 UINT32 Replaceable :1;\r
1806 UINT32 HotSwappable :1;\r
1807 UINT32 Reserved :27;\r
1808} EFI_BASE_BOARD_FEATURE_FLAGS;\r
1809\r
1810typedef enum {\r
1811 EfiBaseBoardTypeUnknown = 1,\r
1812 EfiBaseBoardTypeOther = 2,\r
1813 EfiBaseBoardTypeServerBlade = 3,\r
1814 EfiBaseBoardTypeConnectivitySwitch = 4,\r
1815 EfiBaseBoardTypeSystemManagementModule = 5,\r
1816 EfiBaseBoardTypeProcessorModule = 6,\r
1817 EfiBaseBoardTypeIOModule = 7,\r
1818 EfiBaseBoardTypeMemoryModule = 8,\r
1819 EfiBaseBoardTypeDaughterBoard = 9,\r
1820 EfiBaseBoardTypeMotherBoard = 0xA,\r
1821 EfiBaseBoardTypeProcessorMemoryModule = 0xB,\r
1822 EfiBaseBoardTypeProcessorIOModule = 0xC,\r
1823 EfiBaseBoardTypeInterconnectBoard = 0xD\r
1824} EFI_BASE_BOARD_TYPE;\r
1825\r
1826typedef struct {\r
1827 STRING_REF BaseBoardManufacturer;\r
1828 STRING_REF BaseBoardProductName;\r
1829 STRING_REF BaseBoardVersion;\r
1830 STRING_REF BaseBoardSerialNumber;\r
1831 STRING_REF BaseBoardAssetTag;\r
1832 STRING_REF BaseBoardChassisLocation;\r
1833 EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags;\r
1834 EFI_BASE_BOARD_TYPE BaseBoardType;\r
1835 EFI_INTER_LINK_DATA BaseBoardChassisLink;\r
1836 UINT32 BaseBoardNumberLinks;\r
1837 EFI_INTER_LINK_DATA LinkN;\r
1838} EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;\r
1839\r
1840//\r
1841// Misc. System/Chassis Enclosure - SMBIOS Type 3\r
1842//\r
1843#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005\r
1844\r
1845typedef enum {\r
1846 EfiMiscChassisTypeOther = 0x1,\r
1847 EfiMiscChassisTypeUnknown = 0x2,\r
1848 EfiMiscChassisTypeDeskTop = 0x3,\r
1849 EfiMiscChassisTypeLowProfileDesktop = 0x4,\r
1850 EfiMiscChassisTypePizzaBox = 0x5,\r
1851 EfiMiscChassisTypeMiniTower = 0x6,\r
1852 EfiMiscChassisTypeTower = 0x7,\r
1853 EfiMiscChassisTypePortable = 0x8,\r
1854 EfiMiscChassisTypeLapTop = 0x9,\r
1855 EfiMiscChassisTypeNotebook = 0xA,\r
1856 EfiMiscChassisTypeHandHeld = 0xB,\r
1857 EfiMiscChassisTypeDockingStation = 0xC,\r
1858 EfiMiscChassisTypeAllInOne = 0xD,\r
1859 EfiMiscChassisTypeSubNotebook = 0xE,\r
1860 EfiMiscChassisTypeSpaceSaving = 0xF,\r
1861 EfiMiscChassisTypeLunchBox = 0x10,\r
1862 EfiMiscChassisTypeMainServerChassis = 0x11,\r
1863 EfiMiscChassisTypeExpansionChassis = 0x12,\r
1864 EfiMiscChassisTypeSubChassis = 0x13,\r
1865 EfiMiscChassisTypeBusExpansionChassis = 0x14,\r
1866 EfiMiscChassisTypePeripheralChassis = 0x15,\r
1867 EfiMiscChassisTypeRaidChassis = 0x16,\r
1868 EfiMiscChassisTypeRackMountChassis = 0x17,\r
1869 EfiMiscChassisTypeSealedCasePc = 0x18,\r
1870 EfiMiscChassisMultiSystemChassis = 0x19\r
1871} EFI_MISC_CHASSIS_TYPE;\r
1872\r
1873typedef struct {\r
1874 ///\r
1875 /// Inconsistent with specification here: \r
409669d5 1876 /// In MiscSubclass 0.9 spec, it has a wrong field name "EFI_MISC_CHASSIS_TYPE".\r
87d63447 1877 /// Change it to "ChassisType" to pass build.\r
1878 ///\r
1879 UINT32 ChassisType :16;\r
1880 UINT32 ChassisLockPresent:1;\r
1881 UINT32 Reserved :15;\r
1882} EFI_MISC_CHASSIS_STATUS;\r
1883\r
1884typedef enum {\r
1885 EfiChassisStateOther = 0x01,\r
1886 EfiChassisStateUnknown = 0x02,\r
1887 EfiChassisStateSafe = 0x03,\r
1888 EfiChassisStateWarning = 0x04,\r
1889 EfiChassisStateCritical = 0x05,\r
1890 EfiChassisStateNonRecoverable = 0x06\r
1891} EFI_MISC_CHASSIS_STATE;\r
1892\r
1893typedef enum {\r
1894 EfiChassisSecurityStatusOther = 0x01,\r
1895 EfiChassisSecurityStatusUnknown = 0x02,\r
1896 EfiChassisSecurityStatusNone = 0x03,\r
1897 EfiChassisSecurityStatusExternalInterfaceLockedOut = 0x04,\r
1898 EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05\r
1899} EFI_MISC_CHASSIS_SECURITY_STATE;\r
1900\r
1901typedef struct {\r
1902 UINT32 RecordType :1;\r
1903 UINT32 Type :7;\r
1904 UINT32 Reserved :24;\r
1905} EFI_MISC_ELEMENT_TYPE;\r
1906\r
1907typedef struct {\r
1908 EFI_MISC_ELEMENT_TYPE ChassisElementType;\r
1909 EFI_INTER_LINK_DATA ChassisElementStructure;\r
1910 EFI_BASE_BOARD_TYPE ChassisBaseBoard;\r
1911 UINT32 ChassisElementMinimum;\r
1912 UINT32 ChassisElementMaximum;\r
1913} EFI_MISC_ELEMENTS;\r
1914\r
1915typedef struct {\r
1916 STRING_REF ChassisManufacturer;\r
1917 STRING_REF ChassisVersion;\r
1918 STRING_REF ChassisSerialNumber;\r
1919 STRING_REF ChassisAssetTag;\r
1920 EFI_MISC_CHASSIS_STATUS ChassisType;\r
1921 EFI_MISC_CHASSIS_STATE ChassisBootupState;\r
1922 EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState;\r
1923 EFI_MISC_CHASSIS_STATE ChassisThermalState;\r
1924 EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;\r
1925 UINT32 ChassisOemDefined;\r
1926 UINT32 ChassisHeight;\r
1927 UINT32 ChassisNumberPowerCords;\r
1928 UINT32 ChassisElementCount;\r
1929 UINT32 ChassisElementRecordLength;\r
1930 EFI_MISC_ELEMENTS ChassisElements;\r
1931} EFI_MISC_CHASSIS_MANUFACTURER_DATA;\r
1932\r
1933//\r
1934// Misc. Port Connector Information - SMBIOS Type 8\r
1935//\r
1936#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006\r
1937\r
1938typedef enum {\r
1939 EfiPortConnectorTypeNone = 0x00,\r
1940 EfiPortConnectorTypeCentronics = 0x01,\r
1941 EfiPortConnectorTypeMiniCentronics = 0x02,\r
1942 EfiPortConnectorTypeProprietary = 0x03,\r
1943 EfiPortConnectorTypeDB25Male = 0x04,\r
1944 EfiPortConnectorTypeDB25Female = 0x05,\r
1945 EfiPortConnectorTypeDB15Male = 0x06,\r
1946 EfiPortConnectorTypeDB15Female = 0x07,\r
1947 EfiPortConnectorTypeDB9Male = 0x08,\r
1948 EfiPortConnectorTypeDB9Female = 0x09,\r
1949 EfiPortConnectorTypeRJ11 = 0x0A,\r
1950 EfiPortConnectorTypeRJ45 = 0x0B,\r
1951 EfiPortConnectorType50PinMiniScsi = 0x0C,\r
1952 EfiPortConnectorTypeMiniDin = 0x0D,\r
1953 EfiPortConnectorTypeMicriDin = 0x0E,\r
1954 EfiPortConnectorTypePS2 = 0x0F,\r
1955 EfiPortConnectorTypeInfrared = 0x10,\r
1956 EfiPortConnectorTypeHpHil = 0x11,\r
1957 EfiPortConnectorTypeUsb = 0x12,\r
1958 EfiPortConnectorTypeSsaScsi = 0x13,\r
1959 EfiPortConnectorTypeCircularDin8Male = 0x14,\r
1960 EfiPortConnectorTypeCircularDin8Female = 0x15,\r
1961 EfiPortConnectorTypeOnboardIde = 0x16,\r
1962 EfiPortConnectorTypeOnboardFloppy = 0x17,\r
1963 EfiPortConnectorType9PinDualInline = 0x18,\r
1964 EfiPortConnectorType25PinDualInline = 0x19,\r
1965 EfiPortConnectorType50PinDualInline = 0x1A,\r
1966 EfiPortConnectorType68PinDualInline = 0x1B,\r
1967 EfiPortConnectorTypeOnboardSoundInput = 0x1C,\r
1968 EfiPortConnectorTypeMiniCentronicsType14 = 0x1D,\r
1969 EfiPortConnectorTypeMiniCentronicsType26 = 0x1E,\r
1970 EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F,\r
1971 EfiPortConnectorTypeBNC = 0x20,\r
1972 EfiPortConnectorType1394 = 0x21,\r
1973 EfiPortConnectorTypePC98 = 0xA0,\r
1974 EfiPortConnectorTypePC98Hireso = 0xA1,\r
1975 EfiPortConnectorTypePCH98 = 0xA2,\r
1976 EfiPortConnectorTypePC98Note = 0xA3,\r
1977 EfiPortConnectorTypePC98Full = 0xA4,\r
1978 EfiPortConnectorTypeOther = 0xFF\r
1979} EFI_MISC_PORT_CONNECTOR_TYPE;\r
1980\r
1981typedef enum {\r
1982 EfiPortTypeNone = 0x00,\r
1983 EfiPortTypeParallelXtAtCompatible = 0x01,\r
1984 EfiPortTypeParallelPortPs2 = 0x02,\r
1985 EfiPortTypeParallelPortEcp = 0x03,\r
1986 EfiPortTypeParallelPortEpp = 0x04,\r
1987 EfiPortTypeParallelPortEcpEpp = 0x05,\r
1988 EfiPortTypeSerialXtAtCompatible = 0x06,\r
1989 EfiPortTypeSerial16450Compatible = 0x07,\r
1990 EfiPortTypeSerial16550Compatible = 0x08,\r
1991 EfiPortTypeSerial16550ACompatible = 0x09,\r
1992 EfiPortTypeScsi = 0x0A,\r
1993 EfiPortTypeMidi = 0x0B,\r
1994 EfiPortTypeJoyStick = 0x0C,\r
1995 EfiPortTypeKeyboard = 0x0D,\r
1996 EfiPortTypeMouse = 0x0E,\r
1997 EfiPortTypeSsaScsi = 0x0F,\r
1998 EfiPortTypeUsb = 0x10,\r
1999 EfiPortTypeFireWire = 0x11,\r
2000 EfiPortTypePcmciaTypeI = 0x12,\r
2001 EfiPortTypePcmciaTypeII = 0x13,\r
2002 EfiPortTypePcmciaTypeIII = 0x14,\r
2003 EfiPortTypeCardBus = 0x15,\r
2004 EfiPortTypeAccessBusPort = 0x16,\r
2005 EfiPortTypeScsiII = 0x17,\r
2006 EfiPortTypeScsiWide = 0x18,\r
2007 EfiPortTypePC98 = 0x19,\r
2008 EfiPortTypePC98Hireso = 0x1A,\r
2009 EfiPortTypePCH98 = 0x1B,\r
2010 EfiPortTypeVideoPort = 0x1C,\r
2011 EfiPortTypeAudioPort = 0x1D,\r
2012 EfiPortTypeModemPort = 0x1E,\r
2013 EfiPortTypeNetworkPort = 0x1F,\r
2014 EfiPortType8251Compatible = 0xA0,\r
2015 EfiPortType8251FifoCompatible = 0xA1,\r
2016 EfiPortTypeOther = 0xFF\r
2017} EFI_MISC_PORT_TYPE;\r
2018\r
2019typedef struct {\r
2020 STRING_REF PortInternalConnectorDesignator;\r
2021 STRING_REF PortExternalConnectorDesignator;\r
2022 EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType;\r
2023 EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType;\r
2024 EFI_MISC_PORT_TYPE PortType;\r
2025 EFI_MISC_PORT_DEVICE_PATH PortPath;\r
2026} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
2027\r
2028//\r
2029// Misc. System Slots - SMBIOS Type 9\r
2030//\r
2031#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007\r
2032\r
2033typedef enum {\r
2034 EfiSlotTypeOther = 0x01,\r
2035 EfiSlotTypeUnknown = 0x02,\r
2036 EfiSlotTypeIsa = 0x03,\r
2037 EfiSlotTypeMca = 0x04,\r
2038 EfiSlotTypeEisa = 0x05,\r
2039 EfiSlotTypePci = 0x06,\r
2040 EfiSlotTypePcmcia = 0x07,\r
2041 EfiSlotTypeVlVesa = 0x08,\r
2042 EfiSlotTypeProprietary = 0x09,\r
2043 EfiSlotTypeProcessorCardSlot = 0x0A,\r
2044 EfiSlotTypeProprietaryMemoryCardSlot = 0x0B,\r
2045 EfiSlotTypeIORiserCardSlot = 0x0C,\r
2046 EfiSlotTypeNuBus = 0x0D,\r
2047 EfiSlotTypePci66MhzCapable = 0x0E,\r
2048 EfiSlotTypeAgp = 0x0F,\r
2049 ///\r
2050 /// Inconsistent with specification here: \r
2051 /// In MiscSubclass spec 0.9, its naming should be EfiSlotTypeAgp2X\r
2052 /// rather than EfiSlotTypeApg2X.\r
2053 ///\r
2054 EfiSlotTypeAgp2X = 0x10,\r
2055 EfiSlotTypeAgp4X = 0x11,\r
2056 EfiSlotTypePciX = 0x12,\r
2057 EfiSlotTypeAgp8x = 0x13,\r
2058 EfiSlotTypePC98C20 = 0xA0,\r
2059 EfiSlotTypePC98C24 = 0xA1,\r
2060 EfiSlotTypePC98E = 0xA2,\r
2061 EfiSlotTypePC98LocalBus = 0xA3,\r
2062 EfiSlotTypePC98Card = 0xA4,\r
2063 ///\r
2064 /// Inconsistent with specification here: \r
2065 /// In MiscSubclass spec 0.9, this field isn't defined.\r
2066 /// It's introduced for SmBios 2.6 spec type 9.\r
2067 ///\r
2068 EfiSlotTypePciExpress = 0xA5\r
2069} EFI_MISC_SLOT_TYPE;\r
2070\r
2071typedef enum {\r
2072 EfiSlotDataBusWidthOther = 0x01,\r
2073 EfiSlotDataBusWidthUnknown = 0x02,\r
2074 EfiSlotDataBusWidth8Bit = 0x03,\r
2075 EfiSlotDataBusWidth16Bit = 0x04,\r
2076 EfiSlotDataBusWidth32Bit = 0x05,\r
2077 EfiSlotDataBusWidth64Bit = 0x06,\r
2078 EfiSlotDataBusWidth128Bit = 0x07\r
2079} EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
2080\r
2081typedef enum {\r
2082 EfiSlotUsageOther = 1,\r
2083 EfiSlotUsageUnknown = 2,\r
2084 EfiSlotUsageAvailable = 3,\r
2085 EfiSlotUsageInUse = 4\r
2086} EFI_MISC_SLOT_USAGE;\r
2087\r
2088typedef enum {\r
2089 EfiSlotLengthOther = 1,\r
2090 EfiSlotLengthUnknown = 2,\r
2091 EfiSlotLengthShort = 3,\r
2092 EfiSlotLengthLong = 4\r
2093} EFI_MISC_SLOT_LENGTH;\r
2094\r
2095typedef struct {\r
2096 UINT32 CharacteristicsUnknown :1;\r
2097 UINT32 Provides50Volts :1;\r
2098 UINT32 Provides33Volts :1;\r
2099 UINT32 SharedSlot :1;\r
2100 UINT32 PcCard16Supported :1;\r
2101 UINT32 CardBusSupported :1;\r
2102 UINT32 ZoomVideoSupported :1;\r
2103 UINT32 ModemRingResumeSupported:1;\r
2104 UINT32 PmeSignalSupported :1;\r
2105 UINT32 HotPlugDevicesSupported :1;\r
2106 UINT32 SmbusSignalSupported :1;\r
2107 UINT32 Reserved :21;\r
2108} EFI_MISC_SLOT_CHARACTERISTICS;\r
2109\r
2110typedef struct {\r
2111 STRING_REF SlotDesignation;\r
2112 EFI_MISC_SLOT_TYPE SlotType;\r
2113 EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth;\r
2114 EFI_MISC_SLOT_USAGE SlotUsage;\r
2115 EFI_MISC_SLOT_LENGTH SlotLength;\r
2116 UINT16 SlotId;\r
2117 EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;\r
2118 EFI_DEVICE_PATH_PROTOCOL SlotDevicePath;\r
2119} EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;\r
2120\r
2121//\r
2122// Misc. Onboard Device - SMBIOS Type 10\r
2123//\r
2124#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008\r
2125\r
2126typedef enum {\r
2127 EfiOnBoardDeviceTypeOther = 1,\r
2128 EfiOnBoardDeviceTypeUnknown = 2,\r
2129 EfiOnBoardDeviceTypeVideo = 3,\r
2130 EfiOnBoardDeviceTypeScsiController = 4,\r
2131 EfiOnBoardDeviceTypeEthernet = 5,\r
2132 EfiOnBoardDeviceTypeTokenRing = 6,\r
2133 EfiOnBoardDeviceTypeSound = 7\r
2134} EFI_MISC_ONBOARD_DEVICE_TYPE;\r
2135\r
2136typedef struct {\r
2137 UINT32 DeviceType :16;\r
2138 UINT32 DeviceEnabled :1;\r
2139 UINT32 Reserved :15;\r
2140} EFI_MISC_ONBOARD_DEVICE_STATUS;\r
2141\r
2142typedef struct {\r
2143 STRING_REF OnBoardDeviceDescription;\r
2144 ///\r
2145 /// Inconsistent with specification here: \r
2146 /// In MiscSubclass spec 0.9, the naming is OnBoardDeviceType.\r
2147 /// Keep it unchanged for backward compatibilty.\r
2148 ///\r
2149 EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus;\r
2150 EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath;\r
2151} EFI_MISC_ONBOARD_DEVICE_DATA;\r
2152\r
2153//\r
2154// Misc. BIOS Language Information - SMBIOS Type 11\r
2155//\r
2156#define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009\r
2157\r
2158typedef struct {\r
2159 STRING_REF OemStringRef[1];\r
2160} EFI_MISC_OEM_STRING_DATA;\r
2161\r
2162//\r
2163// Misc. System Options - SMBIOS Type 12\r
2164//\r
2165typedef struct {\r
2166 STRING_REF SystemOptionStringRef[1];\r
2167} EFI_MISC_SYSTEM_OPTION_STRING_DATA;\r
2168\r
2169#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A\r
2170\r
2171//\r
2172// Misc. Number of Installable Languages - SMBIOS Type 13\r
2173//\r
2174#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B\r
2175\r
2176typedef struct {\r
2177 UINT32 AbbreviatedLanguageFormat :1;\r
2178 UINT32 Reserved :31;\r
2179} EFI_MISC_LANGUAGE_FLAGS;\r
2180\r
2181typedef struct {\r
2182 UINT16 NumberOfInstallableLanguages;\r
2183 EFI_MISC_LANGUAGE_FLAGS LanguageFlags;\r
2184 UINT16 CurrentLanguageNumber;\r
2185} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;\r
2186\r
2187//\r
2188// Misc. System Language String\r
2189//\r
2190#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C\r
2191\r
2192typedef struct {\r
2193 UINT16 LanguageId;\r
2194 STRING_REF SystemLanguageString;\r
2195} EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;\r
2196\r
2197//\r
2198// Group Associations - SMBIOS Type 14\r
2199//\r
2200#define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D\r
2201\r
2202typedef struct {\r
2203 STRING_REF GroupName;\r
2204 UINT16 NumberGroupItems;\r
2205 UINT16 GroupId;\r
2206} EFI_MISC_GROUP_NAME_DATA;\r
2207\r
2208//\r
2209// Group Item Set Element\r
2210//\r
2211#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E\r
2212\r
2213typedef struct {\r
2214 EFI_GUID SubClass;\r
2215 EFI_INTER_LINK_DATA GroupLink;\r
2216 UINT16 GroupId;\r
2217 UINT16 GroupElementId;\r
2218} EFI_MISC_GROUP_ITEM_SET_DATA;\r
2219\r
2220//\r
2221// Misc. Pointing Device Type - SMBIOS Type 21\r
2222//\r
2223#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F\r
2224\r
2225typedef enum {\r
2226 EfiPointingDeviceTypeOther = 0x01,\r
2227 EfiPointingDeviceTypeUnknown = 0x02,\r
2228 EfiPointingDeviceTypeMouse = 0x03,\r
2229 EfiPointingDeviceTypeTrackBall = 0x04,\r
2230 EfiPointingDeviceTypeTrackPoint = 0x05,\r
2231 EfiPointingDeviceTypeGlidePoint = 0x06,\r
2232 EfiPointingDeviceTouchPad = 0x07,\r
2233 EfiPointingDeviceTouchScreen = 0x08,\r
2234 EfiPointingDeviceOpticalSensor = 0x09\r
2235} EFI_MISC_POINTING_DEVICE_TYPE;\r
2236\r
2237typedef enum {\r
2238 EfiPointingDeviceInterfaceOther = 0x01,\r
2239 EfiPointingDeviceInterfaceUnknown = 0x02,\r
2240 EfiPointingDeviceInterfaceSerial = 0x03,\r
2241 EfiPointingDeviceInterfacePs2 = 0x04,\r
2242 EfiPointingDeviceInterfaceInfrared = 0x05,\r
2243 EfiPointingDeviceInterfaceHpHil = 0x06,\r
2244 EfiPointingDeviceInterfaceBusMouse = 0x07,\r
2245 EfiPointingDeviceInterfaceADB = 0x08,\r
2246 EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0,\r
2247 EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1,\r
2248 EfiPointingDeviceInterfaceUsb = 0xA2\r
2249} EFI_MISC_POINTING_DEVICE_INTERFACE;\r
2250\r
2251typedef struct {\r
2252 EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType;\r
2253 EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface;\r
2254 UINT16 NumberPointingDeviceButtons;\r
2255 EFI_DEVICE_PATH_PROTOCOL PointingDevicePath;\r
2256} EFI_MISC_POINTING_DEVICE_TYPE_DATA;\r
2257\r
2258//\r
2259// Portable Battery - SMBIOS Type 22\r
2260//\r
2261///\r
2262/// Inconsistent with specification here: \r
2263/// In MiscSubclass spec 0.9, the naming is EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER.\r
2264/// Keep it unchanged for backward compatibilty.\r
2265///\r
2266#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010\r
2267\r
2268///\r
2269/// Inconsistent with specification here: \r
2270/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_DEVICE_CHEMISTRY.\r
2271/// And all field namings are also different with spec.\r
2272/// Keep it unchanged for backward compatibilty.\r
2273///\r
2274typedef enum { \r
2275 EfiPortableBatteryDeviceChemistryOther = 1,\r
2276 EfiPortableBatteryDeviceChemistryUnknown = 2,\r
2277 EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
2278 EfiPortableBatteryDeviceChemistryNickelCadmium = 4,\r
2279 EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,\r
2280 EfiPortableBatteryDeviceChemistryLithiumIon = 6,\r
2281 EfiPortableBatteryDeviceChemistryZincAir = 7,\r
2282 EfiPortableBatteryDeviceChemistryLithiumPolymer = 8\r
2283} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
2284\r
2285///\r
2286/// Inconsistent with specification here: \r
2287/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BATTERY_LOCATION_DATA.\r
2288/// And the name and the order of the fields are also different with spec.\r
2289/// Keep it unchanged for backward compatibilty.\r
2290///\r
2291typedef struct {\r
2292 STRING_REF Location;\r
2293 STRING_REF Manufacturer;\r
2294 STRING_REF ManufactureDate;\r
2295 STRING_REF SerialNumber;\r
2296 STRING_REF DeviceName;\r
2297 EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY \r
2298 DeviceChemistry;\r
2299 UINT16 DesignCapacity;\r
2300 UINT16 DesignVoltage;\r
2301 STRING_REF SBDSVersionNumber;\r
2302 UINT8 MaximumError;\r
2303 UINT16 SBDSSerialNumber;\r
2304 UINT16 SBDSManufactureDate;\r
2305 STRING_REF SBDSDeviceChemistry;\r
2306 UINT8 DesignCapacityMultiplier;\r
2307 UINT32 OEMSpecific; \r
2308 UINT8 BatteryNumber; // Temporary \r
2309 BOOLEAN Valid; // Is entry valid - Temporary\r
2310} EFI_MISC_PORTABLE_BATTERY;\r
2311\r
2312\r
2313//\r
2314// Misc. Reset Capabilities - SMBIOS Type 23\r
2315//\r
2316#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011\r
2317\r
2318typedef struct {\r
2319 UINT32 Status :1;\r
2320 UINT32 BootOption :2;\r
2321 UINT32 BootOptionOnLimit :2;\r
2322 UINT32 WatchdogTimerPresent:1;\r
2323 UINT32 Reserved :26;\r
2324} EFI_MISC_RESET_CAPABILITIES_TYPE;\r
2325\r
2326typedef struct {\r
2327 EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities;\r
2328 UINT16 ResetCount;\r
2329 UINT16 ResetLimit;\r
2330 UINT16 ResetTimerInterval;\r
2331 UINT16 ResetTimeout;\r
2332} EFI_MISC_RESET_CAPABILITIES;\r
2333\r
2334typedef struct {\r
2335 EFI_MISC_RESET_CAPABILITIES ResetCapabilities;\r
2336 UINT16 ResetCount;\r
2337 UINT16 ResetLimit;\r
2338 UINT16 ResetTimerInterval;\r
2339 UINT16 ResetTimeout;\r
2340} EFI_MISC_RESET_CAPABILITIES_DATA;\r
2341\r
2342//\r
2343// Misc. Hardware Security - SMBIOS Type 24\r
2344//\r
2345#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012\r
2346\r
2347///\r
2348/// Inconsistent with specification here: \r
2349/// In MiscSubclass spec 0.9, it only mention the possible value of each field in\r
2350/// EFI_MISC_HARDWARE_SECURITY_SETTINGS. \r
2351/// It's implementation-specific to simplify the code logic.\r
2352///\r
2353typedef enum {\r
2354 EfiHardwareSecurityStatusDisabled = 0,\r
2355 EfiHardwareSecurityStatusEnabled = 1,\r
2356 EfiHardwareSecurityStatusNotImplemented = 2,\r
2357 EfiHardwareSecurityStatusUnknown = 3\r
2358} EFI_MISC_HARDWARE_SECURITY_STATUS;\r
2359\r
2360typedef struct {\r
2361 UINT32 FrontPanelResetStatus :2;\r
2362 UINT32 AdministratorPasswordStatus :2;\r
2363 UINT32 KeyboardPasswordStatus :2;\r
2364 UINT32 PowerOnPasswordStatus :2;\r
2365 UINT32 Reserved :24;\r
2366} EFI_MISC_HARDWARE_SECURITY_SETTINGS;\r
2367\r
2368typedef struct {\r
2369 EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;\r
2370} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;\r
2371\r
2372//\r
2373// System Power Controls - SMBIOS Type 25\r
2374//\r
2375#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013\r
2376\r
2377typedef struct {\r
2378 UINT16 ScheduledPoweronMonth;\r
2379 UINT16 ScheduledPoweronDayOfMonth;\r
2380 UINT16 ScheduledPoweronHour;\r
2381 UINT16 ScheduledPoweronMinute;\r
2382 UINT16 ScheduledPoweronSecond;\r
2383} EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;\r
2384\r
2385//\r
2386// Voltage Probe - SMBIOS Type 26\r
2387//\r
2388#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014\r
2389\r
2390typedef struct {\r
2391 UINT32 VoltageProbeSite :5;\r
2392 UINT32 VoltageProbeStatus :3;\r
2393 UINT32 Reserved :24;\r
2394} EFI_MISC_VOLTAGE_PROBE_LOCATION;\r
2395\r
2396typedef struct {\r
2397 STRING_REF VoltageProbeDescription;\r
2398 EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation;\r
2399 EFI_EXP_BASE10_DATA VoltageProbeMaximumValue;\r
2400 EFI_EXP_BASE10_DATA VoltageProbeMinimumValue;\r
2401 EFI_EXP_BASE10_DATA VoltageProbeResolution;\r
2402 EFI_EXP_BASE10_DATA VoltageProbeTolerance;\r
2403 EFI_EXP_BASE10_DATA VoltageProbeAccuracy;\r
2404 EFI_EXP_BASE10_DATA VoltageProbeNominalValue;\r
2405 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2406 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2407 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2408 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2409 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2410 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2411 UINT32 VoltageProbeOemDefined;\r
2412} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;\r
2413\r
2414//\r
2415// Cooling Device - SMBIOS Type 27\r
2416//\r
2417#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015\r
2418\r
2419typedef struct {\r
2420 UINT32 CoolingDevice :5;\r
2421 UINT32 CoolingDeviceStatus :3;\r
2422 UINT32 Reserved :24;\r
2423} EFI_MISC_COOLING_DEVICE_TYPE;\r
2424\r
2425typedef struct {\r
2426 EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType;\r
2427 EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink;\r
2428 UINT16 CoolingDeviceUnitGroup;\r
2429 EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed;\r
2430 UINT32 CoolingDeviceOemDefined;\r
2431} EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
2432\r
2433//\r
2434// Temperature Probe - SMBIOS Type 28\r
2435//\r
2436#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016\r
2437\r
2438typedef struct {\r
2439 UINT32 TemperatureProbeSite :5;\r
2440 UINT32 TemperatureProbeStatus :3;\r
2441 UINT32 Reserved :24;\r
2442} EFI_MISC_TEMPERATURE_PROBE_LOCATION;\r
2443\r
2444typedef struct {\r
2445 STRING_REF TemperatureProbeDescription;\r
2446 EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
2447 TemperatureProbeLocation;\r
2448 EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue;\r
2449 EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue;\r
2450 EFI_EXP_BASE10_DATA TemperatureProbeResolution;\r
2451 EFI_EXP_BASE10_DATA TemperatureProbeTolerance;\r
2452 EFI_EXP_BASE10_DATA TemperatureProbeAccuracy;\r
2453 EFI_EXP_BASE10_DATA TemperatureProbeNominalValue;\r
2454 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2455 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2456 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2457 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2458 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2459 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2460 UINT32 TemperatureProbeOemDefined;\r
2461} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
2462\r
2463//\r
2464// Electrical Current Probe - SMBIOS Type 29\r
2465//\r
2466\r
2467#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017\r
2468\r
2469typedef struct {\r
2470 UINT32 ElectricalCurrentProbeSite :5;\r
2471 UINT32 ElectricalCurrentProbeStatus :3;\r
2472 UINT32 Reserved :24;\r
2473} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;\r
2474\r
2475typedef struct {\r
2476 STRING_REF ElectricalCurrentProbeDescription;\r
2477 EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION\r
2478 ElectricalCurrentProbeLocation;\r
2479 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue;\r
2480 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue;\r
2481 EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution;\r
2482 EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance;\r
2483 EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy;\r
2484 EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue;\r
2485 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2486 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2487 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2488 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2489 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2490 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2491 UINT32 ElectricalCurrentProbeOemDefined;\r
2492} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;\r
2493\r
2494//\r
2495// Out-of-Band Remote Access - SMBIOS Type 30\r
2496//\r
2497\r
2498#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018\r
2499\r
2500typedef struct {\r
2501 UINT32 InboundConnectionEnabled :1;\r
2502 UINT32 OutboundConnectionEnabled :1;\r
2503 UINT32 Reserved :30;\r
2504} EFI_MISC_REMOTE_ACCESS_CONNECTIONS;\r
2505\r
2506typedef struct {\r
2507 STRING_REF RemoteAccessManufacturerNameDescription;\r
2508 EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections;\r
2509} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;\r
2510\r
2511//\r
2512// Misc. BIS Entry Point - SMBIOS Type 31\r
2513//\r
2514#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019\r
2515\r
2516typedef struct {\r
2517 EFI_PHYSICAL_ADDRESS BisEntryPoint;\r
2518} EFI_MISC_BIS_ENTRY_POINT_DATA;\r
2519\r
2520//\r
2521// Misc. Boot Information - SMBIOS Type 32\r
2522//\r
2523#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A\r
2524\r
2525///\r
2526/// Inconsistent with specification here: \r
2527/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
2528/// Keep it unchanged for backward compatibilty.\r
2529///\r
2530typedef enum {\r
2531 EfiBootInformationStatusNoError = 0x00,\r
2532 EfiBootInformationStatusNoBootableMedia = 0x01,\r
2533 EfiBootInformationStatusNormalOSFailedLoading = 0x02,\r
2534 EfiBootInformationStatusFirmwareDetectedFailure = 0x03,\r
2535 EfiBootInformationStatusOSDetectedFailure = 0x04,\r
2536 EfiBootInformationStatusUserRequestedBoot = 0x05,\r
2537 EfiBootInformationStatusSystemSecurityViolation = 0x06,\r
2538 EfiBootInformationStatusPreviousRequestedImage = 0x07,\r
2539 EfiBootInformationStatusWatchdogTimerExpired = 0x08,\r
2540 EfiBootInformationStatusStartReserved = 0x09,\r
2541 EfiBootInformationStatusStartOemSpecific = 0x80,\r
2542 EfiBootInformationStatusStartProductSpecific = 0xC0\r
2543} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
2544\r
2545typedef struct {\r
2546 ///\r
2547 /// Inconsistent with specification here: \r
2548 /// In MiscSubclass spec 0.9, the field name is EFI_MISC_BOOT_INFORMATION_STATUS_TYPE.\r
2549 /// Keep it unchanged for backward compatibilty.\r
2550 ///\r
2551 EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
2552 UINT8 BootInformationData[9];\r
2553} EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
2554\r
2555//\r
2556// Management Device - SMBIOS Type 34\r
2557//\r
2558#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B\r
2559\r
2560typedef enum {\r
2561 EfiManagementDeviceTypeOther = 0x01,\r
2562 EfiManagementDeviceTypeUnknown = 0x02,\r
2563 EfiManagementDeviceTypeLm75 = 0x03,\r
2564 EfiManagementDeviceTypeLm78 = 0x04,\r
2565 EfiManagementDeviceTypeLm79 = 0x05,\r
2566 EfiManagementDeviceTypeLm80 = 0x06,\r
2567 EfiManagementDeviceTypeLm81 = 0x07,\r
2568 EfiManagementDeviceTypeAdm9240 = 0x08,\r
2569 EfiManagementDeviceTypeDs1780 = 0x09,\r
2570 EfiManagementDeviceTypeMaxim1617 = 0x0A,\r
2571 EfiManagementDeviceTypeGl518Sm = 0x0B,\r
2572 EfiManagementDeviceTypeW83781D = 0x0C,\r
2573 EfiManagementDeviceTypeHt82H791 = 0x0D\r
2574} EFI_MISC_MANAGEMENT_DEVICE_TYPE;\r
2575\r
2576typedef enum {\r
2577 EfiManagementDeviceAddressTypeOther = 1,\r
2578 EfiManagementDeviceAddressTypeUnknown = 2,\r
2579 EfiManagementDeviceAddressTypeIOPort = 3,\r
2580 EfiManagementDeviceAddressTypeMemory = 4,\r
2581 EfiManagementDeviceAddressTypeSmbus = 5\r
2582} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;\r
2583\r
2584typedef struct {\r
2585 STRING_REF ManagementDeviceDescription;\r
2586 EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType;\r
2587 UINTN ManagementDeviceAddress;\r
2588 EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE\r
2589 ManagementDeviceAddressType;\r
2590} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;\r
2591\r
2592//\r
2593// Management Device Component - SMBIOS Type 35\r
2594//\r
2595\r
2596#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C\r
2597\r
2598typedef struct {\r
2599 STRING_REF ManagementDeviceComponentDescription;\r
2600 EFI_INTER_LINK_DATA ManagementDeviceLink;\r
2601 EFI_INTER_LINK_DATA ManagementDeviceComponentLink;\r
2602 ///\r
2603 /// Inconsistent with specification here: \r
2604 /// In MiscSubclass spec 0.9, this field is NOT defined.\r
2605 /// It's introduced for SmBios 2.6 spec type 35.\r
2606 ///\r
2607 EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;\r
2608} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
2609\r
2610//\r
2611// IPMI Data Record - SMBIOS Type 38\r
2612//\r
2613typedef enum {\r
2614 EfiIpmiOther = 0,\r
2615 EfiIpmiKcs = 1,\r
2616 EfiIpmiSmic = 2,\r
2617 EfiIpmiBt = 3\r
2618} EFI_MISC_IPMI_INTERFACE_TYPE;\r
2619\r
2620typedef struct {\r
2621 UINT16 IpmiSpecLeastSignificantDigit:4;\r
2622 UINT16 IpmiSpecMostSignificantDigit: 4;\r
2623 UINT16 Reserved: 8;\r
2624} EFI_MISC_IPMI_SPECIFICATION_REVISION;\r
2625\r
2626typedef struct {\r
2627 EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType;\r
2628 EFI_MISC_IPMI_SPECIFICATION_REVISION \r
2629 IpmiSpecificationRevision;\r
2630 UINT16 IpmiI2CSlaveAddress;\r
2631 UINT16 IpmiNvDeviceAddress;\r
2632 UINT64 IpmiBaseAddress;\r
2633 EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath;\r
2634} EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
2635\r
2636#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D\r
2637\r
2638///\r
2639/// System Power supply Record - SMBIOS Type 39\r
2640///\r
2641/// Inconsistent with specification here: \r
2642/// In MiscSubclass spec 0.9, the type of all fields are UINT32.\r
2643/// Keep it unchanged for backward compatibilty.\r
2644///\r
2645typedef struct {\r
2646 UINT16 PowerSupplyHotReplaceable:1;\r
2647 UINT16 PowerSupplyPresent :1;\r
2648 UINT16 PowerSupplyUnplugged :1;\r
2649 UINT16 InputVoltageRangeSwitch :4;\r
2650 UINT16 PowerSupplyStatus :3;\r
2651 UINT16 PowerSupplyType :4;\r
2652 UINT16 Reserved :2;\r
2653} EFI_MISC_POWER_SUPPLY_CHARACTERISTICS;\r
2654\r
2655///\r
2656/// Inconsistent with specification here: \r
409669d5 2657/// In MiscSubclass spec 0.9, the structure name is EFI_MISC_POWER_SUPPLY_UNIT_GROUP_DATA.\r
87d63447 2658/// Keep it unchanged for backward compatibilty.\r
2659///\r
2660typedef struct {\r
2661 UINT16 PowerUnitGroup;\r
2662 STRING_REF PowerSupplyLocation;\r
2663 STRING_REF PowerSupplyDeviceName;\r
2664 STRING_REF PowerSupplyManufacturer;\r
2665 STRING_REF PowerSupplySerialNumber;\r
2666 STRING_REF PowerSupplyAssetTagNumber;\r
2667 STRING_REF PowerSupplyModelPartNumber;\r
2668 STRING_REF PowerSupplyRevisionLevel;\r
2669 UINT16 PowerSupplyMaxPowerCapacity;\r
2670 EFI_MISC_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;\r
2671 EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;\r
2672 EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;\r
2673 EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;\r
2674} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
2675\r
2676#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E\r
2677\r
2678///\r
2679/// OEM Data Record - SMBIOS Type 0x80-0xFF\r
2680///\r
2681/// Inconsistent with specification here: \r
2682/// In MiscSubclass spec 0.9, the structure name is EFI_SMBIOS_STRUCTURE_HDR.\r
2683/// Due to this structure is commonly used by vendor to construct SmBios type 0x80~0xFF table,\r
2684/// Keep it unchanged for backward compatibilty.\r
2685///\r
2686typedef struct {\r
2687 UINT8 Type;\r
2688 UINT8 Length;\r
2689 UINT16 Handle;\r
2690} SMBIOS_STRUCTURE_HDR;\r
2691\r
2692typedef struct {\r
2693 ///\r
2694 /// Inconsistent with specification here: \r
2695 /// In MiscSubclass spec 0.9, the field name is EFI_SMBIOS_STRUCTURE_HDR.\r
2696 /// Keep it unchanged for backward compatibilty.\r
2697 ///\r
2698 SMBIOS_STRUCTURE_HDR Header;\r
2699 UINT8 RawData[1];\r
2700} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
2701\r
2702#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F\r
2703\r
2704///\r
2705/// Misc. System Event Log - SMBIOS Type 15\r
2706///\r
2707/// Inconsistent with specification here: \r
2708/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
2709/// It's introduced for SmBios 2.6 spec type 15.\r
2710///\r
2711#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020\r
2712\r
2713///\r
2714/// Inconsistent with specification here: \r
2715/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
2716/// It's introduced for SmBios 2.6 spec type 15.\r
2717///\r
2718typedef struct {\r
2719 UINT16 LogAreaLength;\r
2720 UINT16 LogHeaderStartOffset;\r
2721 UINT16 LogDataStartOffset;\r
2722 UINT8 AccessMethod;\r
2723 UINT8 LogStatus;\r
2724 UINT32 LogChangeToken;\r
2725 UINT32 AccessMethodAddress;\r
2726 UINT8 LogHeaderFormat;\r
2727 UINT8 NumberOfSupportedLogType;\r
2728 UINT8 LengthOfLogDescriptor;\r
2729} EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
2730\r
2731//\r
2732// Access Method.\r
2733// 0x00~0x04: as following definition\r
2734// 0x05~0x7f: Available for future assignment.\r
2735// 0x80~0xff: BIOS Vendor/OEM-specific.\r
2736// \r
2737#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00\r
2738#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01\r
2739#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02\r
2740#define ACCESS_MEMORY_MAPPED 0x03\r
2741#define ACCESS_GPNV 0x04\r
2742\r
2743///\r
2744/// Management Device Threshold Data Record - SMBIOS Type 36\r
2745///\r
2746/// Inconsistent with specification here: \r
2747/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
2748/// It's introduced for SmBios 2.6 spec type 36.\r
2749///\r
2750#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021\r
2751///\r
2752/// Inconsistent with specification here: \r
2753/// In MiscSubclass spec 0.9, the following data structures are NOT defined.\r
2754/// It's introduced for SmBios 2.6 spec type 36.\r
2755///\r
2756typedef struct {\r
2757 UINT16 LowerThresNonCritical;\r
2758 UINT16 UpperThresNonCritical;\r
2759 UINT16 LowerThresCritical;\r
2760 UINT16 UpperThresCritical;\r
2761 UINT16 LowerThresNonRecover;\r
2762 UINT16 UpperThresNonRecover;\r
2763} EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;\r
2764\r
2765//\r
2766// Declare the following strutures alias to use them more conviniently.\r
2767//\r
2768typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS;\r
2769typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR;\r
2770typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER;\r
2771typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER;\r
2772typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER;\r
2773typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;\r
2774typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION;\r
2775typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE;\r
2776typedef EFI_MISC_POINTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
2777typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING;\r
2778typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING;\r
2779typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;\r
2780typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING;\r
2781typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG;\r
2782typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT;\r
2783typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS;\r
2784typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY;\r
2785typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;\r
2786typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA EFI_MISC_SCHEDULED_POWER_ON_MONTH;\r
2787typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;\r
2788typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA EFI_MISC_COOLING_DEVICE_TEMP_LINK;\r
2789typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION;\r
2790typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA \r
2791 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION;\r
2792typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;\r
2793typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;\r
2794\r
2795///\r
2796/// Inconsistent with specification here: \r
2797/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
2798/// It is implementation-specific to simplify the code logic.\r
2799///\r
2800typedef union {\r
2801 EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;\r
2802 EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor;\r
2803 EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer;\r
2804 EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer;\r
2805 EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer;\r
2806 EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator;\r
2807 EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation;\r
2808 EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice;\r
2809 EFI_MISC_OEM_STRING_DATA MiscOemString;\r
2810 EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString;\r
2811 EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages;\r
2812 EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString;\r
2813 EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog;\r
2814 EFI_MISC_GROUP_NAME_DATA MiscGroupNameData;\r
2815 EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData;\r
2816 EFI_MISC_POINTING_DEVICE_TYPE_DATA MiscPointingDeviceTypeData;\r
2817 EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData;\r
2818 EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData;\r
2819 EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData;\r
2820 EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData;\r
2821 EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData;\r
2822 EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData;\r
2823 EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;\r
2824 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
2825 MiscRemoteAccessManufacturerDescriptionData;\r
2826 EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint;\r
2827 EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus;\r
2828 EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData;\r
2829 EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
2830 MiscmangementDeviceComponentDescriptionData;\r
2831 EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData;\r
2832 EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo;\r
2833 EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation;\r
2834 EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold;\r
2835} EFI_MISC_SUBCLASS_RECORDS;\r
2836\r
2837///\r
2838/// Inconsistent with specification here: \r
2839/// In MemSubclass spec 0.9, the following data structures are NOT defined.\r
2840/// It is implementation-specific to simplify the code logic.\r
2841///\r
2842typedef struct {\r
2843 EFI_SUBCLASS_TYPE1_HEADER Header;\r
2844 EFI_MISC_SUBCLASS_RECORDS Record;\r
2845} EFI_MISC_SUBCLASS_DRIVER_DATA;\r
2846#pragma pack()\r
2847\r
2848///\r
2849/// Inconsistent with specification here: \r
2850/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\r
2851/// But value is meaningful, 0 means Reserved.\r
2852///\r
2853#define EFI_SUBCLASS_INSTANCE_RESERVED 0\r
2854///\r
2855/// Inconsistent with specification here: \r
2856/// In DataHubSubclass spec 0.9 page 16, the following symbol is NOT defined.\r
2857/// But value is meaningful, -1 means Not Applicable.\r
2858///\r
2859#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF\r
2860\r
79964ac8 2861#endif\r