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