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