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