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