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