Add more comments for IntelFramework's header files.
[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
30 #define EFI_PROCESSOR_SUBCLASS_VERSION 0x00010000
31
32 #pragma pack(1)
33
34 typedef struct _USB_PORT_DEVICE_PATH {
35 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
36 PCI_DEVICE_PATH PciBusDevicePath;
37 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
38 } USB_PORT_DEVICE_PATH;
39
40 //
41 // IDE
42 //
43 typedef struct _IDE_DEVICE_PATH {
44 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
45 PCI_DEVICE_PATH PciBusDevicePath;
46 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
47 } IDE_DEVICE_PATH;
48
49 //
50 // RMC Connector
51 //
52 typedef struct _RMC_CONN_DEVICE_PATH {
53 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
54 PCI_DEVICE_PATH PciBridgeDevicePath;
55 PCI_DEVICE_PATH PciBusDevicePath;
56 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
57 } RMC_CONN_DEVICE_PATH;
58
59 //
60 // RIDE
61 //
62 typedef struct _RIDE_DEVICE_PATH {
63 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
64 PCI_DEVICE_PATH PciBridgeDevicePath;
65 PCI_DEVICE_PATH PciBusDevicePath;
66 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
67 } RIDE_DEVICE_PATH;
68
69 //
70 // Gigabit NIC
71 //
72 typedef struct _GB_NIC_DEVICE_PATH {
73 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
74 PCI_DEVICE_PATH PciBridgeDevicePath;
75 PCI_DEVICE_PATH PciXBridgeDevicePath;
76 PCI_DEVICE_PATH PciXBusDevicePath;
77 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
78 } GB_NIC_DEVICE_PATH;
79
80 //
81 // P/S2 Connector
82 //
83 typedef struct _PS2_CONN_DEVICE_PATH {
84 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
85 PCI_DEVICE_PATH LpcBridgeDevicePath;
86 ACPI_HID_DEVICE_PATH LpcBusDevicePath;
87 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
88 } PS2_CONN_DEVICE_PATH;
89
90 //
91 // Serial Port Connector
92 //
93 typedef struct _SERIAL_CONN_DEVICE_PATH {
94 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
95 PCI_DEVICE_PATH LpcBridgeDevicePath;
96 ACPI_HID_DEVICE_PATH LpcBusDevicePath;
97 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
98 } SERIAL_CONN_DEVICE_PATH;
99
100 //
101 // Parallel Port Connector
102 //
103 typedef struct _PARALLEL_CONN_DEVICE_PATH {
104 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
105 PCI_DEVICE_PATH LpcBridgeDevicePath;
106 ACPI_HID_DEVICE_PATH LpcBusDevicePath;
107 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
108 } PARALLEL_CONN_DEVICE_PATH;
109
110 //
111 // Floopy Connector
112 //
113 typedef struct _FLOOPY_CONN_DEVICE_PATH {
114 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;
115 PCI_DEVICE_PATH LpcBridgeDevicePath;
116 ACPI_HID_DEVICE_PATH LpcBusDevicePath;
117 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;
118 } FLOOPY_CONN_DEVICE_PATH;
119
120 typedef union _EFI_MISC_PORT_DEVICE_PATH {
121 USB_PORT_DEVICE_PATH UsbDevicePath;
122 IDE_DEVICE_PATH IdeDevicePath;
123 RMC_CONN_DEVICE_PATH RmcConnDevicePath;
124 RIDE_DEVICE_PATH RideDevicePath;
125 GB_NIC_DEVICE_PATH GbNicDevicePath;
126 PS2_CONN_DEVICE_PATH Ps2ConnDevicePath;
127 SERIAL_CONN_DEVICE_PATH SerialConnDevicePath;
128 PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath;
129 FLOOPY_CONN_DEVICE_PATH FloppyConnDevicePath;
130 } EFI_MISC_PORT_DEVICE_PATH;
131
132 #pragma pack()
133
134 //
135 // String Token Definition
136 //
137 #define EFI_STRING_TOKEN UINT16
138
139 typedef struct {
140 UINT32 Version;
141 UINT32 HeaderSize;
142 UINT16 Instance;
143 UINT16 SubInstance;
144 UINT32 RecordType;
145 } EFI_SUBCLASS_TYPE1_HEADER;
146
147 typedef struct {
148 EFI_GUID ProducerName;
149 UINT16 Instance;
150 UINT16 SubInstance;
151 } EFI_INTER_LINK_DATA;
152
153
154 //
155 // EXP data
156 //
157
158 typedef struct {
159 UINT16 Value;
160 UINT16 Exponent;
161 } EFI_EXP_BASE2_DATA;
162
163
164 typedef struct {
165 UINT16 Value;
166 UINT16 Exponent;
167 } EFI_EXP_BASE10_DATA;
168
169 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;
170
171 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;
172
173 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA;
174
175 typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;
176
177 typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;
178
179 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA;
180
181 typedef STRING_REF EFI_PROCESSOR_VERSION_DATA;
182
183 typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA;
184
185 typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA;
186
187 typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA;
188
189 typedef struct {
190 UINT32 ProcessorSteppingId:4;
191 UINT32 ProcessorModel: 4;
192 UINT32 ProcessorFamily: 4;
193 UINT32 ProcessorType: 2;
194 UINT32 ProcessorReserved1: 2;
195 UINT32 ProcessorXModel: 4;
196 UINT32 ProcessorXFamily: 8;
197 UINT32 ProcessorReserved2: 4;
198 } EFI_PROCESSOR_SIGNATURE;
199
200 typedef struct {
201 UINT32 ProcessorBrandIndex :8;
202 UINT32 ProcessorClflush :8;
203 UINT32 ProcessorReserved :8;
204 UINT32 ProcessorDfltApicId :8;
205 } EFI_PROCESSOR_MISC_INFO;
206
207 typedef struct {
208 UINT32 ProcessorFpu: 1;
209 UINT32 ProcessorVme: 1;
210 UINT32 ProcessorDe: 1;
211 UINT32 ProcessorPse: 1;
212 UINT32 ProcessorTsc: 1;
213 UINT32 ProcessorMsr: 1;
214 UINT32 ProcessorPae: 1;
215 UINT32 ProcessorMce: 1;
216 UINT32 ProcessorCx8: 1;
217 UINT32 ProcessorApic: 1;
218 UINT32 ProcessorReserved1: 1;
219 UINT32 ProcessorSep: 1;
220 UINT32 ProcessorMtrr: 1;
221 UINT32 ProcessorPge: 1;
222 UINT32 ProcessorMca: 1;
223 UINT32 ProcessorCmov: 1;
224 UINT32 ProcessorPat: 1;
225 UINT32 ProcessorPse36: 1;
226 UINT32 ProcessorPsn: 1;
227 UINT32 ProcessorClfsh: 1;
228 UINT32 ProcessorReserved2: 1;
229 UINT32 ProcessorDs: 1;
230 UINT32 ProcessorAcpi: 1;
231 UINT32 ProcessorMmx: 1;
232 UINT32 ProcessorFxsr: 1;
233 UINT32 ProcessorSse: 1;
234 UINT32 ProcessorSse2: 1;
235 UINT32 ProcessorSs: 1;
236 UINT32 ProcessorReserved3: 1;
237 UINT32 ProcessorTm: 1;
238 UINT32 ProcessorReserved4: 2;
239 } EFI_PROCESSOR_FEATURE_FLAGS;
240
241 typedef struct {
242 EFI_PROCESSOR_SIGNATURE Signature;
243 EFI_PROCESSOR_MISC_INFO MiscInfo;
244 UINT32 Reserved;
245 EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;
246 } EFI_PROCESSOR_ID_DATA;
247
248 typedef enum {
249 EfiProcessorOther = 1,
250 EfiProcessorUnknown = 2,
251 EfiCentralProcessor = 3,
252 EfiMathProcessor = 4,
253 EfiDspProcessor = 5,
254 EfiVideoProcessor = 6
255 } EFI_PROCESSOR_TYPE_DATA;
256
257 typedef enum {
258 EfiProcessorFamilyOther = 1,
259 EfiProcessorFamilyUnknown = 2,
260 EfiProcessorFamily8086 = 3,
261 EfiProcessorFamily80286 = 4,
262 EfiProcessorFamilyIntel386 = 5,
263 EfiProcessorFamilyIntel486 = 6,
264 EfiProcessorFamily8087 = 7,
265 EfiProcessorFamily80287 = 8,
266 EfiProcessorFamily80387 = 9,
267 EfiProcessorFamily80487 = 0x0A,
268 EfiProcessorFamilyPentium = 0x0B,
269 EfiProcessorFamilyPentiumPro = 0x0C,
270 EfiProcessorFamilyPentiumII = 0x0D,
271 EfiProcessorFamilyPentiumMMX = 0x0E,
272 EfiProcessorFamilyCeleron = 0x0F,
273 EfiProcessorFamilyPentiumIIXeon = 0x10,
274 EfiProcessorFamilyPentiumIII = 0x11,
275 EfiProcessorFamilyM1 = 0x12,
276 EfiProcessorFamilyM1Reserved1 = 0x13,
277 EfiProcessorFamilyM1Reserved2 = 0x14,
278 EfiProcessorFamilyM1Reserved3 = 0x15,
279 EfiProcessorFamilyM1Reserved4 = 0x16,
280 EfiProcessorFamilyM1Reserved5 = 0x17,
281 EfiProcessorFamilyM1Reserved6 = 0x18,
282 EfiProcessorFamilyK5 = 0x19,
283 EfiProcessorFamilyK5Reserved1 = 0x1A,
284 EfiProcessorFamilyK5Reserved2 = 0x1B,
285 EfiProcessorFamilyK5Reserved3 = 0x1C,
286 EfiProcessorFamilyK5Reserved4 = 0x1D,
287 EfiProcessorFamilyK5Reserved5 = 0x1E,
288 EfiProcessorFamilyK5Reserved6 = 0x1F,
289 EfiProcessorFamilyPowerPC = 0x20,
290 EfiProcessorFamilyPowerPC601 = 0x21,
291 EfiProcessorFamilyPowerPC603 = 0x22,
292 EfiProcessorFamilyPowerPC603Plus = 0x23,
293 EfiProcessorFamilyPowerPC604 = 0x24,
294 EfiProcessorFamilyAlpha2 = 0x30,
295 EfiProcessorFamilyMips = 0x40,
296 EfiProcessorFamilySparc = 0x50,
297 EfiProcessorFamily68040 = 0x60,
298 EfiProcessorFamily68xxx = 0x61,
299 EfiProcessorFamily68000 = 0x62,
300 EfiProcessorFamily68010 = 0x63,
301 EfiProcessorFamily68020 = 0x64,
302 EfiProcessorFamily68030 = 0x65,
303 EfiProcessorFamilyHobbit = 0x70,
304 EfiProcessorFamilyWeitek = 0x80,
305 EfiProcessorFamilyPARISC = 0x90,
306 EfiProcessorFamilyV30 = 0xA0,
307 EfiProcessorFamilyPentiumIIIXeon = 0xB0,
308 EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,
309 EfiProcessorFamilyPentium4 = 0xB2,
310 EfiProcessorFamilyIntelXeon = 0xB3,
311 EfiProcessorFamilyAS400 = 0xB4,
312 EfiProcessorFamilyIntelXeonMP = 0xB5,
313 EfiProcessorFamilyAMDAthlonXP = 0xB6,
314 EfiProcessorFamilyAMDAthlonMP = 0xB7,
315 EfiProcessorFamilyIntelPentiumM = 0xB9,
316 EfiProcessorFamilyIntelCeleronD = 0xBA,
317 EfiProcessorFamilyIntelPentiumD = 0xBB,
318 EfiProcessorFamilyIntelPentiumEx = 0xBC,
319 EfiProcessorFamilyIBM390 = 0xC8,
320 EfiProcessorFamilyG4 = 0xC9,
321 EfiProcessorFamilyG5 = 0xCA,
322 EfiProcessorFamilyi860 = 0xFA,
323 EfiProcessorFamilyi960 = 0xFB
324 } EFI_PROCESSOR_FAMILY_DATA;
325
326 typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;
327
328 typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;
329
330 typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;
331
332 typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;
333
334 typedef enum {
335 EfiProcessorIa32Microcode = 1,
336 EfiProcessorIpfPalAMicrocode = 2,
337 EfiProcessorIpfPalBMicrocode = 3
338 } EFI_PROCESSOR_MICROCODE_TYPE;
339
340 typedef struct {
341 EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType;
342 UINT32 ProcessorMicrocodeRevisionNumber;
343 } EFI_PROCESSOR_MICROCODE_REVISION_DATA;
344
345 typedef struct {
346 UINT32 CpuStatus :3;
347 UINT32 Reserved1 :3;
348 UINT32 SocketPopulated :1;
349 UINT32 Reserved2 :1;
350 UINT32 ApicEnable :1;
351 UINT32 BootApplicationProcessor :1;
352 UINT32 Reserved3 :22;
353 } EFI_PROCESSOR_STATUS_DATA;
354
355 typedef enum {
356 EfiCpuStatusUnknown = 0,
357 EfiCpuStatusEnabled = 1,
358 EfiCpuStatusDisabledByUser = 2,
359 EfiCpuStatusDisabledbyBios = 3,
360 EfiCpuStatusIdle = 4,
361 EfiCpuStatusOther = 7
362 } EFI_CPU_STATUS;
363
364 typedef enum {
365 EfiProcessorSocketOther = 1,
366 EfiProcessorSocketUnknown = 2,
367 EfiProcessorSocketDaughterBoard = 3,
368 EfiProcessorSocketZIF = 4,
369 EfiProcessorSocketReplacePiggyBack = 5,
370 EfiProcessorSocketNone = 6,
371 EfiProcessorSocketLIF = 7,
372 EfiProcessorSocketSlot1 = 8,
373 EfiProcessorSocketSlot2 = 9,
374 EfiProcessorSocket370Pin = 0xA,
375 EfiProcessorSocketSlotA = 0xB,
376 EfiProcessorSocketSlotM = 0xC,
377 EfiProcessorSocket423 = 0xD,
378 EfiProcessorSocketA462 = 0xE,
379 EfiProcessorSocket478 = 0xF,
380 EfiProcessorSocket754 = 0x10,
381 EfiProcessorSocket940 = 0x11,
382 EfiProcessorSocket939 = 0x12,
383 EfiProcessorSocketmPGA604 = 0x13,
384 EfiProcessorSocketLGA771 = 0x14,
385 EfiProcessorSocketLGA775 = 0x15
386
387 } EFI_PROCESSOR_SOCKET_TYPE_DATA;
388
389 typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;
390
391 typedef EFI_INTER_LINK_DATA EFI_CACHE_ASSOCIATION_DATA;
392
393 typedef enum {
394 EfiProcessorHealthy = 1,
395 EfiProcessorPerfRestricted = 2,
396 EfiProcessorFuncRestricted = 3
397 } EFI_PROCESSOR_HEALTH_STATUS;
398
399 typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA;
400
401
402 typedef enum {
403 ProcessorCoreFrequencyRecordType = 1,
404 ProcessorFsbFrequencyRecordType = 2,
405 ProcessorVersionRecordType = 3,
406 ProcessorManufacturerRecordType = 4,
407 ProcessorSerialNumberRecordType = 5,
408 ProcessorIdRecordType = 6,
409 ProcessorTypeRecordType = 7,
410 ProcessorFamilyRecordType = 8,
411 ProcessorVoltageRecordType = 9,
412 ProcessorApicBaseAddressRecordType = 10,
413 ProcessorApicIdRecordType = 11,
414 ProcessorApicVersionNumberRecordType = 12,
415 CpuUcodeRevisionDataRecordType = 13,
416 ProcessorStatusRecordType = 14,
417 ProcessorSocketTypeRecordType = 15,
418 ProcessorSocketNameRecordType = 16,
419 CacheAssociationRecordType = 17,
420 ProcessorMaxCoreFrequencyRecordType = 18,
421 ProcessorAssetTagRecordType = 19,
422 ProcessorMaxFsbFrequencyRecordType = 20,
423 ProcessorPackageNumberRecordType = 21,
424 ProcessorCoreFrequencyListRecordType = 22,
425 ProcessorFsbFrequencyListRecordType = 23,
426 ProcessorHealthStatusRecordType = 24
427 } EFI_CPU_VARIABLE_RECORD_TYPE;
428
429 typedef union {
430 EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList;
431 EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList;
432 EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber;
433 EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency;
434 EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency;
435 EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency;
436 EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency;
437 EFI_PROCESSOR_VERSION_DATA ProcessorVersion;
438 EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer;
439 EFI_PROCESSOR_ID_DATA ProcessorId;
440 EFI_PROCESSOR_TYPE_DATA ProcessorType;
441 EFI_PROCESSOR_FAMILY_DATA ProcessorFamily;
442 EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage;
443 EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase;
444 EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId;
445 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber;
446 EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData;
447 EFI_PROCESSOR_STATUS_DATA ProcessorStatus;
448 EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType;
449 EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName;
450 EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag;
451 EFI_PROCESSOR_HEALTH_STATUS ProcessorHealthStatus;
452 EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber;
453 } EFI_CPU_VARIABLE_RECORD;
454
455 typedef struct {
456 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;
457 EFI_CPU_VARIABLE_RECORD VariableRecord;
458 } EFI_CPU_DATA_RECORD;
459
460 #define EFI_CACHE_SUBCLASS_VERSION 0x00010000
461
462 typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA;
463
464 typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA;
465
466 typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA;
467
468 typedef STRING_REF EFI_CACHE_SOCKET_DATA;
469
470 typedef struct {
471 UINT32 Other :1;
472 UINT32 Unknown :1;
473 UINT32 NonBurst :1;
474 UINT32 Burst :1;
475 UINT32 PipelineBurst :1;
476 UINT32 Asynchronous :1;
477 UINT32 Synchronous :1;
478 UINT32 Reserved :25;
479 } EFI_CACHE_SRAM_TYPE_DATA;
480
481 typedef EFI_CACHE_SRAM_TYPE_DATA EFI_CACHE_SRAM_INSTALL_DATA;
482
483 typedef enum {
484 EfiCacheErrorOther = 1,
485 EfiCacheErrorUnknown = 2,
486 EfiCacheErrorNone = 3,
487 EfiCacheErrorParity = 4,
488 EfiCacheErrorSingleBit = 5,
489 EfiCacheErrorMultiBit = 6
490 } EFI_CACHE_ERROR_TYPE_DATA;
491
492 typedef enum {
493 EfiCacheTypeOther = 1,
494 EfiCacheTypeUnknown = 2,
495 EfiCacheTypeInstruction = 3,
496 EfiCacheTypeData = 4,
497 EfiCacheTypeUnified = 5
498 } EFI_CACHE_TYPE_DATA;
499
500 typedef enum {
501 EfiCacheAssociativityOther = 1,
502 EfiCacheAssociativityUnknown = 2,
503 EfiCacheAssociativityDirectMapped = 3,
504 EfiCacheAssociativity2Way = 4,
505 EfiCacheAssociativity4Way = 5,
506 EfiCacheAssociativityFully = 6,
507 EfiCacheAssociativity8Way = 7,
508 EfiCacheAssociativity16Way = 8,
509 EfiCacheAssociativity24Way = 9
510 } EFI_CACHE_ASSOCIATIVITY_DATA;
511
512 typedef struct {
513 UINT32 Level :3;
514 UINT32 Socketed :1;
515 UINT32 Reserved2 :1;
516 UINT32 Location :2;
517 UINT32 Enable :1;
518 UINT32 OperationalMode :2;
519 UINT32 Reserved1 :22;
520 } EFI_CACHE_CONFIGURATION_DATA;
521
522 #define EFI_CACHE_L1 1
523 #define EFI_CACHE_L2 2
524 #define EFI_CACHE_L3 3
525 #define EFI_CACHE_L4 4
526 #define EFI_CACHE_LMAX EFI_CACHE_L4
527
528 #define EFI_CACHE_SOCKETED 1
529 #define EFI_CACHE_NOT_SOCKETED 0
530
531 typedef enum {
532 EfiCacheInternal = 0,
533 EfiCacheExternal = 1,
534 EfiCacheReserved = 2,
535 EfiCacheUnknown = 3
536 } EFI_CACHE_LOCATION;
537
538 #define EFI_CACHE_ENABLED 1
539 #define EFI_CACHE_DISABLED 0
540
541 typedef enum {
542 EfiCacheWriteThrough = 0,
543 EfiCacheWriteBack = 1,
544 EfiCacheDynamicMode = 2,
545 EfiCacheUnknownMode = 3
546 } EFI_CACHE_OPERATIONAL_MODE;
547
548
549
550 typedef enum {
551 CacheSizeRecordType = 1,
552 MaximumSizeCacheRecordType = 2,
553 CacheSpeedRecordType = 3,
554 CacheSocketRecordType = 4,
555 CacheSramTypeRecordType = 5,
556 CacheInstalledSramTypeRecordType = 6,
557 CacheErrorTypeRecordType = 7,
558 CacheTypeRecordType = 8,
559 CacheAssociativityRecordType = 9,
560 CacheConfigRecordType = 10
561 } EFI_CACHE_VARIABLE_RECORD_TYPE;
562
563
564 typedef union {
565 EFI_CACHE_SIZE_DATA CacheSize;
566 EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize;
567 EFI_CACHE_SPEED_DATA CacheSpeed;
568 EFI_CACHE_SOCKET_DATA CacheSocket;
569 EFI_CACHE_SRAM_TYPE_DATA CacheSramType;
570 EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType;
571 EFI_CACHE_ERROR_TYPE_DATA CacheErrorType;
572 EFI_CACHE_TYPE_DATA CacheType;
573 EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity;
574 EFI_CACHE_CONFIGURATION_DATA CacheConfig;
575 EFI_CACHE_ASSOCIATION_DATA CacheAssociation;
576 } EFI_CACHE_VARIABLE_RECORD;
577
578 typedef struct {
579 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;
580 EFI_CACHE_VARIABLE_RECORD VariableRecord;
581 } EFI_CACHE_DATA_RECORD;
582
583 #define EFI_MEMORY_SUBCLASS_VERSION 0x0100
584
585
586 #define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001
587
588 typedef enum _EFI_MEMORY_REGION_TYPE {
589 EfiMemoryRegionMemory = 0x01,
590 EfiMemoryRegionReserved = 0x02,
591 EfiMemoryRegionAcpi = 0x03,
592 EfiMemoryRegionNvs = 0x04
593 } EFI_MEMORY_REGION_TYPE;
594
595 typedef struct {
596 UINT32 ProcessorNumber;
597 UINT16 StartBusNumber;
598 UINT16 EndBusNumber;
599 EFI_MEMORY_REGION_TYPE MemoryRegionType;
600 EFI_EXP_BASE2_DATA MemorySize;
601 EFI_PHYSICAL_ADDRESS MemoryStartAddress;
602 } EFI_MEMORY_SIZE_DATA;
603
604
605 #define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002
606
607 typedef enum _EFI_MEMORY_ARRAY_LOCATION {
608 EfiMemoryArrayLocationOther = 0x01,
609 EfiMemoryArrayLocationUnknown = 0x02,
610 EfiMemoryArrayLocationSystemBoard = 0x03,
611 EfiMemoryArrayLocationIsaAddonCard = 0x04,
612 EfiMemoryArrayLocationEisaAddonCard = 0x05,
613 EfiMemoryArrayLocationPciAddonCard = 0x06,
614 EfiMemoryArrayLocationMcaAddonCard = 0x07,
615 EfiMemoryArrayLocationPcmciaAddonCard = 0x08,
616 EfiMemoryArrayLocationProprietaryAddonCard = 0x09,
617 EfiMemoryArrayLocationNuBus = 0x0A,
618 EfiMemoryArrayLocationPc98C20AddonCard = 0xA0,
619 EfiMemoryArrayLocationPc98C24AddonCard = 0xA1,
620 EfiMemoryArrayLocationPc98EAddonCard = 0xA2,
621 EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3
622 } EFI_MEMORY_ARRAY_LOCATION;
623
624 typedef enum _EFI_MEMORY_ARRAY_USE {
625 EfiMemoryArrayUseOther = 0x01,
626 EfiMemoryArrayUseUnknown = 0x02,
627 EfiMemoryArrayUseSystemMemory = 0x03,
628 EfiMemoryArrayUseVideoMemory = 0x04,
629 EfiMemoryArrayUseFlashMemory = 0x05,
630 EfiMemoryArrayUseNonVolatileRam = 0x06,
631 EfiMemoryArrayUseCacheMemory = 0x07,
632 } EFI_MEMORY_ARRAY_USE;
633
634 typedef enum _EFI_MEMORY_ERROR_CORRECTION {
635 EfiMemoryErrorCorrectionOther = 0x01,
636 EfiMemoryErrorCorrectionUnknown = 0x02,
637 EfiMemoryErrorCorrectionNone = 0x03,
638 EfiMemoryErrorCorrectionParity = 0x04,
639 EfiMemoryErrorCorrectionSingleBitEcc = 0x05,
640 EfiMemoryErrorCorrectionMultiBitEcc = 0x06,
641 EfiMemoryErrorCorrectionCrc = 0x07,
642 } EFI_MEMORY_ERROR_CORRECTION;
643
644 typedef struct {
645 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;
646 EFI_MEMORY_ARRAY_USE MemoryArrayUse;
647 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;
648 EFI_EXP_BASE2_DATA MaximumMemoryCapacity;
649 UINT16 NumberMemoryDevices;
650 } EFI_MEMORY_ARRAY_LOCATION_DATA;
651
652
653 #define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003
654
655 typedef enum _EFI_MEMORY_FORM_FACTOR {
656 EfiMemoryFormFactorOther = 0x01,
657 EfiMemoryFormFactorUnknown = 0x02,
658 EfiMemoryFormFactorSimm = 0x03,
659 EfiMemoryFormFactorSip = 0x04,
660 EfiMemoryFormFactorChip = 0x05,
661 EfiMemoryFormFactorDip = 0x06,
662 EfiMemoryFormFactorZip = 0x07,
663 EfiMemoryFormFactorProprietaryCard = 0x08,
664 EfiMemoryFormFactorDimm = 0x09,
665 EfiMemoryFormFactorTsop = 0x0A,
666 EfiMemoryFormFactorRowOfChips = 0x0B,
667 EfiMemoryFormFactorRimm = 0x0C,
668 EfiMemoryFormFactorSodimm = 0x0D,
669 EfiMemoryFormFactorSrimm = 0x0E,
670 EfiMemoryFormFactorFbDimm = 0x0F
671 } EFI_MEMORY_FORM_FACTOR;
672
673 typedef enum _EFI_MEMORY_ARRAY_TYPE {
674 EfiMemoryTypeOther = 0x01,
675 EfiMemoryTypeUnknown = 0x02,
676 EfiMemoryTypeDram = 0x03,
677 EfiMemoryTypeEdram = 0x04,
678 EfiMemoryTypeVram = 0x05,
679 EfiMemoryTypeSram = 0x06,
680 EfiMemoryTypeRam = 0x07,
681 EfiMemoryTypeRom = 0x08,
682 EfiMemoryTypeFlash = 0x09,
683 EfiMemoryTypeEeprom = 0x0A,
684 EfiMemoryTypeFeprom = 0x0B,
685 EfiMemoryTypeEprom = 0x0C,
686 EfiMemoryTypeCdram = 0x0D,
687 EfiMemoryType3Dram = 0x0E,
688 EfiMemoryTypeSdram = 0x0F,
689 EfiMemoryTypeSgram = 0x10,
690 EfiMemoryTypeRdram = 0x11,
691 EfiMemoryTypeDdr = 0x12,
692 EfiMemoryTypeDdr2 = 0x13,
693 EfiMemoryTypeDdr2FbDimm = 0x14
694 } EFI_MEMORY_ARRAY_TYPE;
695
696 typedef struct {
697 UINT32 Reserved :1;
698 UINT32 Other :1;
699 UINT32 Unknown :1;
700 UINT32 FastPaged :1;
701 UINT32 StaticColumn :1;
702 UINT32 PseudoStatic :1;
703 UINT32 Rambus :1;
704 UINT32 Synchronous :1;
705 UINT32 Cmos :1;
706 UINT32 Edo :1;
707 UINT32 WindowDram :1;
708 UINT32 CacheDram :1;
709 UINT32 Nonvolatile :1;
710 UINT32 Reserved1 :19;
711 } EFI_MEMORY_TYPE_DETAIL;
712
713 typedef enum {
714 EfiMemoryStateEnabled = 0,
715 EfiMemoryStateUnknown = 1,
716 EfiMemoryStateUnsupported = 2,
717 EfiMemoryStateError = 3,
718 EfiMemoryStateAbsent = 4,
719 EfiMemoryStateDisabled = 5,
720 EfiMemoryStatePartial = 6
721 } EFI_MEMORY_STATE;
722
723 typedef struct {
724 STRING_REF MemoryDeviceLocator;
725 STRING_REF MemoryBankLocator;
726 STRING_REF MemoryManufacturer;
727 STRING_REF MemorySerialNumber;
728 STRING_REF MemoryAssetTag;
729 STRING_REF MemoryPartNumber;
730 EFI_INTER_LINK_DATA MemoryArrayLink;
731 EFI_INTER_LINK_DATA MemorySubArrayLink;
732 UINT16 MemoryTotalWidth;
733 UINT16 MemoryDataWidth;
734 EFI_EXP_BASE2_DATA MemoryDeviceSize;
735 EFI_MEMORY_FORM_FACTOR MemoryFormFactor;
736 UINT8 MemoryDeviceSet;
737 EFI_MEMORY_ARRAY_TYPE MemoryType;
738 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;
739 EFI_EXP_BASE10_DATA MemorySpeed;
740 EFI_MEMORY_STATE MemoryState;
741 } EFI_MEMORY_ARRAY_LINK_DATA;
742
743
744 #define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004
745
746 typedef struct {
747 EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress;
748 EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress;
749 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;
750 UINT16 MemoryArrayPartitionWidth;
751 } EFI_MEMORY_ARRAY_START_ADDRESS_DATA;
752
753
754 #define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005
755
756 typedef struct {
757 EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress;
758 EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress;
759 EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink;
760 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;
761 UINT8 MemoryDevicePartitionRowPosition;
762 UINT8 MemoryDeviceInterleavePosition;
763 UINT8 MemoryDeviceInterleaveDataDepth;
764 } EFI_MEMORY_DEVICE_START_ADDRESS_DATA;
765
766
767 //
768 // Memory. Channel Device Type - SMBIOS Type 37
769 //
770
771 #define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006
772
773 typedef enum _EFI_MEMORY_CHANNEL_TYPE {
774 EfiMemoryChannelTypeOther = 1,
775 EfiMemoryChannelTypeUnknown = 2,
776 EfiMemoryChannelTypeRambus = 3,
777 EfiMemoryChannelTypeSyncLink = 4
778 } EFI_MEMORY_CHANNEL_TYPE;
779
780 typedef struct {
781 EFI_MEMORY_CHANNEL_TYPE MemoryChannelType;
782 UINT8 MemoryChannelMaximumLoad;
783 UINT8 MemoryChannelDeviceCount;
784 } EFI_MEMORY_CHANNEL_TYPE_DATA;
785
786 #define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007
787
788 typedef struct {
789 UINT8 DeviceId;
790 EFI_INTER_LINK_DATA DeviceLink;
791 UINT8 MemoryChannelDeviceLoad;
792 } EFI_MEMORY_CHANNEL_DEVICE_DATA;
793
794 //
795 // Memory. Controller Information - SMBIOS Type 5
796 //
797 #define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008
798
799 typedef enum {
800 EfiErrorDetectingMethodOther = 1,
801 EfiErrorDetectingMethodUnknown = 2,
802 EfiErrorDetectingMethodNone = 3,
803 EfiErrorDetectingMethodParity = 4,
804 EfiErrorDetectingMethod32Ecc = 5,
805 EfiErrorDetectingMethod64Ecc = 6,
806 EfiErrorDetectingMethod128Ecc = 7,
807 EfiErrorDetectingMethodCrc = 8
808 } EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;
809
810 typedef struct {
811 UINT8 Other :1;
812 UINT8 Unknown :1;
813 UINT8 None :1;
814 UINT8 SingleBitErrorCorrect :1;
815 UINT8 DoubleBitErrorCorrect :1;
816 UINT8 ErrorScrubbing :1;
817 UINT8 Reserved :2;
818 } EFI_MEMORY_ERROR_CORRECT_CAPABILITY;
819
820 typedef enum {
821 EfiMemoryInterleaveOther = 1,
822 EfiMemoryInterleaveUnknown = 2,
823 EfiMemoryInterleaveOneWay = 3,
824 EfiMemoryInterleaveTwoWay = 4,
825 EfiMemoryInterleaveFourWay = 5,
826 EfiMemoryInterleaveEightWay = 6,
827 EfiMemoryInterleaveSixteenWay = 7
828 } EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;
829
830 typedef struct {
831 UINT16 Other :1;
832 UINT16 Unknown :1;
833 UINT16 SeventyNs :1;
834 UINT16 SixtyNs :1;
835 UINT16 FiftyNs :1;
836 UINT16 Reserved :11;
837 } EFI_MEMORY_SPEED_TYPE;
838
839 typedef struct {
840 UINT16 Other :1;
841 UINT16 Unknown :1;
842 UINT16 Standard :1;
843 UINT16 FastPageMode :1;
844 UINT16 EDO :1;
845 UINT16 Parity :1;
846 UINT16 ECC :1;
847 UINT16 SIMM :1;
848 UINT16 DIMM :1;
849 UINT16 BurstEdo :1;
850 UINT16 SDRAM :1;
851 UINT16 Reserved :5;
852 } EFI_MEMORY_SUPPORTED_TYPE;
853
854 typedef struct {
855 UINT8 Five :1;
856 UINT8 There :1;
857 UINT8 Two :1;
858 UINT8 Reserved :5;
859 } EFI_MEMORY_MODULE_VOLTAGE_TYPE;
860
861 typedef struct {
862 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;
863 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;
864 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;
865 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;
866 UINT8 MaxMemoryModuleSize;
867 EFI_MEMORY_SPEED_TYPE MemorySpeedType;
868 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;
869 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;
870 UINT8 NumberofMemorySlot;
871 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;
872 UINT16 *MemoryModuleConfigHandles;
873 } EFI_MEMORY_CONTROLLER_INFORMATION;
874
875 //
876 // Memory. Error Information - SMBIOS Type 18
877 //
878 #define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009
879
880 typedef enum {
881 EfiMemoryErrorOther = 1,
882 EfiMemoryErrorUnknown = 2,
883 EfiMemoryErrorOk = 3,
884 EfiMemoryErrorBadRead = 4,
885 EfiMemoryErrorParity = 5,
886 EfiMemoryErrorSigleBit = 6,
887 EfiMemoryErrorDoubleBit = 7,
888 EfiMemoryErrorMultiBit = 8,
889 EfiMemoryErrorNibble = 9,
890 EfiMemoryErrorChecksum = 10,
891 EfiMemoryErrorCrc = 11,
892 EfiMemoryErrorCorrectSingleBit = 12,
893 EfiMemoryErrorCorrected = 13,
894 EfiMemoryErrorUnCorrectable = 14
895 } EFI_MEMORY_ERROR_TYPE;
896
897 typedef enum {
898 EfiMemoryGranularityOther = 1,
899 EfiMemoryGranularityOtherUnknown = 2,
900 EfiMemoryGranularityDeviceLevel = 3,
901 EfiMemoryGranularityMemPartitionLevel = 4
902 } EFI_MEMORY_ERROR_GRANULARITY_TYPE;
903
904 typedef enum {
905 EfiMemoryErrorOperationOther = 1,
906 EfiMemoryErrorOperationUnknown = 2,
907 EfiMemoryErrorOperationRead = 3,
908 EfiMemoryErrorOperationWrite = 4,
909 EfiMemoryErrorOperationPartialWrite = 5
910 } EFI_MEMORY_ERROR_OPERATION_TYPE;
911
912 typedef struct {
913 EFI_MEMORY_ERROR_TYPE MemoryErrorType;
914 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;
915 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;
916 UINT32 VendorSyndrome;
917 UINT32 MemoryArrayErrorAddress;
918 UINT32 DeviceErrorAddress;
919 UINT32 DeviceErrorResolution;
920 } EFI_MEMORY_32BIT_ERROR_INFORMATION;
921
922 //
923 // Memory. Error Information - SMBIOS Type 33
924 //
925 #define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A
926
927 typedef struct {
928 EFI_MEMORY_ERROR_TYPE MemoryErrorType;
929 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;
930 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;
931 UINT32 VendorSyndrome;
932 UINT64 MemoryArrayErrorAddress;
933 UINT64 DeviceErrorAddress;
934 UINT32 DeviceErrorResolution;
935 } EFI_MEMORY_64BIT_ERROR_INFORMATION;
936
937 typedef union _EFI_MEMORY_SUBCLASS_RECORDS {
938 EFI_MEMORY_SIZE_DATA SizeData;
939 EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData;
940 EFI_MEMORY_ARRAY_LINK_DATA ArrayLink;
941 EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress;
942 EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress;
943 EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData;
944 EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData;
945 EFI_MEMORY_CONTROLLER_INFORMATION MemoryControllerInfo;
946 EFI_MEMORY_32BIT_ERROR_INFORMATION Memory32bitErrorInfo;
947 EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo;
948 } EFI_MEMORY_SUBCLASS_RECORDS;
949
950 typedef struct {
951 EFI_SUBCLASS_TYPE1_HEADER Header;
952 EFI_MEMORY_SUBCLASS_RECORDS Record;
953 } EFI_MEMORY_SUBCLASS_DRIVER_DATA;
954
955 #define EFI_MISC_SUBCLASS_VERSION 0x0100
956
957 #pragma pack(1)
958 //
959 //////////////////////////////////////////////////////////////////////////////
960 //
961 // Last PCI Bus Number
962 //
963 #define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001
964
965 typedef struct {
966 UINT8 LastPciBus;
967 } EFI_MISC_LAST_PCI_BUS_DATA;
968
969 //
970 //////////////////////////////////////////////////////////////////////////////
971 //
972 // Misc. BIOS Vendor - SMBIOS Type 0
973 //
974 #define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002
975
976 typedef struct {
977 UINT64 Reserved1 :2;
978 UINT64 Unknown :1;
979 UINT64 BiosCharacteristicsNotSupported :1;
980 UINT64 IsaIsSupported :1;
981 UINT64 McaIsSupported :1;
982 UINT64 EisaIsSupported :1;
983 UINT64 PciIsSupported :1;
984 UINT64 PcmciaIsSupported :1;
985 UINT64 PlugAndPlayIsSupported :1;
986 UINT64 ApmIsSupported :1;
987 UINT64 BiosIsUpgradable :1;
988 UINT64 BiosShadowingAllowed :1;
989 UINT64 VlVesaIsSupported :1;
990 UINT64 EscdSupportIsAvailable :1;
991 UINT64 BootFromCdIsSupported :1;
992 UINT64 SelectableBootIsSupported :1;
993 UINT64 RomBiosIsSocketed :1;
994 UINT64 BootFromPcmciaIsSupported :1;
995 UINT64 EDDSpecificationIsSupported :1;
996 UINT64 JapaneseNecFloppyIsSupported :1;
997 UINT64 JapaneseToshibaFloppyIsSupported :1;
998 UINT64 Floppy525_360IsSupported :1;
999 UINT64 Floppy525_12IsSupported :1;
1000 UINT64 Floppy35_720IsSupported :1;
1001 UINT64 Floppy35_288IsSupported :1;
1002 UINT64 PrintScreenIsSupported :1;
1003 UINT64 Keyboard8042IsSupported :1;
1004 UINT64 SerialIsSupported :1;
1005 UINT64 PrinterIsSupported :1;
1006 UINT64 CgaMonoIsSupported :1;
1007 UINT64 NecPc98 :1;
1008 UINT64 AcpiIsSupported :1;
1009 UINT64 UsbLegacyIsSupported :1;
1010 UINT64 AgpIsSupported :1;
1011 UINT64 I20BootIsSupported :1;
1012 UINT64 Ls120BootIsSupported :1;
1013 UINT64 AtapiZipDriveBootIsSupported :1;
1014 UINT64 Boot1394IsSupported :1;
1015 UINT64 SmartBatteryIsSupported :1;
1016 UINT64 BiosBootSpecIsSupported :1;
1017 UINT64 FunctionKeyNetworkBootIsSupported :1;
1018 UINT64 Reserved :22;
1019 } EFI_MISC_BIOS_CHARACTERISTICS;
1020
1021 typedef struct {
1022 UINT64 BiosReserved :16;
1023 UINT64 SystemReserved :16;
1024 UINT64 Reserved :32;
1025 } EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;
1026
1027 typedef struct {
1028 STRING_REF BiosVendor;
1029 STRING_REF BiosVersion;
1030 STRING_REF BiosReleaseDate;
1031 EFI_PHYSICAL_ADDRESS BiosStartingAddress;
1032 EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize;
1033 EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1;
1034 EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION BiosCharacteristics2;
1035 UINT8 BiosMajorRelease;
1036 UINT8 BiosMinorRelease;
1037 UINT8 BiosEmbeddedFirmwareMajorRelease;
1038 UINT8 BiosEmbeddedFirmwareMinorRelease;
1039 } EFI_MISC_BIOS_VENDOR_DATA;
1040
1041 //
1042 //////////////////////////////////////////////////////////////////////////////
1043 //
1044 // Misc. System Manufacturer - SMBIOS Type 1
1045 //
1046 #define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003
1047
1048 typedef enum {
1049 EfiSystemWakeupTypeReserved = 0,
1050 EfiSystemWakeupTypeOther = 1,
1051 EfiSystemWakeupTypeUnknown = 2,
1052 EfiSystemWakeupTypeApmTimer = 3,
1053 EfiSystemWakeupTypeModemRing = 4,
1054 EfiSystemWakeupTypeLanRemote = 5,
1055 EfiSystemWakeupTypePowerSwitch = 6,
1056 EfiSystemWakeupTypePciPme = 7,
1057 EfiSystemWakeupTypeAcPowerRestored = 8,
1058 } EFI_MISC_SYSTEM_WAKEUP_TYPE;
1059
1060 typedef struct {
1061 STRING_REF SystemManufacturer;
1062 STRING_REF SystemProductName;
1063 STRING_REF SystemVersion;
1064 STRING_REF SystemSerialNumber;
1065 EFI_GUID SystemUuid;
1066 EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType;
1067 STRING_REF SystemSKUNumber;
1068 STRING_REF SystemFamily;
1069 } EFI_MISC_SYSTEM_MANUFACTURER_DATA;
1070
1071 //
1072 //////////////////////////////////////////////////////////////////////////////
1073 //
1074 // Misc. Base Board Manufacturer - SMBIOS Type 2
1075 //
1076 #define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004
1077
1078 typedef struct {
1079 UINT32 Motherboard :1;
1080 UINT32 RequiresDaughterCard :1;
1081 UINT32 Removable :1;
1082 UINT32 Replaceable :1;
1083 UINT32 HotSwappable :1;
1084 UINT32 Reserved :27;
1085 } EFI_BASE_BOARD_FEATURE_FLAGS;
1086
1087 typedef enum {
1088 EfiBaseBoardTypeUnknown = 1,
1089 EfiBaseBoardTypeOther = 2,
1090 EfiBaseBoardTypeServerBlade = 3,
1091 EfiBaseBoardTypeConnectivitySwitch = 4,
1092 EfiBaseBoardTypeSystemManagementModule = 5,
1093 EfiBaseBoardTypeProcessorModule = 6,
1094 EfiBaseBoardTypeIOModule = 7,
1095 EfiBaseBoardTypeMemoryModule = 8,
1096 EfiBaseBoardTypeDaughterBoard = 9,
1097 EfiBaseBoardTypeMotherBoard = 0xA,
1098 EfiBaseBoardTypeProcessorMemoryModule = 0xB,
1099 EfiBaseBoardTypeProcessorIOModule = 0xC,
1100 EfiBaseBoardTypeInterconnectBoard = 0xD,
1101 } EFI_BASE_BOARD_TYPE;
1102
1103 typedef struct {
1104 STRING_REF BaseBoardManufacturer;
1105 STRING_REF BaseBoardProductName;
1106 STRING_REF BaseBoardVersion;
1107 STRING_REF BaseBoardSerialNumber;
1108 STRING_REF BaseBoardAssetTag;
1109 STRING_REF BaseBoardChassisLocation;
1110 EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags;
1111 EFI_BASE_BOARD_TYPE BaseBoardType;
1112 EFI_INTER_LINK_DATA BaseBoardChassisLink;
1113 UINT32 BaseBoardNumberLinks;
1114 EFI_INTER_LINK_DATA LinkN;
1115 } EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;
1116
1117 //
1118 //////////////////////////////////////////////////////////////////////////////
1119 //
1120 // Misc. System/Chassis Enclosure - SMBIOS Type 3
1121 //
1122 #define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005
1123
1124 typedef enum {
1125 EfiMiscChassisTypeOther = 0x1,
1126 EfiMiscChassisTypeUnknown = 0x2,
1127 EfiMiscChassisTypeDeskTop = 0x3,
1128 EfiMiscChassisTypeLowProfileDesktop = 0x4,
1129 EfiMiscChassisTypePizzaBox = 0x5,
1130 EfiMiscChassisTypeMiniTower = 0x6,
1131 EfiMiscChassisTypeTower = 0x7,
1132 EfiMiscChassisTypePortable = 0x8,
1133 EfiMiscChassisTypeLapTop = 0x9,
1134 EfiMiscChassisTypeNotebook = 0xA,
1135 EfiMiscChassisTypeHandHeld = 0xB,
1136 EfiMiscChassisTypeDockingStation = 0xC,
1137 EfiMiscChassisTypeAllInOne = 0xD,
1138 EfiMiscChassisTypeSubNotebook = 0xE,
1139 EfiMiscChassisTypeSpaceSaving = 0xF,
1140 EfiMiscChassisTypeLunchBox = 0x10,
1141 EfiMiscChassisTypeMainServerChassis = 0x11,
1142 EfiMiscChassisTypeExpansionChassis = 0x12,
1143 EfiMiscChassisTypeSubChassis = 0x13,
1144 EfiMiscChassisTypeBusExpansionChassis = 0x14,
1145 EfiMiscChassisTypePeripheralChassis = 0x15,
1146 EfiMiscChassisTypeRaidChassis = 0x16,
1147 EfiMiscChassisTypeRackMountChassis = 0x17,
1148 EfiMiscChassisTypeSealedCasePc = 0x18,
1149 EfiMiscChassisMultiSystemChassis = 0x19,
1150 } EFI_MISC_CHASSIS_TYPE;
1151
1152 typedef struct {
1153 UINT32 ChassisType :16;
1154 UINT32 ChassisLockPresent:1;
1155 UINT32 Reserved :15;
1156 } EFI_MISC_CHASSIS_STATUS;
1157
1158 typedef enum {
1159 EfiChassisStateOther = 0x01,
1160 EfiChassisStateUnknown = 0x02,
1161 EfiChassisStateSafe = 0x03,
1162 EfiChassisStateWarning = 0x04,
1163 EfiChassisStateCritical = 0x05,
1164 EfiChassisStateNonRecoverable = 0x06,
1165 } EFI_MISC_CHASSIS_STATE;
1166
1167 typedef enum {
1168 EfiChassisSecurityStatusOther = 0x01,
1169 EfiChassisSecurityStatusUnknown = 0x02,
1170 EfiChassisSecurityStatusNone = 0x03,
1171 EfiChassisSecurityStatusExternalInterfaceLockedOut = 0x04,
1172 EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05,
1173 } EFI_MISC_CHASSIS_SECURITY_STATE;
1174
1175 typedef struct {
1176 UINT32 RecordType :1;
1177 UINT32 Reserved :24;
1178 } EFI_MISC_ELEMENT_TYPE;
1179
1180 typedef struct {
1181 EFI_MISC_ELEMENT_TYPE ChassisElementType;
1182 EFI_INTER_LINK_DATA ChassisElementStructure;
1183 EFI_BASE_BOARD_TYPE ChassisBaseBoard;
1184 UINT32 ChassisElementMinimum;
1185 UINT32 ChassisElementMaximum;
1186 } EFI_MISC_ELEMENTS;
1187
1188 typedef struct {
1189 STRING_REF ChassisManufacturer;
1190 STRING_REF ChassisVersion;
1191 STRING_REF ChassisSerialNumber;
1192 STRING_REF ChassisAssetTag;
1193 EFI_MISC_CHASSIS_STATUS ChassisType;
1194 EFI_MISC_CHASSIS_STATE ChassisBootupState;
1195 EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState;
1196 EFI_MISC_CHASSIS_STATE ChassisThermalState;
1197 EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;
1198 UINT32 ChassisOemDefined;
1199 UINT32 ChassisHeight;
1200 UINT32 ChassisNumberPowerCords;
1201 UINT32 ChassisElementCount;
1202 UINT32 ChassisElementRecordLength;//
1203 EFI_MISC_ELEMENTS ChassisElements;
1204 } EFI_MISC_CHASSIS_MANUFACTURER_DATA;
1205
1206 //
1207 //////////////////////////////////////////////////////////////////////////////
1208 //
1209 // Misc. Port Connector Information - SMBIOS Type 8
1210 //
1211 #define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006
1212
1213 typedef enum {
1214 EfiPortConnectorTypeNone = 0x00,
1215 EfiPortConnectorTypeCentronics = 0x01,
1216 EfiPortConnectorTypeMiniCentronics = 0x02,
1217 EfiPortConnectorTypeProprietary = 0x03,
1218 EfiPortConnectorTypeDB25Male = 0x04,
1219 EfiPortConnectorTypeDB25Female = 0x05,
1220 EfiPortConnectorTypeDB15Male = 0x06,
1221 EfiPortConnectorTypeDB15Female = 0x07,
1222 EfiPortConnectorTypeDB9Male = 0x08,
1223 EfiPortConnectorTypeDB9Female = 0x09,
1224 EfiPortConnectorTypeRJ11 = 0x0A,
1225 EfiPortConnectorTypeRJ45 = 0x0B,
1226 EfiPortConnectorType50PinMiniScsi = 0x0C,
1227 EfiPortConnectorTypeMiniDin = 0x0D,
1228 EfiPortConnectorTypeMicriDin = 0x0E,
1229 EfiPortConnectorTypePS2 = 0x0F,
1230 EfiPortConnectorTypeInfrared = 0x10,
1231 EfiPortConnectorTypeHpHil = 0x11,
1232 EfiPortConnectorTypeUsb = 0x12,
1233 EfiPortConnectorTypeSsaScsi = 0x13,
1234 EfiPortConnectorTypeCircularDin8Male = 0x14,
1235 EfiPortConnectorTypeCircularDin8Female = 0x15,
1236 EfiPortConnectorTypeOnboardIde = 0x16,
1237 EfiPortConnectorTypeOnboardFloppy = 0x17,
1238 EfiPortConnectorType9PinDualInline = 0x18,
1239 EfiPortConnectorType25PinDualInline = 0x19,
1240 EfiPortConnectorType50PinDualInline = 0x1A,
1241 EfiPortConnectorType68PinDualInline = 0x1B,
1242 EfiPortConnectorTypeOnboardSoundInput = 0x1C,
1243 EfiPortConnectorTypeMiniCentronicsType14 = 0x1D,
1244 EfiPortConnectorTypeMiniCentronicsType26 = 0x1E,
1245 EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F,
1246 EfiPortConnectorTypeBNC = 0x20,
1247 EfiPortConnectorType1394 = 0x21,
1248 EfiPortConnectorTypePC98 = 0xA0,
1249 EfiPortConnectorTypePC98Hireso = 0xA1,
1250 EfiPortConnectorTypePCH98 = 0xA2,
1251 EfiPortConnectorTypePC98Note = 0xA3,
1252 EfiPortConnectorTypePC98Full = 0xA4,
1253 EfiPortConnectorTypeOther = 0xFF,
1254 } EFI_MISC_PORT_CONNECTOR_TYPE;
1255
1256 typedef enum {
1257 EfiPortTypeNone = 0x00,
1258 EfiPortTypeParallelXtAtCompatible = 0x01,
1259 EfiPortTypeParallelPortPs2 = 0x02,
1260 EfiPortTypeParallelPortEcp = 0x03,
1261 EfiPortTypeParallelPortEpp = 0x04,
1262 EfiPortTypeParallelPortEcpEpp = 0x05,
1263 EfiPortTypeSerialXtAtCompatible = 0x06,
1264 EfiPortTypeSerial16450Compatible = 0x07,
1265 EfiPortTypeSerial16550Compatible = 0x08,
1266 EfiPortTypeSerial16550ACompatible = 0x09,
1267 EfiPortTypeScsi = 0x0A,
1268 EfiPortTypeMidi = 0x0B,
1269 EfiPortTypeJoyStick = 0x0C,
1270 EfiPortTypeKeyboard = 0x0D,
1271 EfiPortTypeMouse = 0x0E,
1272 EfiPortTypeSsaScsi = 0x0F,
1273 EfiPortTypeUsb = 0x10,
1274 EfiPortTypeFireWire = 0x11,
1275 EfiPortTypePcmciaTypeI = 0x12,
1276 EfiPortTypePcmciaTypeII = 0x13,
1277 EfiPortTypePcmciaTypeIII = 0x14,
1278 EfiPortTypeCardBus = 0x15,
1279 EfiPortTypeAccessBusPort = 0x16,
1280 EfiPortTypeScsiII = 0x17,
1281 EfiPortTypeScsiWide = 0x18,
1282 EfiPortTypePC98 = 0x19,
1283 EfiPortTypePC98Hireso = 0x1A,
1284 EfiPortTypePCH98 = 0x1B,
1285 EfiPortTypeVideoPort = 0x1C,
1286 EfiPortTypeAudioPort = 0x1D,
1287 EfiPortTypeModemPort = 0x1E,
1288 EfiPortTypeNetworkPort = 0x1F,
1289 EfiPortType8251Compatible = 0xA0,
1290 EfiPortType8251FifoCompatible = 0xA1,
1291 EfiPortTypeOther = 0xFF,
1292 } EFI_MISC_PORT_TYPE;
1293
1294 typedef struct {
1295 STRING_REF PortInternalConnectorDesignator;
1296 STRING_REF PortExternalConnectorDesignator;
1297 EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType;
1298 EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType;
1299 EFI_MISC_PORT_TYPE PortType;
1300 EFI_MISC_PORT_DEVICE_PATH PortPath;
1301 } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;
1302
1303 //
1304 //////////////////////////////////////////////////////////////////////////////
1305 //
1306 // Misc. System Slots - SMBIOS Type 9
1307 //
1308 #define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007
1309
1310 typedef enum {
1311 EfiSlotTypeOther = 0x01,
1312 EfiSlotTypeUnknown = 0x02,
1313 EfiSlotTypeIsa = 0x03,
1314 EfiSlotTypeMca = 0x04,
1315 EfiSlotTypeEisa = 0x05,
1316 EfiSlotTypePci = 0x06,
1317 EfiSlotTypePcmcia = 0x07,
1318 EfiSlotTypeVlVesa = 0x08,
1319 EfiSlotTypeProprietary = 0x09,
1320 EfiSlotTypeProcessorCardSlot = 0x0A,
1321 EfiSlotTypeProprietaryMemoryCardSlot = 0x0B,
1322 EfiSlotTypeIORiserCardSlot = 0x0C,
1323 EfiSlotTypeNuBus = 0x0D,
1324 EfiSlotTypePci66MhzCapable = 0x0E,
1325 EfiSlotTypeAgp = 0x0F,
1326 EfiSlotTypeApg2X = 0x10,
1327 EfiSlotTypeAgp4X = 0x11,
1328 EfiSlotTypePciX = 0x12,
1329 EfiSlotTypeAgp4x = 0x13,
1330 EfiSlotTypePC98C20 = 0xA0,
1331 EfiSlotTypePC98C24 = 0xA1,
1332 EfiSlotTypePC98E = 0xA2,
1333 EfiSlotTypePC98LocalBus = 0xA3,
1334 EfiSlotTypePC98Card = 0xA4,
1335 EfiSlotTypePciExpress = 0xA5
1336 } EFI_MISC_SLOT_TYPE;
1337
1338 typedef enum {
1339 EfiSlotDataBusWidthOther = 0x01,
1340 EfiSlotDataBusWidthUnknown = 0x02,
1341 EfiSlotDataBusWidth8Bit = 0x03,
1342 EfiSlotDataBusWidth16Bit = 0x04,
1343 EfiSlotDataBusWidth32Bit = 0x05,
1344 EfiSlotDataBusWidth64Bit = 0x06,
1345 EfiSlotDataBusWidth128Bit = 0x07,
1346 } EFI_MISC_SLOT_DATA_BUS_WIDTH;
1347
1348 typedef enum {
1349 EfiSlotUsageOther = 1,
1350 EfiSlotUsageUnknown = 2,
1351 EfiSlotUsageAvailable = 3,
1352 EfiSlotUsageInUse = 4,
1353 } EFI_MISC_SLOT_USAGE;
1354
1355 typedef enum {
1356 EfiSlotLengthOther = 1,
1357 EfiSlotLengthUnknown = 2,
1358 EfiSlotLengthShort = 3,
1359 EfiSlotLengthLong = 4
1360 } EFI_MISC_SLOT_LENGTH;
1361
1362 typedef struct {
1363 UINT32 CharacteristicsUnknown :1;
1364 UINT32 Provides50Volts :1;
1365 UINT32 Provides33Volts :1;
1366 UINT32 SharedSlot :1;
1367 UINT32 PcCard16Supported :1;
1368 UINT32 CardBusSupported :1;
1369 UINT32 ZoomVideoSupported :1;
1370 UINT32 ModemRingResumeSupported:1;
1371 UINT32 PmeSignalSupported :1;
1372 UINT32 HotPlugDevicesSupported :1;
1373 UINT32 SmbusSignalSupported :1;
1374 UINT32 Reserved :21;
1375 } EFI_MISC_SLOT_CHARACTERISTICS;
1376
1377 typedef struct {
1378 STRING_REF SlotDesignation;
1379 EFI_MISC_SLOT_TYPE SlotType;
1380 EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth;
1381 EFI_MISC_SLOT_USAGE SlotUsage;
1382 EFI_MISC_SLOT_LENGTH SlotLength;
1383 UINT16 SlotId;
1384 EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;
1385 EFI_DEVICE_PATH_PROTOCOL SlotDevicePath;
1386 } EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;
1387
1388 //
1389 //////////////////////////////////////////////////////////////////////////////
1390 //
1391 // Misc. Onboard Device - SMBIOS Type 10
1392 //
1393 #define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008
1394
1395 typedef enum {
1396 EfiOnBoardDeviceTypeOther = 1,
1397 EfiOnBoardDeviceTypeUnknown = 2,
1398 EfiOnBoardDeviceTypeVideo = 3,
1399 EfiOnBoardDeviceTypeScsiController = 4,
1400 EfiOnBoardDeviceTypeEthernet = 5,
1401 EfiOnBoardDeviceTypeTokenRing = 6,
1402 EfiOnBoardDeviceTypeSound = 7,
1403 } EFI_MISC_ONBOARD_DEVICE_TYPE;
1404
1405 typedef struct {
1406 UINT32 DeviceType :16;
1407 UINT32 DeviceEnabled :1;
1408 UINT32 Reserved :15;
1409 } EFI_MISC_ONBOARD_DEVICE_STATUS;
1410
1411 typedef struct {
1412 STRING_REF OnBoardDeviceDescription;
1413 EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus;
1414 EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath;
1415 } EFI_MISC_ONBOARD_DEVICE_DATA;
1416
1417 //
1418 //////////////////////////////////////////////////////////////////////////////
1419 //
1420 // Misc. BIOS Language Information - SMBIOS Type 11
1421 //
1422 #define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009
1423
1424 typedef struct {
1425 STRING_REF OemStringRef[1];
1426 } EFI_MISC_OEM_STRING_DATA;
1427
1428 //
1429 //////////////////////////////////////////////////////////////////////////////
1430 //
1431 // Misc. System Options - SMBIOS Type 12
1432 //
1433 typedef struct {
1434 STRING_REF SystemOptionStringRef[1];
1435 } EFI_MISC_SYSTEM_OPTION_STRING_DATA;
1436
1437 #define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A
1438
1439 //
1440 //////////////////////////////////////////////////////////////////////////////
1441 //
1442 // Misc. Number of Installable Languages - SMBIOS Type 13
1443 //
1444 #define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B
1445
1446 typedef struct {
1447 UINT32 AbbreviatedLanguageFormat :1;
1448 UINT32 Reserved :31;
1449 } EFI_MISC_LANGUAGE_FLAGS;
1450
1451 typedef struct {
1452 UINT16 NumberOfInstallableLanguages;
1453 EFI_MISC_LANGUAGE_FLAGS LanguageFlags;
1454 UINT16 CurrentLanguageNumber;
1455 } EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;
1456
1457 //
1458 //////////////////////////////////////////////////////////////////////////////
1459 //
1460 // Misc. System Language String
1461 //
1462 #define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C
1463
1464 typedef struct {
1465 UINT16 LanguageId;
1466 STRING_REF SystemLanguageString;
1467 } EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;
1468
1469 //
1470 //////////////////////////////////////////////////////////////////////////////
1471 //
1472 // Group Associations - SMBIOS Type 14
1473 //
1474 #define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D
1475
1476 typedef struct {
1477 STRING_REF GroupName;
1478 UINT16 NumberGroupItems;
1479 UINT16 GroupId;
1480 } EFI_MISC_GROUP_NAME_DATA;
1481
1482 //
1483 //////////////////////////////////////////////////////////////////////////////
1484 //
1485 // Group Item Set Element
1486 //
1487 #define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E
1488
1489 typedef struct {
1490 EFI_GUID SubClass;
1491 EFI_INTER_LINK_DATA GroupLink;
1492 UINT16 GroupId;
1493 UINT16 GroupElementId;
1494 } EFI_MISC_GROUP_ITEM_SET_DATA;
1495
1496 //
1497 //////////////////////////////////////////////////////////////////////////////
1498 //
1499 // Misc. Pointing Device Type - SMBIOS Type 21
1500 //
1501 #define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F
1502
1503 typedef enum {
1504 EfiPointingDeviceTypeOther = 0x01,
1505 EfiPointingDeviceTypeUnknown = 0x02,
1506 EfiPointingDeviceTypeMouse = 0x03,
1507 EfiPointingDeviceTypeTrackBall = 0x04,
1508 EfiPointingDeviceTypeTrackPoint = 0x05,
1509 EfiPointingDeviceTypeGlidePoint = 0x06,
1510 EfiPointingDeviceTouchPad = 0x07,
1511 EfiPointingDeviceTouchScreen = 0x08,
1512 EfiPointingDeviceOpticalSensor = 0x09,
1513 } EFI_MISC_POINTING_DEVICE_TYPE;
1514
1515 typedef enum {
1516 EfiPointingDeviceInterfaceOther = 0x01,
1517 EfiPointingDeviceInterfaceUnknown = 0x02,
1518 EfiPointingDeviceInterfaceSerial = 0x03,
1519 EfiPointingDeviceInterfacePs2 = 0x04,
1520 EfiPointingDeviceInterfaceInfrared = 0x05,
1521 EfiPointingDeviceInterfaceHpHil = 0x06,
1522 EfiPointingDeviceInterfaceBusMouse = 0x07,
1523 EfiPointingDeviceInterfaceADB = 0x08,
1524 EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0,
1525 EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1,
1526 EfiPointingDeviceInterfaceUsb = 0xA2,
1527 } EFI_MISC_POINTING_DEVICE_INTERFACE;
1528
1529 typedef struct {
1530 EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType;
1531 EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface;
1532 UINT16 NumberPointingDeviceButtons;
1533 EFI_DEVICE_PATH_PROTOCOL PointingDevicePath;
1534 } EFI_MISC_PORTING_DEVICE_TYPE_DATA;
1535
1536 //
1537 //////////////////////////////////////////////////////////////////////////////
1538 //
1539 // Portable Battery - SMBIOS Type 22
1540 //
1541 #define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010
1542
1543 typedef enum {
1544 EfiPortableBatteryDeviceChemistryOther = 1,
1545 EfiPortableBatteryDeviceChemistryUnknown = 2,
1546 EfiPortableBatteryDeviceChemistryLeadAcid = 3,
1547 EfiPortableBatteryDeviceChemistryNickelCadmium = 4,
1548 EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,
1549 EfiPortableBatteryDeviceChemistryLithiumIon = 6,
1550 EfiPortableBatteryDeviceChemistryZincAir = 7,
1551 EfiPortableBatteryDeviceChemistryLithiumPolymer = 8,
1552 } EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;
1553
1554 typedef struct {
1555 STRING_REF Location;
1556 STRING_REF Manufacturer;
1557 STRING_REF ManufactureDate;
1558 STRING_REF SerialNumber;
1559 STRING_REF DeviceName;
1560 EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY DeviceChemistry;
1561 UINT16 DesignCapacity;
1562 UINT16 DesignVoltage;
1563 STRING_REF SBDSVersionNumber;
1564 UINT8 MaximumError;
1565 UINT16 SBDSSerialNumber;
1566 UINT16 SBDSManufactureDate;
1567 STRING_REF SBDSDeviceChemistry;
1568 UINT8 DesignCapacityMultiplier;
1569 UINT32 OEMSpecific;
1570 UINT8 BatteryNumber; // Temporary
1571 BOOLEAN Valid; // Is entry valid - Temporary
1572 } EFI_MISC_PORTABLE_BATTERY;
1573
1574 //
1575 //////////////////////////////////////////////////////////////////////////////
1576 //
1577 // Misc. Reset Capabilities - SMBIOS Type 23
1578 //
1579 #define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011
1580
1581 typedef struct {
1582 UINT32 Status :1;
1583 UINT32 BootOption :2;
1584 UINT32 BootOptionOnLimit :2;
1585 UINT32 WatchdogTimerPresent:1;
1586 UINT32 Reserved :26;
1587 } EFI_MISC_RESET_CAPABILITIES_TYPE;
1588
1589 typedef struct {
1590 EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities;
1591 UINT16 ResetCount;
1592 UINT16 ResetLimit;
1593 UINT16 ResetTimerInterval;
1594 UINT16 ResetTimeout;
1595 } EFI_MISC_RESET_CAPABILITIES;
1596
1597 typedef struct {
1598 EFI_MISC_RESET_CAPABILITIES ResetCapabilities;
1599 UINT16 ResetCount;
1600 UINT16 ResetLimit;
1601 UINT16 ResetTimerInterval;
1602 UINT16 ResetTimeout;
1603 } EFI_MISC_RESET_CAPABILITIES_DATA;
1604
1605 //
1606 //////////////////////////////////////////////////////////////////////////////
1607 //
1608 // Misc. Hardware Security - SMBIOS Type 24
1609 //
1610 #define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012
1611
1612 typedef enum {
1613 EfiHardwareSecurityStatusDisabled = 0,
1614 EfiHardwareSecurityStatusEnabled = 1,
1615 EfiHardwareSecurityStatusNotImplemented = 2,
1616 EfiHardwareSecurityStatusUnknown = 3
1617 } EFI_MISC_HARDWARE_SECURITY_STATUS;
1618
1619 typedef struct {
1620 EFI_MISC_HARDWARE_SECURITY_STATUS FrontPanelResetStatus :2;
1621 EFI_MISC_HARDWARE_SECURITY_STATUS AdministratorPasswordStatus :2;
1622 EFI_MISC_HARDWARE_SECURITY_STATUS KeyboardPasswordStatus :2;
1623 EFI_MISC_HARDWARE_SECURITY_STATUS PowerOnPasswordStatus :2;
1624 EFI_MISC_HARDWARE_SECURITY_STATUS Reserved :24;
1625 } EFI_MISC_HARDWARE_SECURITY_SETTINGS;
1626
1627 typedef struct {
1628 EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;
1629 } EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;
1630
1631 //
1632 //////////////////////////////////////////////////////////////////////////////
1633 //
1634 // System Power Controls - SMBIOS Type 25
1635 //
1636 #define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013
1637
1638 typedef struct {
1639 UINT16 ScheduledPoweronMonth;
1640 UINT16 ScheduledPoweronDayOfMonth;
1641 UINT16 ScheduledPoweronHour;
1642 UINT16 ScheduledPoweronMinute;
1643 UINT16 ScheduledPoweronSecond;
1644 } EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;
1645
1646 //
1647 //////////////////////////////////////////////////////////////////////////////
1648 //
1649 // Voltage Probe - SMBIOS Type 26
1650 //
1651 #define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014
1652
1653 typedef struct {
1654 UINT32 VoltageProbeSite :5;
1655 UINT32 VoltageProbeStatus :3;
1656 UINT32 Reserved :24;
1657 } EFI_MISC_VOLTAGE_PROBE_LOCATION;
1658
1659 typedef struct {
1660 STRING_REF VoltageProbeDescription;
1661 EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation;
1662 EFI_EXP_BASE10_DATA VoltageProbeMaximumValue;
1663 EFI_EXP_BASE10_DATA VoltageProbeMinimumValue;
1664 EFI_EXP_BASE10_DATA VoltageProbeResolution;
1665 EFI_EXP_BASE10_DATA VoltageProbeTolerance;
1666 EFI_EXP_BASE10_DATA VoltageProbeAccuracy;
1667 EFI_EXP_BASE10_DATA VoltageProbeNominalValue;
1668 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1669 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1670 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1671 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1672 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1673 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1674 UINT32 VoltageProbeOemDefined;
1675 } EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;
1676
1677 //
1678 //////////////////////////////////////////////////////////////////////////////
1679 //
1680 // Cooling Device - SMBIOS Type 27
1681 //
1682 #define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015
1683
1684 typedef struct {
1685 UINT32 CoolingDevice :5;
1686 UINT32 CoolingDeviceStatus :3;
1687 UINT32 Reserved :24;
1688 } EFI_MISC_COOLING_DEVICE_TYPE;
1689
1690 typedef struct {
1691 EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType;
1692 EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink;
1693 UINT16 CoolingDeviceUnitGroup;
1694 EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed;
1695 UINT32 CoolingDeviceOemDefined;
1696 } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;
1697
1698 //
1699 //////////////////////////////////////////////////////////////////////////////
1700 //
1701 // Temperature Probe - SMBIOS Type 28
1702 //
1703 #define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016
1704
1705 typedef struct {
1706 UINT32 TemperatureProbeSite :5;
1707 UINT32 TemperatureProbeStatus :3;
1708 UINT32 Reserved :24;
1709 } EFI_MISC_TEMPERATURE_PROBE_LOCATION;
1710
1711 typedef struct {
1712 STRING_REF TemperatureProbeDescription;
1713 EFI_MISC_TEMPERATURE_PROBE_LOCATION
1714 TemperatureProbeLocation;
1715 EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue;
1716 EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue;
1717 EFI_EXP_BASE10_DATA TemperatureProbeResolution;
1718 EFI_EXP_BASE10_DATA TemperatureProbeTolerance;
1719 EFI_EXP_BASE10_DATA TemperatureProbeAccuracy;
1720 EFI_EXP_BASE10_DATA TemperatureProbeNominalValue;
1721 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1722 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1723 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1724 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1725 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1726 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1727 UINT32 TemperatureProbeOemDefined;
1728 } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;
1729
1730 //
1731 //////////////////////////////////////////////////////////////////////////////
1732 //
1733 // Electrical Current Probe - SMBIOS Type 29
1734 //
1735
1736 #define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017
1737
1738 typedef struct {
1739 UINT32 ElectricalCurrentProbeSite :5;
1740 UINT32 ElectricalCurrentProbeStatus :3;
1741 UINT32 Reserved :24;
1742 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;
1743
1744 typedef struct {
1745 STRING_REF ElectricalCurrentProbeDescription;
1746 EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
1747 ElectricalCurrentProbeLocation;
1748 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue;
1749 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue;
1750 EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution;
1751 EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance;
1752 EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy;
1753 EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue;
1754 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1755 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1756 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1757 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1758 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1759 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1760 UINT32 ElectricalCurrentProbeOemDefined;
1761 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;
1762
1763 //
1764 //////////////////////////////////////////////////////////////////////////////
1765 //
1766 // Out-of-Band Remote Access - SMBIOS Type 30
1767 //
1768
1769 #define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018
1770
1771 typedef struct {
1772 UINT32 InboundConnectionEnabled :1;
1773 UINT32 OutboundConnectionEnabled :1;
1774 UINT32 Reserved :30;
1775 } EFI_MISC_REMOTE_ACCESS_CONNECTIONS;
1776
1777 typedef struct {
1778 STRING_REF RemoteAccessManufacturerNameDescription;
1779 EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections;
1780 } EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;
1781
1782 //
1783 //////////////////////////////////////////////////////////////////////////////
1784 //
1785 // Misc. BIS Entry Point - SMBIOS Type 31
1786 //
1787 #define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019
1788
1789 typedef struct {
1790 EFI_PHYSICAL_ADDRESS BisEntryPoint;
1791 } EFI_MISC_BIS_ENTRY_POINT_DATA;
1792
1793 //
1794 //////////////////////////////////////////////////////////////////////////////
1795 //
1796 // Misc. Boot Information - SMBIOS Type 32
1797 //
1798 #define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A
1799
1800 typedef enum {
1801 EfiBootInformationStatusNoError = 0x00,
1802 EfiBootInformationStatusNoBootableMedia = 0x01,
1803 EfiBootInformationStatusNormalOSFailedLoading = 0x02,
1804 EfiBootInformationStatusFirmwareDetectedFailure = 0x03,
1805 EfiBootInformationStatusOSDetectedFailure = 0x04,
1806 EfiBootInformationStatusUserRequestedBoot = 0x05,
1807 EfiBootInformationStatusSystemSecurityViolation = 0x06,
1808 EfiBootInformationStatusPreviousRequestedImage = 0x07,
1809 EfiBootInformationStatusWatchdogTimerExpired = 0x08,
1810 EfiBootInformationStatusStartReserved = 0x09,
1811 EfiBootInformationStatusStartOemSpecific = 0x80,
1812 EfiBootInformationStatusStartProductSpecific = 0xC0,
1813 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;
1814
1815 typedef struct {
1816 EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;
1817 UINT8 BootInformationData[9];
1818 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA;
1819
1820 //
1821 //////////////////////////////////////////////////////////////////////////////
1822 //
1823 // Management Device - SMBIOS Type 34
1824 //
1825 #define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B
1826
1827 typedef enum {
1828 EfiManagementDeviceTypeOther = 0x01,
1829 EfiManagementDeviceTypeUnknown = 0x02,
1830 EfiManagementDeviceTypeLm75 = 0x03,
1831 EfiManagementDeviceTypeLm78 = 0x04,
1832 EfiManagementDeviceTypeLm79 = 0x05,
1833 EfiManagementDeviceTypeLm80 = 0x06,
1834 EfiManagementDeviceTypeLm81 = 0x07,
1835 EfiManagementDeviceTypeAdm9240 = 0x08,
1836 EfiManagementDeviceTypeDs1780 = 0x09,
1837 EfiManagementDeviceTypeMaxim1617 = 0x0A,
1838 EfiManagementDeviceTypeGl518Sm = 0x0B,
1839 EfiManagementDeviceTypeW83781D = 0x0C,
1840 EfiManagementDeviceTypeHt82H791 = 0x0D,
1841 } EFI_MISC_MANAGEMENT_DEVICE_TYPE;
1842
1843 typedef enum {
1844 EfiManagementDeviceAddressTypeOther = 1,
1845 EfiManagementDeviceAddressTypeUnknown = 2,
1846 EfiManagementDeviceAddressTypeIOPort = 3,
1847 EfiManagementDeviceAddressTypeMemory = 4,
1848 EfiManagementDeviceAddressTypeSmbus = 5
1849 } EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;
1850
1851 typedef struct {
1852 STRING_REF ManagementDeviceDescription;
1853 EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType;
1854 UINTN ManagementDeviceAddress;
1855 EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
1856 ManagementDeviceAddressType;
1857 } EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;
1858
1859 //
1860 //////////////////////////////////////////////////////////////////////////////
1861 //
1862 // Management Device Component - SMBIOS Type 35
1863 //
1864
1865 #define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C
1866
1867 typedef struct {
1868 STRING_REF ManagementDeviceComponentDescription;
1869 EFI_INTER_LINK_DATA ManagementDeviceLink;
1870 EFI_INTER_LINK_DATA ManagementDeviceComponentLink;
1871 EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;
1872 } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;
1873
1874 //
1875 //////////////////////////////////////////////////////////////////////////////
1876 //
1877 // IPMI Data Record - SMBIOS Type 38
1878 //
1879 typedef enum {
1880 EfiIpmiOther = 0,
1881 EfiIpmiKcs = 1,
1882 EfiIpmiSmic = 2,
1883 EfiIpmiBt = 3,
1884 } EFI_MISC_IPMI_INTERFACE_TYPE;
1885
1886 typedef struct {
1887 UINT16 IpmiSpecLeastSignificantDigit:4;
1888 UINT16 IpmiSpecMostSignificantDigit: 4;
1889 UINT16 Reserved: 8;
1890 } EFI_MISC_IPMI_SPECIFICATION_REVISION;
1891
1892 typedef struct {
1893 EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType;
1894 EFI_MISC_IPMI_SPECIFICATION_REVISION IpmiSpecificationRevision;
1895 UINT16 IpmiI2CSlaveAddress;
1896 UINT16 IpmiNvDeviceAddress;
1897 UINT64 IpmiBaseAddress;
1898 EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath;
1899 } EFI_MISC_IPMI_INTERFACE_TYPE_DATA;
1900
1901 #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D
1902
1903 //
1904 //////////////////////////////////////////////////////////////////////////////
1905 //
1906 //System Power supply Record - SMBIOS Type 39
1907 //
1908 typedef struct {
1909 UINT16 PowerSupplyHotReplaceable :1;
1910 UINT16 PowerSupplyPresent :1;
1911 UINT16 PowerSupplyUnplugged :1;
1912 UINT16 InputVoltageRangeSwitch :4;
1913 UINT16 PowerSupplyStatus :3;
1914 UINT16 PowerSupplyType :4;
1915 UINT16 Reserved :2;
1916 } POWER_SUPPLY_CHARACTERISTICS;
1917
1918 typedef struct {
1919 UINT16 PowerUnitGroup;
1920 STRING_REF PowerSupplyLocation;
1921 STRING_REF PowerSupplyDeviceName;
1922 STRING_REF PowerSupplyManufacturer;
1923 STRING_REF PowerSupplySerialNumber;
1924 STRING_REF PowerSupplyAssetTagNumber;
1925 STRING_REF PowerSupplyModelPartNumber;
1926 STRING_REF PowerSupplyRevisionLevel;
1927 UINT16 PowerSupplyMaxPowerCapacity;
1928 POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;
1929 EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;
1930 EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;
1931 EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;
1932 } EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;
1933
1934 #define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E
1935
1936 //
1937 //////////////////////////////////////////////////////////////////////////////
1938 //
1939 // OEM Data Record - SMBIOS Type 0x80-0xFF
1940 //
1941 typedef struct {
1942 UINT8 Type;
1943 UINT8 Length;
1944 UINT16 Handle;
1945 } SMBIOS_STRUCTURE_HDR;
1946
1947 typedef struct {
1948 SMBIOS_STRUCTURE_HDR Header;
1949 UINT8 RawData[1];
1950 } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;
1951
1952 #define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F
1953
1954 //
1955 //////////////////////////////////////////////////////////////////////////////
1956 //
1957 // Misc. System Event Log - SMBIOS Type 15
1958 //
1959 #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020
1960 typedef struct {
1961 //SMBIOS_STRUCTURE_HDR Header;
1962 UINT16 LogAreaLength;
1963 UINT16 LogHeaderStartOffset;
1964 UINT16 LogDataStartOffset;
1965 UINT8 AccessMethod;
1966 UINT8 LogStatus;
1967 UINT32 LogChangeToken;
1968 UINT32 AccessMethodAddress;
1969 UINT8 LogHeaderFormat;
1970 UINT8 NumberOfSupportedLogType;
1971 UINT8 LengthOfLogDescriptor;
1972 } EFI_MISC_SYSTEM_EVENT_LOG_DATA;
1973
1974 //
1975 // Access Method.
1976 // 0x00~0x04: as following definition
1977 // 0x05~0x7f: Available for future assignment.
1978 // 0x80~0xff: BIOS Vendor/OEM-specific.
1979 //
1980 #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00
1981 #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01
1982 #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02
1983 #define ACCESS_MEMORY_MAPPED 0x03
1984 #define ACCESS_GPNV 0x04
1985
1986 //
1987 //////////////////////////////////////////////////////////////////////////////
1988 //
1989 //Management Device Threshold Data Record - SMBIOS Type 36
1990 //
1991 #define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021
1992
1993 typedef struct {
1994 UINT16 LowerThresNonCritical;
1995 UINT16 UpperThresNonCritical;
1996 UINT16 LowerThresCritical;
1997 UINT16 UpperThresCritical;
1998 UINT16 LowerThresNonRecover;
1999 UINT16 UpperThresNonRecover;
2000 } EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;
2001
2002 //
2003 // Declare the following strutures alias to use them more conviniently.
2004 //
2005 typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS;
2006 typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR;
2007 typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER;
2008 typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER;
2009 typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER;
2010 typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;
2011 typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION;
2012 typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE;
2013 typedef EFI_MISC_PORTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;
2014 typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING;
2015 typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING;
2016 typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;
2017 typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING;
2018 typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG;
2019 typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT;
2020 typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS;
2021 typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY;
2022 typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;
2023 typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA EFI_MISC_SCHEDULED_POWER_ON_MONTH;
2024 typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;
2025 typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA EFI_MISC_COOLING_DEVICE_TEMP_LINK;
2026 typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION;
2027 typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
2028 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION;
2029 typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;
2030 typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;
2031
2032 typedef union {
2033 EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;
2034 EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor;
2035 EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer;
2036 EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer;
2037 EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer;
2038 EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator;
2039 EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation;
2040 EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice;
2041 EFI_MISC_OEM_STRING_DATA MiscOemString;
2042 EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString;
2043 EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages;
2044 EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString;
2045 EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog;
2046 EFI_MISC_GROUP_NAME_DATA MiscGroupNameData;
2047 EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData;
2048 EFI_MISC_PORTING_DEVICE_TYPE_DATA MiscPortingDeviceTypeData;
2049 EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData;
2050 EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData;
2051 EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData;
2052 EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData;
2053 EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData;
2054 EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData;
2055 EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;
2056 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
2057 MiscRemoteAccessManufacturerDescriptionData;
2058 EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint;
2059 EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus;
2060 EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData;
2061 EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA
2062 MiscmangementDeviceComponentDescriptionData;
2063 EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData;
2064 EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo;
2065 EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation;
2066 EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold;
2067 } EFI_MISC_SUBCLASS_RECORDS;
2068
2069 //
2070 //
2071 //
2072 typedef struct {
2073 EFI_SUBCLASS_TYPE1_HEADER Header;
2074 EFI_MISC_SUBCLASS_RECORDS Record;
2075 } EFI_MISC_SUBCLASS_DRIVER_DATA;
2076
2077 #pragma pack()
2078
2079 //
2080 // Sub Class Header type1
2081 //
2082
2083 #define EFI_SUBCLASS_INSTANCE_RESERVED 0
2084 #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF //16 bit
2085
2086 #endif