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