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