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