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