ac7cd3082857cd40b2b2d4b349ca1427373b8e45
[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
463 typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA;
464
465 typedef EFI_EXP_BASE2_DATA EFI_MAXIMUM_CACHE_SIZE_DATA;
466
467 typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA;
468
469 typedef STRING_REF EFI_CACHE_SOCKET_DATA;
470
471 typedef struct {
472 UINT32 Other :1;
473 UINT32 Unknown :1;
474 UINT32 NonBurst :1;
475 UINT32 Burst :1;
476 UINT32 PipelineBurst :1;
477 UINT32 Asynchronous :1;
478 UINT32 Synchronous :1;
479 UINT32 Reserved :25;
480 } EFI_CACHE_SRAM_TYPE_DATA;
481
482 typedef enum {
483 EfiCacheErrorOther = 1,
484 EfiCacheErrorUnknown = 2,
485 EfiCacheErrorNone = 3,
486 EfiCacheErrorParity = 4,
487 EfiCacheErrorSingleBit = 5,
488 EfiCacheErrorMultiBit = 6
489 } EFI_CACHE_ERROR_TYPE_DATA;
490
491 typedef enum {
492 EfiCacheTypeOther = 1,
493 EfiCacheTypeUnknown = 2,
494 EfiCacheTypeInstruction = 3,
495 EfiCacheTypeData = 4,
496 EfiCacheTypeUnified = 5
497 } EFI_CACHE_TYPE_DATA;
498
499 typedef enum {
500 EfiCacheAssociativityOther = 1,
501 EfiCacheAssociativityUnknown = 2,
502 EfiCacheAssociativityDirectMapped = 3,
503 EfiCacheAssociativity2Way = 4,
504 EfiCacheAssociativity4Way = 5,
505 EfiCacheAssociativityFully = 6,
506 EfiCacheAssociativity8Way = 7,
507 EfiCacheAssociativity16Way = 8
508 } EFI_CACHE_ASSOCIATIVITY_DATA;
509
510 typedef struct {
511 UINT32 Level :3;
512 UINT32 Socketed :1;
513 UINT32 Reserved2 :1;
514 UINT32 Location :2;
515 UINT32 Enable :1;
516 UINT32 OperationalMode :2;
517 UINT32 Reserved1 :22;
518 } EFI_CACHE_CONFIGURATION_DATA;
519
520 #define EFI_CACHE_L1 1
521 #define EFI_CACHE_L2 2
522 #define EFI_CACHE_L3 3
523 #define EFI_CACHE_L4 4
524 #define EFI_CACHE_LMAX EFI_CACHE_L4
525
526 #define EFI_CACHE_SOCKETED 1
527 #define EFI_CACHE_NOT_SOCKETED 0
528
529 typedef enum {
530 EfiCacheInternal = 0,
531 EfiCacheExternal = 1,
532 EfiCacheReserved = 2,
533 EfiCacheUnknown = 3
534 } EFI_CACHE_LOCATION;
535
536 #define EFI_CACHE_ENABLED 1
537 #define EFI_CACHE_DISABLED 0
538
539 typedef enum {
540 EfiCacheWriteThrough = 0,
541 EfiCacheWriteBack = 1,
542 EfiCacheDynamicMode = 2,
543 EfiCacheUnknownMode = 3
544 } EFI_CACHE_OPERATIONAL_MODE;
545
546
547
548 typedef enum {
549 CacheSizeRecordType = 1,
550 MaximumSizeCacheRecordType = 2,
551 CacheSpeedRecordType = 3,
552 CacheSocketRecordType = 4,
553 CacheSramTypeRecordType = 5,
554 CacheInstalledSramTypeRecordType = 6,
555 CacheErrorTypeRecordType = 7,
556 CacheTypeRecordType = 8,
557 CacheAssociativityRecordType = 9,
558 CacheConfigRecordType = 10
559 } EFI_CACHE_VARIABLE_RECORD_TYPE;
560
561
562 typedef union {
563 EFI_CACHE_SIZE_DATA CacheSize;
564 EFI_MAXIMUM_CACHE_SIZE_DATA MaximumCacheSize;
565 EFI_CACHE_SPEED_DATA CacheSpeed;
566 EFI_CACHE_SOCKET_DATA CacheSocket;
567 EFI_CACHE_SRAM_TYPE_DATA CacheSramType;
568 EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType;
569 EFI_CACHE_ERROR_TYPE_DATA CacheErrorType;
570 EFI_CACHE_TYPE_DATA CacheType;
571 EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity;
572 EFI_CACHE_CONFIGURATION_DATA CacheConfig;
573 EFI_CACHE_ASSOCIATION_DATA CacheAssociation;
574 } EFI_CACHE_VARIABLE_RECORD;
575
576 typedef struct {
577 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;
578 EFI_CACHE_VARIABLE_RECORD VariableRecord;
579 } EFI_CACHE_DATA_RECORD;
580
581 #define EFI_MEMORY_SUBCLASS_VERSION 0x0100
582
583
584 #define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001
585
586 typedef enum _EFI_MEMORY_REGION_TYPE {
587 EfiMemoryRegionMemory = 0x01,
588 EfiMemoryRegionReserved = 0x02,
589 EfiMemoryRegionAcpi = 0x03,
590 EfiMemoryRegionNvs = 0x04
591 } EFI_MEMORY_REGION_TYPE;
592
593 typedef struct {
594 UINT32 ProcessorNumber;
595 UINT16 StartBusNumber;
596 UINT16 EndBusNumber;
597 EFI_MEMORY_REGION_TYPE MemoryRegionType;
598 EFI_EXP_BASE2_DATA MemorySize;
599 EFI_PHYSICAL_ADDRESS MemoryStartAddress;
600 } EFI_MEMORY_SIZE_DATA;
601
602
603 #define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002
604
605 typedef enum _EFI_MEMORY_ARRAY_LOCATION {
606 EfiMemoryArrayLocationOther = 0x01,
607 EfiMemoryArrayLocationUnknown = 0x02,
608 EfiMemoryArrayLocationSystemBoard = 0x03,
609 EfiMemoryArrayLocationIsaAddonCard = 0x04,
610 EfiMemoryArrayLocationEisaAddonCard = 0x05,
611 EfiMemoryArrayLocationPciAddonCard = 0x06,
612 EfiMemoryArrayLocationMcaAddonCard = 0x07,
613 EfiMemoryArrayLocationPcmciaAddonCard = 0x08,
614 EfiMemoryArrayLocationProprietaryAddonCard = 0x09,
615 EfiMemoryArrayLocationNuBus = 0x0A,
616 EfiMemoryArrayLocationPc98C20AddonCard = 0xA0,
617 EfiMemoryArrayLocationPc98C24AddonCard = 0xA1,
618 EfiMemoryArrayLocationPc98EAddonCard = 0xA2,
619 EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3
620 } EFI_MEMORY_ARRAY_LOCATION;
621
622 typedef enum _EFI_MEMORY_ARRAY_USE {
623 EfiMemoryArrayUseOther = 0x01,
624 EfiMemoryArrayUseUnknown = 0x02,
625 EfiMemoryArrayUseSystemMemory = 0x03,
626 EfiMemoryArrayUseVideoMemory = 0x04,
627 EfiMemoryArrayUseFlashMemory = 0x05,
628 EfiMemoryArrayUseNonVolatileRam = 0x06,
629 EfiMemoryArrayUseCacheMemory = 0x07,
630 } EFI_MEMORY_ARRAY_USE;
631
632 typedef enum _EFI_MEMORY_ERROR_CORRECTION {
633 EfiMemoryErrorCorrectionOther = 0x01,
634 EfiMemoryErrorCorrectionUnknown = 0x02,
635 EfiMemoryErrorCorrectionNone = 0x03,
636 EfiMemoryErrorCorrectionParity = 0x04,
637 EfiMemoryErrorCorrectionSingleBitEcc = 0x05,
638 EfiMemoryErrorCorrectionMultiBitEcc = 0x06,
639 EfiMemoryErrorCorrectionCrc = 0x07,
640 } EFI_MEMORY_ERROR_CORRECTION;
641
642 typedef struct {
643 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;
644 EFI_MEMORY_ARRAY_USE MemoryArrayUse;
645 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;
646 EFI_EXP_BASE2_DATA MaximumMemoryCapacity;
647 UINT16 NumberMemoryDevices;
648 } EFI_MEMORY_ARRAY_LOCATION_DATA;
649
650
651 #define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003
652
653 typedef enum _EFI_MEMORY_FORM_FACTOR {
654 EfiMemoryFormFactorOther = 0x01,
655 EfiMemoryFormFactorUnknown = 0x02,
656 EfiMemoryFormFactorSimm = 0x03,
657 EfiMemoryFormFactorSip = 0x04,
658 EfiMemoryFormFactorChip = 0x05,
659 EfiMemoryFormFactorDip = 0x06,
660 EfiMemoryFormFactorZip = 0x07,
661 EfiMemoryFormFactorProprietaryCard = 0x08,
662 EfiMemoryFormFactorDimm = 0x09,
663 EfiMemoryFormFactorTsop = 0x0A,
664 EfiMemoryFormFactorRowOfChips = 0x0B,
665 EfiMemoryFormFactorRimm = 0x0C,
666 EfiMemoryFormFactorSodimm = 0x0D,
667 EfiMemoryFormFactorSrimm = 0x0E,
668 EfiMemoryFormFactorFbDimm = 0x0F
669 } EFI_MEMORY_FORM_FACTOR;
670
671 typedef enum _EFI_MEMORY_ARRAY_TYPE {
672 EfiMemoryTypeOther = 0x01,
673 EfiMemoryTypeUnknown = 0x02,
674 EfiMemoryTypeDram = 0x03,
675 EfiMemoryTypeEdram = 0x04,
676 EfiMemoryTypeVram = 0x05,
677 EfiMemoryTypeSram = 0x06,
678 EfiMemoryTypeRam = 0x07,
679 EfiMemoryTypeRom = 0x08,
680 EfiMemoryTypeFlash = 0x09,
681 EfiMemoryTypeEeprom = 0x0A,
682 EfiMemoryTypeFeprom = 0x0B,
683 EfiMemoryTypeEprom = 0x0C,
684 EfiMemoryTypeCdram = 0x0D,
685 EfiMemoryType3Dram = 0x0E,
686 EfiMemoryTypeSdram = 0x0F,
687 EfiMemoryTypeSgram = 0x10,
688 EfiMemoryTypeRdram = 0x11,
689 EfiMemoryTypeDdr = 0x12,
690 EfiMemoryTypeDdr2 = 0x13,
691 EfiMemoryTypeDdr2FbDimm = 0x14
692 } EFI_MEMORY_ARRAY_TYPE;
693
694 typedef struct {
695 UINT32 Reserved :1;
696 UINT32 Other :1;
697 UINT32 Unknown :1;
698 UINT32 FastPaged :1;
699 UINT32 StaticColumn :1;
700 UINT32 PseudoStatic :1;
701 UINT32 Rambus :1;
702 UINT32 Synchronous :1;
703 UINT32 Cmos :1;
704 UINT32 Edo :1;
705 UINT32 WindowDram :1;
706 UINT32 CacheDram :1;
707 UINT32 Nonvolatile :1;
708 UINT32 Reserved1 :19;
709 } EFI_MEMORY_TYPE_DETAIL;
710
711 typedef enum {
712 EfiMemoryStateEnabled = 0,
713 EfiMemoryStateUnknown = 1,
714 EfiMemoryStateUnsupported = 2,
715 EfiMemoryStateError = 3,
716 EfiMemoryStateAbsent = 4,
717 EfiMemoryStateDisabled = 5,
718 EfiMemoryStatePartial = 6
719 } EFI_MEMORY_STATE;
720
721 typedef struct {
722 STRING_REF MemoryDeviceLocator;
723 STRING_REF MemoryBankLocator;
724 STRING_REF MemoryManufacturer;
725 STRING_REF MemorySerialNumber;
726 STRING_REF MemoryAssetTag;
727 STRING_REF MemoryPartNumber;
728 EFI_INTER_LINK_DATA MemoryArrayLink;
729 EFI_INTER_LINK_DATA MemorySubArrayLink;
730 UINT16 MemoryTotalWidth;
731 UINT16 MemoryDataWidth;
732 EFI_EXP_BASE2_DATA MemoryDeviceSize;
733 EFI_MEMORY_FORM_FACTOR MemoryFormFactor;
734 UINT8 MemoryDeviceSet;
735 EFI_MEMORY_ARRAY_TYPE MemoryType;
736 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;
737 EFI_EXP_BASE10_DATA MemorySpeed;
738 EFI_MEMORY_STATE MemoryState;
739 } EFI_MEMORY_ARRAY_LINK_DATA;
740
741
742 #define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004
743
744 typedef struct {
745 EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress;
746 EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress;
747 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;
748 UINT16 MemoryArrayPartitionWidth;
749 } EFI_MEMORY_ARRAY_START_ADDRESS_DATA;
750
751
752 #define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005
753
754 typedef struct {
755 EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress;
756 EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress;
757 EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink;
758 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;
759 UINT8 MemoryDevicePartitionRowPosition;
760 UINT8 MemoryDeviceInterleavePosition;
761 UINT8 MemoryDeviceInterleaveDataDepth;
762 } EFI_MEMORY_DEVICE_START_ADDRESS_DATA;
763
764
765 //
766 // Memory. Channel Device Type - SMBIOS Type 37
767 //
768
769 #define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006
770
771 typedef enum _EFI_MEMORY_CHANNEL_TYPE {
772 EfiMemoryChannelTypeOther = 1,
773 EfiMemoryChannelTypeUnknown = 2,
774 EfiMemoryChannelTypeRambus = 3,
775 EfiMemoryChannelTypeSyncLink = 4
776 } EFI_MEMORY_CHANNEL_TYPE;
777
778 typedef struct {
779 EFI_MEMORY_CHANNEL_TYPE MemoryChannelType;
780 UINT8 MemoryChannelMaximumLoad;
781 UINT8 MemoryChannelDeviceCount;
782 } EFI_MEMORY_CHANNEL_TYPE_DATA;
783
784 #define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007
785
786 typedef struct {
787 UINT8 DeviceId;
788 EFI_INTER_LINK_DATA DeviceLink;
789 UINT8 MemoryChannelDeviceLoad;
790 } EFI_MEMORY_CHANNEL_DEVICE_DATA;
791
792
793
794 typedef union _EFI_MEMORY_SUBCLASS_RECORDS {
795 EFI_MEMORY_SIZE_DATA SizeData;
796 EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData;
797 EFI_MEMORY_ARRAY_LINK_DATA ArrayLink;
798 EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress;
799 EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress;
800 EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData;
801 EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData;
802 } EFI_MEMORY_SUBCLASS_RECORDS;
803
804 typedef struct {
805 EFI_SUBCLASS_TYPE1_HEADER Header;
806 EFI_MEMORY_SUBCLASS_RECORDS Record;
807 } EFI_MEMORY_SUBCLASS_DRIVER_DATA;
808
809 #define EFI_MISC_SUBCLASS_VERSION 0x0100
810
811 #pragma pack(1)
812 //
813 //////////////////////////////////////////////////////////////////////////////
814 //
815 // Last PCI Bus Number
816 //
817 #define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001
818
819 typedef struct {
820 UINT8 LastPciBus;
821 } EFI_MISC_LAST_PCI_BUS_DATA;
822
823 //
824 //////////////////////////////////////////////////////////////////////////////
825 //
826 // Misc. BIOS Vendor - SMBIOS Type 0
827 //
828 #define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002
829
830 typedef struct {
831 UINT64 Reserved1 :2;
832 UINT64 Unknown :1;
833 UINT64 BiosCharacteristicsNotSupported :1;
834 UINT64 IsaIsSupported :1;
835 UINT64 McaIsSupported :1;
836 UINT64 EisaIsSupported :1;
837 UINT64 PciIsSupported :1;
838 UINT64 PcmciaIsSupported :1;
839 UINT64 PlugAndPlayIsSupported :1;
840 UINT64 ApmIsSupported :1;
841 UINT64 BiosIsUpgradable :1;
842 UINT64 BiosShadowingAllowed :1;
843 UINT64 VlVesaIsSupported :1;
844 UINT64 EscdSupportIsAvailable :1;
845 UINT64 BootFromCdIsSupported :1;
846 UINT64 SelectableBootIsSupported :1;
847 UINT64 RomBiosIsSocketed :1;
848 UINT64 BootFromPcmciaIsSupported :1;
849 UINT64 EDDSpecificationIsSupported :1;
850 UINT64 JapaneseNecFloppyIsSupported :1;
851 UINT64 JapaneseToshibaFloppyIsSupported :1;
852 UINT64 Floppy525_360IsSupported :1;
853 UINT64 Floppy525_12IsSupported :1;
854 UINT64 Floppy35_720IsSupported :1;
855 UINT64 Floppy35_288IsSupported :1;
856 UINT64 PrintScreenIsSupported :1;
857 UINT64 Keyboard8042IsSupported :1;
858 UINT64 SerialIsSupported :1;
859 UINT64 PrinterIsSupported :1;
860 UINT64 CgaMonoIsSupported :1;
861 UINT64 NecPc98 :1;
862 UINT64 AcpiIsSupported :1;
863 UINT64 UsbLegacyIsSupported :1;
864 UINT64 AgpIsSupported :1;
865 UINT64 I20BootIsSupported :1;
866 UINT64 Ls120BootIsSupported :1;
867 UINT64 AtapiZipDriveBootIsSupported :1;
868 UINT64 Boot1394IsSupported :1;
869 UINT64 SmartBatteryIsSupported :1;
870 UINT64 BiosBootSpecIsSupported :1;
871 UINT64 FunctionKeyNetworkBootIsSupported :1;
872 UINT64 Reserved :22;
873 } EFI_MISC_BIOS_CHARACTERISTICS;
874
875 typedef struct {
876 UINT64 BiosReserved :16;
877 UINT64 SystemReserved :16;
878 UINT64 Reserved :32;
879 } EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;
880
881 typedef struct {
882 STRING_REF BiosVendor;
883 STRING_REF BiosVersion;
884 STRING_REF BiosReleaseDate;
885 EFI_PHYSICAL_ADDRESS BiosStartingAddress;
886 EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize;
887 EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1;
888 EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION BiosCharacteristics2;
889 UINT8 BiosMajorRelease;
890 UINT8 BiosMinorRelease;
891 UINT8 BiosEmbeddedFirmwareMajorRelease;
892 UINT8 BiosEmbeddedFirmwareMinorRelease;
893 } EFI_MISC_BIOS_VENDOR_DATA;
894
895 //
896 //////////////////////////////////////////////////////////////////////////////
897 //
898 // Misc. System Manufacturer - SMBIOS Type 1
899 //
900 #define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003
901
902 typedef enum {
903 EfiSystemWakeupTypeReserved = 0,
904 EfiSystemWakeupTypeOther = 1,
905 EfiSystemWakeupTypeUnknown = 2,
906 EfiSystemWakeupTypeApmTimer = 3,
907 EfiSystemWakeupTypeModemRing = 4,
908 EfiSystemWakeupTypeLanRemote = 5,
909 EfiSystemWakeupTypePowerSwitch = 6,
910 EfiSystemWakeupTypePciPme = 7,
911 EfiSystemWakeupTypeAcPowerRestored = 8,
912 } EFI_MISC_SYSTEM_WAKEUP_TYPE;
913
914 typedef struct {
915 STRING_REF SystemManufacturer;
916 STRING_REF SystemProductName;
917 STRING_REF SystemVersion;
918 STRING_REF SystemSerialNumber;
919 EFI_GUID SystemUuid;
920 EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType;
921 STRING_REF SystemSKUNumber;
922 STRING_REF SystemFamily;
923 } EFI_MISC_SYSTEM_MANUFACTURER_DATA;
924
925 //
926 //////////////////////////////////////////////////////////////////////////////
927 //
928 // Misc. Base Board Manufacturer - SMBIOS Type 2
929 //
930 #define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004
931
932 typedef struct {
933 UINT32 Motherboard :1;
934 UINT32 RequiresDaughterCard :1;
935 UINT32 Removable :1;
936 UINT32 Replaceable :1;
937 UINT32 HotSwappable :1;
938 UINT32 Reserved :27;
939 } EFI_BASE_BOARD_FEATURE_FLAGS;
940
941 typedef enum {
942 EfiBaseBoardTypeUnknown = 1,
943 EfiBaseBoardTypeOther = 2,
944 EfiBaseBoardTypeServerBlade = 3,
945 EfiBaseBoardTypeConnectivitySwitch = 4,
946 EfiBaseBoardTypeSystemManagementModule = 5,
947 EfiBaseBoardTypeProcessorModule = 6,
948 EfiBaseBoardTypeIOModule = 7,
949 EfiBaseBoardTypeMemoryModule = 8,
950 EfiBaseBoardTypeDaughterBoard = 9,
951 EfiBaseBoardTypeMotherBoard = 0xA,
952 EfiBaseBoardTypeProcessorMemoryModule = 0xB,
953 EfiBaseBoardTypeProcessorIOModule = 0xC,
954 EfiBaseBoardTypeInterconnectBoard = 0xD,
955 } EFI_BASE_BOARD_TYPE;
956
957 typedef struct {
958 STRING_REF BaseBoardManufacturer;
959 STRING_REF BaseBoardProductName;
960 STRING_REF BaseBoardVersion;
961 STRING_REF BaseBoardSerialNumber;
962 STRING_REF BaseBoardAssetTag;
963 STRING_REF BaseBoardChassisLocation;
964 EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags;
965 EFI_BASE_BOARD_TYPE BaseBoardType;
966 EFI_INTER_LINK_DATA BaseBoardChassisLink;
967 UINT32 BaseBoardNumberLinks;
968 EFI_INTER_LINK_DATA LinkN;
969 } EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;
970
971 //
972 //////////////////////////////////////////////////////////////////////////////
973 //
974 // Misc. System/Chassis Enclosure - SMBIOS Type 3
975 //
976 #define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005
977
978 typedef enum {
979 EfiMiscChassisTypeOther = 0x1,
980 EfiMiscChassisTypeUnknown = 0x2,
981 EfiMiscChassisTypeDeskTop = 0x3,
982 EfiMiscChassisTypeLowProfileDesktop = 0x4,
983 EfiMiscChassisTypePizzaBox = 0x5,
984 EfiMiscChassisTypeMiniTower = 0x6,
985 EfiMiscChassisTypeTower = 0x7,
986 EfiMiscChassisTypePortable = 0x8,
987 EfiMiscChassisTypeLapTop = 0x9,
988 EfiMiscChassisTypeNotebook = 0xA,
989 EfiMiscChassisTypeHandHeld = 0xB,
990 EfiMiscChassisTypeDockingStation = 0xC,
991 EfiMiscChassisTypeAllInOne = 0xD,
992 EfiMiscChassisTypeSubNotebook = 0xE,
993 EfiMiscChassisTypeSpaceSaving = 0xF,
994 EfiMiscChassisTypeLunchBox = 0x10,
995 EfiMiscChassisTypeMainServerChassis = 0x11,
996 EfiMiscChassisTypeExpansionChassis = 0x12,
997 EfiMiscChassisTypeSubChassis = 0x13,
998 EfiMiscChassisTypeBusExpansionChassis = 0x14,
999 EfiMiscChassisTypePeripheralChassis = 0x15,
1000 EfiMiscChassisTypeRaidChassis = 0x16,
1001 EfiMiscChassisTypeRackMountChassis = 0x17,
1002 EfiMiscChassisTypeSealedCasePc = 0x18,
1003 EfiMiscChassisMultiSystemChassis = 0x19,
1004 } EFI_MISC_CHASSIS_TYPE;
1005
1006 typedef struct {
1007 UINT32 ChassisType :16;
1008 UINT32 ChassisLockPresent:1;
1009 UINT32 Reserved :15;
1010 } EFI_MISC_CHASSIS_STATUS;
1011
1012 typedef enum {
1013 EfiChassisStateOther = 0x01,
1014 EfiChassisStateUnknown = 0x02,
1015 EfiChassisStateSafe = 0x03,
1016 EfiChassisStateWarning = 0x04,
1017 EfiChassisStateCritical = 0x05,
1018 EfiChassisStateNonRecoverable = 0x06,
1019 } EFI_MISC_CHASSIS_STATE;
1020
1021 typedef enum {
1022 EfiChassisSecurityStatusOther = 0x01,
1023 EfiChassisSecurityStatusUnknown = 0x02,
1024 EfiChassisSecurityStatusNone = 0x03,
1025 EfiChassisSecurityStatusExternalInterfaceLockedOut = 0x04,
1026 EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05,
1027 } EFI_MISC_CHASSIS_SECURITY_STATE;
1028
1029 typedef struct {
1030 UINT32 RecordType :1;
1031 UINT32 Reserved :24;
1032 } EFI_MISC_ELEMENT_TYPE;
1033
1034 typedef struct {
1035 EFI_MISC_ELEMENT_TYPE ChassisElementType;
1036 EFI_INTER_LINK_DATA ChassisElementStructure;
1037 EFI_BASE_BOARD_TYPE ChassisBaseBoard;
1038 UINT32 ChassisElementMinimum;
1039 UINT32 ChassisElementMaximum;
1040 } EFI_MISC_ELEMENTS;
1041
1042 typedef struct {
1043 STRING_REF ChassisManufacturer;
1044 STRING_REF ChassisVersion;
1045 STRING_REF ChassisSerialNumber;
1046 STRING_REF ChassisAssetTag;
1047 EFI_MISC_CHASSIS_STATUS ChassisType;
1048 EFI_MISC_CHASSIS_STATE ChassisBootupState;
1049 EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState;
1050 EFI_MISC_CHASSIS_STATE ChassisThermalState;
1051 EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;
1052 UINT32 ChassisOemDefined;
1053 UINT32 ChassisHeight;
1054 UINT32 ChassisNumberPowerCords;
1055 UINT32 ChassisElementCount;
1056 UINT32 ChassisElementRecordLength;//
1057 EFI_MISC_ELEMENTS ChassisElements;
1058 } EFI_MISC_CHASSIS_MANUFACTURER_DATA;
1059
1060 //
1061 //////////////////////////////////////////////////////////////////////////////
1062 //
1063 // Misc. Port Connector Information - SMBIOS Type 8
1064 //
1065 #define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006
1066
1067 typedef enum {
1068 EfiPortConnectorTypeNone = 0x00,
1069 EfiPortConnectorTypeCentronics = 0x01,
1070 EfiPortConnectorTypeMiniCentronics = 0x02,
1071 EfiPortConnectorTypeProprietary = 0x03,
1072 EfiPortConnectorTypeDB25Male = 0x04,
1073 EfiPortConnectorTypeDB25Female = 0x05,
1074 EfiPortConnectorTypeDB15Male = 0x06,
1075 EfiPortConnectorTypeDB15Female = 0x07,
1076 EfiPortConnectorTypeDB9Male = 0x08,
1077 EfiPortConnectorTypeDB9Female = 0x09,
1078 EfiPortConnectorTypeRJ11 = 0x0A,
1079 EfiPortConnectorTypeRJ45 = 0x0B,
1080 EfiPortConnectorType50PinMiniScsi = 0x0C,
1081 EfiPortConnectorTypeMiniDin = 0x0D,
1082 EfiPortConnectorTypeMicriDin = 0x0E,
1083 EfiPortConnectorTypePS2 = 0x0F,
1084 EfiPortConnectorTypeInfrared = 0x10,
1085 EfiPortConnectorTypeHpHil = 0x11,
1086 EfiPortConnectorTypeUsb = 0x12,
1087 EfiPortConnectorTypeSsaScsi = 0x13,
1088 EfiPortConnectorTypeCircularDin8Male = 0x14,
1089 EfiPortConnectorTypeCircularDin8Female = 0x15,
1090 EfiPortConnectorTypeOnboardIde = 0x16,
1091 EfiPortConnectorTypeOnboardFloppy = 0x17,
1092 EfiPortConnectorType9PinDualInline = 0x18,
1093 EfiPortConnectorType25PinDualInline = 0x19,
1094 EfiPortConnectorType50PinDualInline = 0x1A,
1095 EfiPortConnectorType68PinDualInline = 0x1B,
1096 EfiPortConnectorTypeOnboardSoundInput = 0x1C,
1097 EfiPortConnectorTypeMiniCentronicsType14 = 0x1D,
1098 EfiPortConnectorTypeMiniCentronicsType26 = 0x1E,
1099 EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F,
1100 EfiPortConnectorTypeBNC = 0x20,
1101 EfiPortConnectorType1394 = 0x21,
1102 EfiPortConnectorTypePC98 = 0xA0,
1103 EfiPortConnectorTypePC98Hireso = 0xA1,
1104 EfiPortConnectorTypePCH98 = 0xA2,
1105 EfiPortConnectorTypePC98Note = 0xA3,
1106 EfiPortConnectorTypePC98Full = 0xA4,
1107 EfiPortConnectorTypeOther = 0xFF,
1108 } EFI_MISC_PORT_CONNECTOR_TYPE;
1109
1110 typedef enum {
1111 EfiPortTypeNone = 0x00,
1112 EfiPortTypeParallelXtAtCompatible = 0x01,
1113 EfiPortTypeParallelPortPs2 = 0x02,
1114 EfiPortTypeParallelPortEcp = 0x03,
1115 EfiPortTypeParallelPortEpp = 0x04,
1116 EfiPortTypeParallelPortEcpEpp = 0x05,
1117 EfiPortTypeSerialXtAtCompatible = 0x06,
1118 EfiPortTypeSerial16450Compatible = 0x07,
1119 EfiPortTypeSerial16550Compatible = 0x08,
1120 EfiPortTypeSerial16550ACompatible = 0x09,
1121 EfiPortTypeScsi = 0x0A,
1122 EfiPortTypeMidi = 0x0B,
1123 EfiPortTypeJoyStick = 0x0C,
1124 EfiPortTypeKeyboard = 0x0D,
1125 EfiPortTypeMouse = 0x0E,
1126 EfiPortTypeSsaScsi = 0x0F,
1127 EfiPortTypeUsb = 0x10,
1128 EfiPortTypeFireWire = 0x11,
1129 EfiPortTypePcmciaTypeI = 0x12,
1130 EfiPortTypePcmciaTypeII = 0x13,
1131 EfiPortTypePcmciaTypeIII = 0x14,
1132 EfiPortTypeCardBus = 0x15,
1133 EfiPortTypeAccessBusPort = 0x16,
1134 EfiPortTypeScsiII = 0x17,
1135 EfiPortTypeScsiWide = 0x18,
1136 EfiPortTypePC98 = 0x19,
1137 EfiPortTypePC98Hireso = 0x1A,
1138 EfiPortTypePCH98 = 0x1B,
1139 EfiPortTypeVideoPort = 0x1C,
1140 EfiPortTypeAudioPort = 0x1D,
1141 EfiPortTypeModemPort = 0x1E,
1142 EfiPortTypeNetworkPort = 0x1F,
1143 EfiPortType8251Compatible = 0xA0,
1144 EfiPortType8251FifoCompatible = 0xA1,
1145 EfiPortTypeOther = 0xFF,
1146 } EFI_MISC_PORT_TYPE;
1147
1148 typedef struct {
1149 STRING_REF PortInternalConnectorDesignator;
1150 STRING_REF PortExternalConnectorDesignator;
1151 EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType;
1152 EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType;
1153 EFI_MISC_PORT_TYPE PortType;
1154 EFI_MISC_PORT_DEVICE_PATH PortPath;
1155 } EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;
1156
1157 //
1158 //////////////////////////////////////////////////////////////////////////////
1159 //
1160 // Misc. System Slots - SMBIOS Type 9
1161 //
1162 #define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007
1163
1164 typedef enum {
1165 EfiSlotTypeOther = 0x01,
1166 EfiSlotTypeUnknown = 0x02,
1167 EfiSlotTypeIsa = 0x03,
1168 EfiSlotTypeMca = 0x04,
1169 EfiSlotTypeEisa = 0x05,
1170 EfiSlotTypePci = 0x06,
1171 EfiSlotTypePcmcia = 0x07,
1172 EfiSlotTypeVlVesa = 0x08,
1173 EfiSlotTypeProprietary = 0x09,
1174 EfiSlotTypeProcessorCardSlot = 0x0A,
1175 EfiSlotTypeProprietaryMemoryCardSlot = 0x0B,
1176 EfiSlotTypeIORiserCardSlot = 0x0C,
1177 EfiSlotTypeNuBus = 0x0D,
1178 EfiSlotTypePci66MhzCapable = 0x0E,
1179 EfiSlotTypeAgp = 0x0F,
1180 EfiSlotTypeApg2X = 0x10,
1181 EfiSlotTypeAgp4X = 0x11,
1182 EfiSlotTypePciX = 0x12,
1183 EfiSlotTypeAgp4x = 0x13,
1184 EfiSlotTypePC98C20 = 0xA0,
1185 EfiSlotTypePC98C24 = 0xA1,
1186 EfiSlotTypePC98E = 0xA2,
1187 EfiSlotTypePC98LocalBus = 0xA3,
1188 EfiSlotTypePC98Card = 0xA4,
1189 EfiSlotTypePciExpress = 0xA5
1190 } EFI_MISC_SLOT_TYPE;
1191
1192 typedef enum {
1193 EfiSlotDataBusWidthOther = 0x01,
1194 EfiSlotDataBusWidthUnknown = 0x02,
1195 EfiSlotDataBusWidth8Bit = 0x03,
1196 EfiSlotDataBusWidth16Bit = 0x04,
1197 EfiSlotDataBusWidth32Bit = 0x05,
1198 EfiSlotDataBusWidth64Bit = 0x06,
1199 EfiSlotDataBusWidth128Bit = 0x07,
1200 } EFI_MISC_SLOT_DATA_BUS_WIDTH;
1201
1202 typedef enum {
1203 EfiSlotUsageOther = 1,
1204 EfiSlotUsageUnknown = 2,
1205 EfiSlotUsageAvailable = 3,
1206 EfiSlotUsageInUse = 4,
1207 } EFI_MISC_SLOT_USAGE;
1208
1209 typedef enum {
1210 EfiSlotLengthOther = 1,
1211 EfiSlotLengthUnknown = 2,
1212 EfiSlotLengthShort = 3,
1213 EfiSlotLengthLong = 4
1214 } EFI_MISC_SLOT_LENGTH;
1215
1216 typedef struct {
1217 UINT32 CharacteristicsUnknown :1;
1218 UINT32 Provides50Volts :1;
1219 UINT32 Provides33Volts :1;
1220 UINT32 SharedSlot :1;
1221 UINT32 PcCard16Supported :1;
1222 UINT32 CardBusSupported :1;
1223 UINT32 ZoomVideoSupported :1;
1224 UINT32 ModemRingResumeSupported:1;
1225 UINT32 PmeSignalSupported :1;
1226 UINT32 HotPlugDevicesSupported :1;
1227 UINT32 SmbusSignalSupported :1;
1228 UINT32 Reserved :21;
1229 } EFI_MISC_SLOT_CHARACTERISTICS;
1230
1231 typedef struct {
1232 STRING_REF SlotDesignation;
1233 EFI_MISC_SLOT_TYPE SlotType;
1234 EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth;
1235 EFI_MISC_SLOT_USAGE SlotUsage;
1236 EFI_MISC_SLOT_LENGTH SlotLength;
1237 UINT16 SlotId;
1238 EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;
1239 EFI_DEVICE_PATH_PROTOCOL SlotDevicePath;
1240 } EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;
1241
1242 //
1243 //////////////////////////////////////////////////////////////////////////////
1244 //
1245 // Misc. Onboard Device - SMBIOS Type 10
1246 //
1247 #define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008
1248
1249 typedef enum {
1250 EfiOnBoardDeviceTypeOther = 1,
1251 EfiOnBoardDeviceTypeUnknown = 2,
1252 EfiOnBoardDeviceTypeVideo = 3,
1253 EfiOnBoardDeviceTypeScsiController = 4,
1254 EfiOnBoardDeviceTypeEthernet = 5,
1255 EfiOnBoardDeviceTypeTokenRing = 6,
1256 EfiOnBoardDeviceTypeSound = 7,
1257 } EFI_MISC_ONBOARD_DEVICE_TYPE;
1258
1259 typedef struct {
1260 UINT32 DeviceType :16;
1261 UINT32 DeviceEnabled :1;
1262 UINT32 Reserved :15;
1263 } EFI_MISC_ONBOARD_DEVICE_STATUS;
1264
1265 typedef struct {
1266 STRING_REF OnBoardDeviceDescription;
1267 EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus;
1268 EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath;
1269 } EFI_MISC_ONBOARD_DEVICE_DATA;
1270
1271 //
1272 //////////////////////////////////////////////////////////////////////////////
1273 //
1274 // Misc. BIOS Language Information - SMBIOS Type 11
1275 //
1276 #define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009
1277
1278 typedef struct {
1279 STRING_REF OemStringRef[1];
1280 } EFI_MISC_OEM_STRING_DATA;
1281
1282 //
1283 //////////////////////////////////////////////////////////////////////////////
1284 //
1285 // Misc. System Options - SMBIOS Type 12
1286 //
1287 typedef struct {
1288 STRING_REF SystemOptionStringRef[1];
1289 } EFI_MISC_SYSTEM_OPTION_STRING_DATA;
1290
1291 #define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A
1292
1293 //
1294 //////////////////////////////////////////////////////////////////////////////
1295 //
1296 // Misc. Number of Installable Languages - SMBIOS Type 13
1297 //
1298 #define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B
1299
1300 typedef struct {
1301 UINT32 AbbreviatedLanguageFormat :1;
1302 UINT32 Reserved :31;
1303 } EFI_MISC_LANGUAGE_FLAGS;
1304
1305 typedef struct {
1306 UINT16 NumberOfInstallableLanguages;
1307 EFI_MISC_LANGUAGE_FLAGS LanguageFlags;
1308 UINT16 CurrentLanguageNumber;
1309 } EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;
1310
1311 //
1312 //////////////////////////////////////////////////////////////////////////////
1313 //
1314 // Misc. System Language String
1315 //
1316 #define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C
1317
1318 typedef struct {
1319 UINT16 LanguageId;
1320 STRING_REF SystemLanguageString;
1321 } EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;
1322
1323 //
1324 //////////////////////////////////////////////////////////////////////////////
1325 //
1326 // Group Associations - SMBIOS Type 14
1327 //
1328 #define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D
1329
1330 typedef struct {
1331 STRING_REF GroupName;
1332 UINT16 NumberGroupItems;
1333 UINT16 GroupId;
1334 } EFI_MISC_GROUP_NAME_DATA;
1335
1336 //
1337 //////////////////////////////////////////////////////////////////////////////
1338 //
1339 // Group Item Set Element
1340 //
1341 #define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E
1342
1343 typedef struct {
1344 EFI_GUID SubClass;
1345 EFI_INTER_LINK_DATA GroupLink;
1346 UINT16 GroupId;
1347 UINT16 GroupElementId;
1348 } EFI_MISC_GROUP_ITEM_SET_DATA;
1349
1350 // Misc. System Event Log - SMBIOS Type 15
1351 //
1352 #define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x0000000D
1353 typedef struct {
1354 UINT16 LogAreaLength;
1355 UINT16 LogHeaderStartOffset;
1356 UINT16 LogDataStartOffset;
1357 UINT8 AccessMethod;
1358 UINT8 LogStatus;
1359 UINT32 LogChangeToken;
1360 UINT32 AccessMethodAddress;
1361 UINT8 LogHeaderFormat;
1362 UINT8 NumberOfSupportedLogType;
1363 UINT8 LengthOfLogDescriptor;
1364 } EFI_MISC_SYSTEM_EVENT_LOG_DATA;
1365
1366 //
1367 // Access Method.
1368 // 0x00~0x04: as following definition
1369 // 0x05~0x7f: Available for future assignment.
1370 // 0x80~0xff: BIOS Vendor/OEM-specific.
1371 //
1372 #define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00
1373 #define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01
1374 #define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02
1375 #define ACCESS_MEMORY_MAPPED 0x03
1376 #define ACCESS_GPNV 0x04
1377
1378 //
1379 //////////////////////////////////////////////////////////////////////////////
1380 //
1381 // Misc. Pointing Device Type - SMBIOS Type 21
1382 //
1383 #define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F
1384
1385 typedef enum {
1386 EfiPointingDeviceTypeOther = 0x01,
1387 EfiPointingDeviceTypeUnknown = 0x02,
1388 EfiPointingDeviceTypeMouse = 0x03,
1389 EfiPointingDeviceTypeTrackBall = 0x04,
1390 EfiPointingDeviceTypeTrackPoint = 0x05,
1391 EfiPointingDeviceTypeGlidePoint = 0x06,
1392 EfiPointingDeviceTouchPad = 0x07,
1393 EfiPointingDeviceTouchScreen = 0x08,
1394 EfiPointingDeviceOpticalSensor = 0x09,
1395 } EFI_MISC_POINTING_DEVICE_TYPE;
1396
1397 typedef enum {
1398 EfiPointingDeviceInterfaceOther = 0x01,
1399 EfiPointingDeviceInterfaceUnknown = 0x02,
1400 EfiPointingDeviceInterfaceSerial = 0x03,
1401 EfiPointingDeviceInterfacePs2 = 0x04,
1402 EfiPointingDeviceInterfaceInfrared = 0x05,
1403 EfiPointingDeviceInterfaceHpHil = 0x06,
1404 EfiPointingDeviceInterfaceBusMouse = 0x07,
1405 EfiPointingDeviceInterfaceADB = 0x08,
1406 EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0,
1407 EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1,
1408 EfiPointingDeviceInterfaceUsb = 0xA2,
1409 } EFI_MISC_POINTING_DEVICE_INTERFACE;
1410
1411 typedef struct {
1412 EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType;
1413 EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface;
1414 UINT16 NumberPointingDeviceButtons;
1415 EFI_DEVICE_PATH_PROTOCOL PointingDevicePath;
1416 } EFI_MISC_PORTING_DEVICE_TYPE_DATA;
1417
1418 //
1419 //////////////////////////////////////////////////////////////////////////////
1420 //
1421 // Portable Battery - SMBIOS Type 22
1422 //
1423 #define EFI_MISC_BATTERY_LOCATION_RECORD_NUMBER 0x00000010
1424
1425 typedef enum {
1426 EfiBatteryDeviceChemistryTypeOther = 0x01,
1427 EfiBatteryDeviceChemistryTypeUnknown = 0x02,
1428 EfiBatteryDeviceChemistryTypeLeadAcid = 0x03,
1429 EfiBatteryDeviceChemistryTypeNickelCadmium = 0x04,
1430 EfiBatteryDeviceChemistryTypeNickelMetalHydride = 0x05,
1431 EfiBatteryDeviceChemistryTypeLithiumIon = 0x06,
1432 EfiBatteryDeviceChemistryTypeZincAir = 0x07,
1433 EfiBatteryDeviceChemistryTypeLithiumPolymer = 0x08,
1434 } EFI_MISC_BATTERY_DEVICE_CHEMISTRY;
1435
1436 typedef struct {
1437 UINT32 Date :5;
1438 UINT32 Month :4;
1439 UINT32 Year :7;
1440 UINT32 Reserved :16;
1441 } EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE;
1442
1443 typedef struct {
1444 STRING_REF BatteryLocation;
1445 STRING_REF BatteryManufacturer;
1446 STRING_REF BatteryManufactureDate;
1447 STRING_REF BatterySerialNumber;
1448 STRING_REF BatteryDeviceName;
1449 STRING_REF BatterySbdsVersionNumber;
1450 STRING_REF BatterySbdsDeviceChemistry;
1451 EFI_MISC_BATTERY_DEVICE_CHEMISTRY BatteryDeviceChemistry;
1452 EFI_EXP_BASE10_DATA BatteryDesignCapacity;
1453 EFI_EXP_BASE10_DATA BatteryDesignVoltage;
1454 UINT16 BatteryMaximumError;
1455 UINT16 BatterySbdsSerialNumber;
1456 EFI_MISC_BATTERY_SBDS_MANUFACTURE_DATE
1457 BatterySbdsManufacturingDate;
1458 UINT32 BatteryOemSpecific;
1459 } EFI_MISC_BATTERY_LOCATION_DATA;
1460
1461 //
1462 //////////////////////////////////////////////////////////////////////////////
1463 //
1464 // Misc. Reset Capabilities - SMBIOS Type 23
1465 //
1466 #define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011
1467
1468 typedef struct {
1469 UINT32 Status :1;
1470 UINT32 BootOption :2;
1471 UINT32 BootOptionOnLimit :2;
1472 UINT32 WatchdogTimerPresent:1;
1473 UINT32 Reserved :26;
1474 } EFI_MISC_RESET_CAPABILITIES_TYPE;
1475
1476 typedef struct {
1477 EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities;
1478 UINT16 ResetCount;
1479 UINT16 ResetLimit;
1480 UINT16 ResetTimerInterval;
1481 UINT16 ResetTimeout;
1482 } EFI_MISC_RESET_CAPABILITIES;
1483
1484 typedef struct {
1485 EFI_MISC_RESET_CAPABILITIES ResetCapabilities;
1486 UINT16 ResetCount;
1487 UINT16 ResetLimit;
1488 UINT16 ResetTimerInterval;
1489 UINT16 ResetTimeout;
1490 } EFI_MISC_RESET_CAPABILITIES_DATA;
1491
1492 //
1493 //////////////////////////////////////////////////////////////////////////////
1494 //
1495 // Misc. Hardware Security - SMBIOS Type 24
1496 //
1497 #define EFI_MISC_HARDWARE_SECURITY_RECORD_NUMBER 0x00000012
1498
1499 typedef enum {
1500 EfiHardwareSecurityStatusDisabled = 0,
1501 EfiHardwareSecurityStatusEnabled = 1,
1502 EfiHardwareSecurityStatusNotImplemented = 2,
1503 EfiHardwareSecurityStatusUnknown = 3
1504 } EFI_MISC_HARDWARE_SECURITY_STATUS;
1505
1506 typedef struct {
1507 EFI_MISC_HARDWARE_SECURITY_STATUS FrontPanelResetStatus :2;
1508 EFI_MISC_HARDWARE_SECURITY_STATUS AdministratorPasswordStatus :2;
1509 EFI_MISC_HARDWARE_SECURITY_STATUS KeyboardPasswordStatus :2;
1510 EFI_MISC_HARDWARE_SECURITY_STATUS PowerOnPasswordStatus :2;
1511 EFI_MISC_HARDWARE_SECURITY_STATUS Reserved :24;
1512 } EFI_MISC_HARDWARE_SECURITY_SETTINGS;
1513
1514 typedef struct {
1515 EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;
1516 } EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;
1517
1518 //
1519 //////////////////////////////////////////////////////////////////////////////
1520 //
1521 // System Power Controls - SMBIOS Type 25
1522 //
1523 #define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013
1524
1525 typedef struct {
1526 UINT16 ScheduledPoweronMonth;
1527 UINT16 ScheduledPoweronDayOfMonth;
1528 UINT16 ScheduledPoweronHour;
1529 UINT16 ScheduledPoweronMinute;
1530 UINT16 ScheduledPoweronSecond;
1531 } EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;
1532
1533 //
1534 //////////////////////////////////////////////////////////////////////////////
1535 //
1536 // Voltage Probe - SMBIOS Type 26
1537 //
1538 #define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014
1539
1540 typedef struct {
1541 UINT32 VoltageProbeSite :5;
1542 UINT32 VoltageProbeStatus :3;
1543 UINT32 Reserved :24;
1544 } EFI_MISC_VOLTAGE_PROBE_LOCATION;
1545
1546 typedef struct {
1547 STRING_REF VoltageProbeDescription;
1548 EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation;
1549 EFI_EXP_BASE10_DATA VoltageProbeMaximumValue;
1550 EFI_EXP_BASE10_DATA VoltageProbeMinimumValue;
1551 EFI_EXP_BASE10_DATA VoltageProbeResolution;
1552 EFI_EXP_BASE10_DATA VoltageProbeTolerance;
1553 EFI_EXP_BASE10_DATA VoltageProbeAccuracy;
1554 EFI_EXP_BASE10_DATA VoltageProbeNominalValue;
1555 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1556 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1557 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1558 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1559 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1560 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1561 UINT32 VoltageProbeOemDefined;
1562 } EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;
1563
1564 //
1565 //////////////////////////////////////////////////////////////////////////////
1566 //
1567 // Cooling Device - SMBIOS Type 27
1568 //
1569 #define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015
1570
1571 typedef struct {
1572 UINT32 CoolingDevice :5;
1573 UINT32 CoolingDeviceStatus :3;
1574 UINT32 Reserved :24;
1575 } EFI_MISC_COOLING_DEVICE_TYPE;
1576
1577 typedef struct {
1578 EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType;
1579 EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink;
1580 UINT16 CoolingDeviceUnitGroup;
1581 EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed;
1582 UINT32 CoolingDeviceOemDefined;
1583 } EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;
1584
1585 //
1586 //////////////////////////////////////////////////////////////////////////////
1587 //
1588 // Temperature Probe - SMBIOS Type 28
1589 //
1590 #define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016
1591
1592 typedef struct {
1593 UINT32 TemperatureProbeSite :5;
1594 UINT32 TemperatureProbeStatus :3;
1595 UINT32 Reserved :24;
1596 } EFI_MISC_TEMPERATURE_PROBE_LOCATION;
1597
1598 typedef struct {
1599 STRING_REF TemperatureProbeDescription;
1600 EFI_MISC_TEMPERATURE_PROBE_LOCATION
1601 TemperatureProbeLocation;
1602 EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue;
1603 EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue;
1604 EFI_EXP_BASE10_DATA TemperatureProbeResolution;
1605 EFI_EXP_BASE10_DATA TemperatureProbeTolerance;
1606 EFI_EXP_BASE10_DATA TemperatureProbeAccuracy;
1607 EFI_EXP_BASE10_DATA TemperatureProbeNominalValue;
1608 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1609 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1610 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1611 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1612 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1613 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1614 UINT32 TemperatureProbeOemDefined;
1615 } EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;
1616
1617 //
1618 //////////////////////////////////////////////////////////////////////////////
1619 //
1620 // Electrical Current Probe - SMBIOS Type 29
1621 //
1622
1623 #define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017
1624
1625 typedef struct {
1626 UINT32 ElectricalCurrentProbeSite :5;
1627 UINT32 ElectricalCurrentProbeStatus :3;
1628 UINT32 Reserved :24;
1629 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;
1630
1631 typedef struct {
1632 STRING_REF ElectricalCurrentProbeDescription;
1633 EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION
1634 ElectricalCurrentProbeLocation;
1635 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue;
1636 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue;
1637 EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution;
1638 EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance;
1639 EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy;
1640 EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue;
1641 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;
1642 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;
1643 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;
1644 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;
1645 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;
1646 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;
1647 UINT32 ElectricalCurrentProbeOemDefined;
1648 } EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;
1649
1650 //
1651 //////////////////////////////////////////////////////////////////////////////
1652 //
1653 // Out-of-Band Remote Access - SMBIOS Type 30
1654 //
1655
1656 #define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018
1657
1658 typedef struct {
1659 UINT32 InboundConnectionEnabled :1;
1660 UINT32 OutboundConnectionEnabled :1;
1661 UINT32 Reserved :30;
1662 } EFI_MISC_REMOTE_ACCESS_CONNECTIONS;
1663
1664 typedef struct {
1665 STRING_REF RemoteAccessManufacturerNameDescription;
1666 EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections;
1667 } EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;
1668
1669 //
1670 //////////////////////////////////////////////////////////////////////////////
1671 //
1672 // Misc. BIS Entry Point - SMBIOS Type 31
1673 //
1674 #define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019
1675
1676 typedef struct {
1677 EFI_PHYSICAL_ADDRESS BisEntryPoint;
1678 } EFI_MISC_BIS_ENTRY_POINT_DATA;
1679
1680 //
1681 //////////////////////////////////////////////////////////////////////////////
1682 //
1683 // Misc. Boot Information - SMBIOS Type 32
1684 //
1685 #define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A
1686
1687 typedef enum {
1688 EfiBootInformationStatusNoError = 0x00,
1689 EfiBootInformationStatusNoBootableMedia = 0x01,
1690 EfiBootInformationStatusNormalOSFailedLoading = 0x02,
1691 EfiBootInformationStatusFirmwareDetectedFailure = 0x03,
1692 EfiBootInformationStatusOSDetectedFailure = 0x04,
1693 EfiBootInformationStatusUserRequestedBoot = 0x05,
1694 EfiBootInformationStatusSystemSecurityViolation = 0x06,
1695 EfiBootInformationStatusPreviousRequestedImage = 0x07,
1696 EfiBootInformationStatusWatchdogTimerExpired = 0x08,
1697 EfiBootInformationStatusStartReserved = 0x09,
1698 EfiBootInformationStatusStartOemSpecific = 0x80,
1699 EfiBootInformationStatusStartProductSpecific = 0xC0,
1700 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;
1701
1702 typedef struct {
1703 EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;
1704 UINT8 BootInformationData[9];
1705 } EFI_MISC_BOOT_INFORMATION_STATUS_DATA;
1706
1707 //
1708 //////////////////////////////////////////////////////////////////////////////
1709 //
1710 // Management Device - SMBIOS Type 34
1711 //
1712 #define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B
1713
1714 typedef enum {
1715 EfiManagementDeviceTypeOther = 0x01,
1716 EfiManagementDeviceTypeUnknown = 0x02,
1717 EfiManagementDeviceTypeLm75 = 0x03,
1718 EfiManagementDeviceTypeLm78 = 0x04,
1719 EfiManagementDeviceTypeLm79 = 0x05,
1720 EfiManagementDeviceTypeLm80 = 0x06,
1721 EfiManagementDeviceTypeLm81 = 0x07,
1722 EfiManagementDeviceTypeAdm9240 = 0x08,
1723 EfiManagementDeviceTypeDs1780 = 0x09,
1724 EfiManagementDeviceTypeMaxim1617 = 0x0A,
1725 EfiManagementDeviceTypeGl518Sm = 0x0B,
1726 EfiManagementDeviceTypeW83781D = 0x0C,
1727 EfiManagementDeviceTypeHt82H791 = 0x0D,
1728 } EFI_MISC_MANAGEMENT_DEVICE_TYPE;
1729
1730 typedef enum {
1731 EfiManagementDeviceAddressTypeOther = 1,
1732 EfiManagementDeviceAddressTypeUnknown = 2,
1733 EfiManagementDeviceAddressTypeIOPort = 3,
1734 EfiManagementDeviceAddressTypeMemory = 4,
1735 EfiManagementDeviceAddressTypeSmbus = 5
1736 } EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;
1737
1738 typedef struct {
1739 STRING_REF ManagementDeviceDescription;
1740 EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType;
1741 UINTN ManagementDeviceAddress;
1742 EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE
1743 ManagementDeviceAddressType;
1744 } EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;
1745
1746 //
1747 //////////////////////////////////////////////////////////////////////////////
1748 //
1749 // Management Device Component - SMBIOS Type 35
1750 //
1751
1752 #define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C
1753
1754 typedef struct {
1755 STRING_REF ManagementDeviceComponentDescription;
1756 EFI_INTER_LINK_DATA ManagementDeviceLink;
1757 EFI_INTER_LINK_DATA ManagementDeviceComponentLink;
1758 } EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;
1759
1760 //
1761 //////////////////////////////////////////////////////////////////////////////
1762 //
1763 // IPMI Data Record - SMBIOS Type 38
1764 //
1765 typedef enum {
1766 EfiIpmiOther = 0,
1767 EfiIpmiKcs = 1,
1768 EfiIpmiSmic = 2,
1769 EfiIpmiBt = 3,
1770 } EFI_MISC_IPMI_INTERFACE_TYPE;
1771
1772 typedef struct {
1773 UINT16 IpmiSpecLeastSignificantDigit:4;
1774 UINT16 IpmiSpecMostSignificantDigit: 4;
1775 UINT16 Reserved: 8;
1776 } EFI_MISC_IPMI_SPECIFICATION_REVISION;
1777
1778 typedef struct {
1779 EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType;
1780 EFI_MISC_IPMI_SPECIFICATION_REVISION IpmiSpecificationRevision;
1781 UINT16 IpmiI2CSlaveAddress;
1782 UINT16 IpmiNvDeviceAddress;
1783 UINT64 IpmiBaseAddress;
1784 EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath;
1785 } EFI_MISC_IPMI_INTERFACE_TYPE_DATA;
1786
1787 #define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D
1788
1789 //
1790 //////////////////////////////////////////////////////////////////////////////
1791 //
1792 //System Power supply Record - SMBIOS Type 39
1793 //
1794 typedef struct {
1795 UINT16 PowerSupplyHotReplaceable :1;
1796 UINT16 PowerSupplyPresent :1;
1797 UINT16 PowerSupplyUnplugged :1;
1798 UINT16 InputVoltageRangeSwitch :4;
1799 UINT16 PowerSupplyStatus :3;
1800 UINT16 PowerSupplyType :4;
1801 UINT16 Reserved :2;
1802 } POWER_SUPPLY_CHARACTERISTICS;
1803
1804 typedef struct {
1805 UINT16 PowerUnitGroup;
1806 STRING_REF PowerSupplyLocation;
1807 STRING_REF PowerSupplyDeviceName;
1808 STRING_REF PowerSupplyManufacturer;
1809 STRING_REF PowerSupplySerialNumber;
1810 STRING_REF PowerSupplyAssetTagNumber;
1811 STRING_REF PowerSupplyModelPartNumber;
1812 STRING_REF PowerSupplyRevisionLevel;
1813 UINT16 PowerSupplyMaxPowerCapacity;
1814 POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;
1815 EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;
1816 EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;
1817 EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;
1818 } EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;
1819
1820 #define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E
1821
1822 //
1823 //////////////////////////////////////////////////////////////////////////////
1824 //
1825 // OEM Data Record - SMBIOS Type 0x80-0xFF
1826 //
1827 typedef struct {
1828 UINT8 Type;
1829 UINT8 Length;
1830 UINT16 Handle;
1831 } SMBIOS_STRUCTURE_HDR;
1832
1833 typedef struct {
1834 SMBIOS_STRUCTURE_HDR Header;
1835 UINT8 RawData[1];
1836 } EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;
1837
1838 #define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F
1839
1840 //
1841 // Declare the following strutures alias to use them more conviniently.
1842 //
1843 typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS;
1844 typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR;
1845 typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER;
1846 typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER;
1847 typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER;
1848 typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;
1849 typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION;
1850 typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE;
1851 typedef EFI_MISC_PORTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;
1852 typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING;
1853 typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING;
1854 typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;
1855 typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING;
1856 typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG;
1857 typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT;
1858 typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS;
1859 typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY;
1860 typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;
1861
1862 typedef union {
1863 EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;
1864 EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor;
1865 EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer;
1866 EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer;
1867 EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer;
1868 EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator;
1869 EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation;
1870 EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice;
1871 EFI_MISC_OEM_STRING_DATA MiscOemString;
1872 EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString;
1873 EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages;
1874 EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString;
1875 EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog;
1876 EFI_MISC_GROUP_NAME_DATA MiscGroupNameData;
1877 EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData;
1878 EFI_MISC_PORTING_DEVICE_TYPE_DATA MiscPortingDeviceTypeData;
1879 EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData;
1880 EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData;
1881 EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData;
1882 EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData;
1883 EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData;
1884 EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData;
1885 EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;
1886 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA
1887 MiscRemoteAccessManufacturerDescriptionData;
1888 EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint;
1889 EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus;
1890 EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData;
1891 EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA
1892 MiscmangementDeviceComponentDescriptionData;
1893 EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData;
1894 EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo;
1895 EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation;
1896 } EFI_MISC_SUBCLASS_RECORDS;
1897
1898 //
1899 //
1900 //
1901 typedef struct {
1902 EFI_SUBCLASS_TYPE1_HEADER Header;
1903 EFI_MISC_SUBCLASS_RECORDS Record;
1904 } EFI_MISC_SUBCLASS_DRIVER_DATA;
1905
1906 #pragma pack()
1907
1908 //
1909 // Sub Class Header type1
1910 //
1911
1912 #define EFI_SUBCLASS_INSTANCE_RESERVED 0
1913 #define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF //16 bit
1914
1915 #endif