]> git.proxmox.com Git - mirror_edk2.git/blame - IntelFrameworkPkg/Include/Framework/DataHubRecords.h
1. add comments for those fields not defined by MemorySubclass spec.
[mirror_edk2.git] / IntelFrameworkPkg / Include / Framework / DataHubRecords.h
CommitLineData
4a71b21a 1/** @file\r
79964ac8 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) 2007, 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
b80fbe85 27#include <PiPei.h>\r
28#include <Protocol/DevicePath.h>\r
8bc7aa6a 29#include <Protocol/FrameworkHii.h>\r
b80fbe85 30\r
b66be4ca 31#define EFI_PROCESSOR_SUBCLASS_VERSION 0x0100\r
79964ac8 32\r
79964ac8 33#pragma pack(1)\r
34\r
35typedef struct _USB_PORT_DEVICE_PATH {\r
9205b2d7 36 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
37 PCI_DEVICE_PATH PciBusDevicePath;\r
38 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 39} USB_PORT_DEVICE_PATH;\r
40\r
41//\r
42// IDE\r
43//\r
44typedef struct _IDE_DEVICE_PATH {\r
9205b2d7 45 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
46 PCI_DEVICE_PATH PciBusDevicePath;\r
47 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 48} IDE_DEVICE_PATH;\r
49\r
50//\r
51// RMC Connector\r
52//\r
53typedef struct _RMC_CONN_DEVICE_PATH {\r
9205b2d7 54 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
55 PCI_DEVICE_PATH PciBridgeDevicePath;\r
56 PCI_DEVICE_PATH PciBusDevicePath;\r
57 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 58} RMC_CONN_DEVICE_PATH;\r
59\r
60//\r
61// RIDE\r
62//\r
63typedef struct _RIDE_DEVICE_PATH {\r
9205b2d7 64 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
65 PCI_DEVICE_PATH PciBridgeDevicePath;\r
66 PCI_DEVICE_PATH PciBusDevicePath;\r
67 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 68} RIDE_DEVICE_PATH;\r
69\r
70//\r
71// Gigabit NIC\r
72//\r
73typedef struct _GB_NIC_DEVICE_PATH {\r
9205b2d7 74 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
75 PCI_DEVICE_PATH PciBridgeDevicePath;\r
76 PCI_DEVICE_PATH PciXBridgeDevicePath;\r
77 PCI_DEVICE_PATH PciXBusDevicePath;\r
78 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 79} GB_NIC_DEVICE_PATH;\r
80\r
81//\r
82// P/S2 Connector\r
83//\r
84typedef struct _PS2_CONN_DEVICE_PATH {\r
9205b2d7 85 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
86 PCI_DEVICE_PATH LpcBridgeDevicePath;\r
87 ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
88 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 89} PS2_CONN_DEVICE_PATH;\r
90\r
91//\r
92// Serial Port Connector\r
93//\r
94typedef struct _SERIAL_CONN_DEVICE_PATH {\r
9205b2d7 95 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
96 PCI_DEVICE_PATH LpcBridgeDevicePath;\r
97 ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
98 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 99} SERIAL_CONN_DEVICE_PATH;\r
100\r
101//\r
102// Parallel Port Connector\r
103//\r
104typedef struct _PARALLEL_CONN_DEVICE_PATH {\r
9205b2d7 105 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
106 PCI_DEVICE_PATH LpcBridgeDevicePath;\r
107 ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
108 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 109} PARALLEL_CONN_DEVICE_PATH;\r
110\r
111//\r
112// Floopy Connector\r
113//\r
114typedef struct _FLOOPY_CONN_DEVICE_PATH {\r
9205b2d7 115 ACPI_HID_DEVICE_PATH PciRootBridgeDevicePath;\r
116 PCI_DEVICE_PATH LpcBridgeDevicePath;\r
117 ACPI_HID_DEVICE_PATH LpcBusDevicePath;\r
118 EFI_DEVICE_PATH_PROTOCOL EndDevicePath;\r
79964ac8 119} FLOOPY_CONN_DEVICE_PATH;\r
120\r
2b47aaa6 121///\r
122/// Inconsistent with specification here: \r
123/// In MiscSubclass spec0.9, this data structure and corrsponding fields are NOT defined.\r
124/// It's implementation-specific to simplify the code logic.\r
125///\r
79964ac8 126typedef union _EFI_MISC_PORT_DEVICE_PATH {\r
9205b2d7 127 USB_PORT_DEVICE_PATH UsbDevicePath;\r
128 IDE_DEVICE_PATH IdeDevicePath;\r
129 RMC_CONN_DEVICE_PATH RmcConnDevicePath;\r
130 RIDE_DEVICE_PATH RideDevicePath;\r
131 GB_NIC_DEVICE_PATH GbNicDevicePath;\r
132 PS2_CONN_DEVICE_PATH Ps2ConnDevicePath;\r
133 SERIAL_CONN_DEVICE_PATH SerialConnDevicePath;\r
134 PARALLEL_CONN_DEVICE_PATH ParallelConnDevicePath;\r
135 FLOOPY_CONN_DEVICE_PATH FloppyConnDevicePath;\r
79964ac8 136} EFI_MISC_PORT_DEVICE_PATH;\r
137\r
138#pragma pack()\r
470d0b27 139///\r
140/// Each data record that is a member of some subclass starts with a standard \r
141/// header of type EFI_SUBCLASS_TYPE1_HEADER.\r
142/// This header is only a guideline and applicable only to a data \r
143/// subclass that is producing SMBIOS data records. A subclass can start with a \r
144/// different header if needed. \r
145///\r
79964ac8 146typedef struct {\r
470d0b27 147 ///\r
148 /// The version of the specification to which a specific subclass data record adheres. \r
149 ///\r
9205b2d7 150 UINT32 Version;\r
470d0b27 151 ///\r
152 /// The size in bytes of this data class header. \r
153 ///\r
9205b2d7 154 UINT32 HeaderSize;\r
470d0b27 155 ///\r
156 /// The instance number of the subclass with the same ProducerName. This number is \r
157 /// applicable in cases where multiple subclass instances that were produced by the same \r
158 /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not \r
159 /// Applicable. All data consumer drivers should be able to handle all the possible values \r
160 /// of Instance, including Not Applicable and Reserved. \r
161 ///\r
9205b2d7 162 UINT16 Instance;\r
470d0b27 163 ///\r
164 /// The instance number of the RecordType for the same Instance. This number is \r
165 /// applicable in cases where multiple instances of the RecordType exist for a specific \r
166 /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable. \r
167 /// All data consumer drivers should be able to handle all the possible values of \r
168 /// SubInstance, including Not Applicable and Reserved. \r
169 ///\r
9205b2d7 170 UINT16 SubInstance;\r
470d0b27 171 ///\r
172 /// The record number for the data record being specified. The numbering scheme and \r
173 /// definition is defined in the specific subclass specification. \r
174 ///\r
9205b2d7 175 UINT32 RecordType;\r
79964ac8 176} EFI_SUBCLASS_TYPE1_HEADER;\r
177\r
470d0b27 178///\r
179/// This structure is used to link data records in the same subclasses. A data record is \r
180/// defined as a link to another data record in the same subclass using this structure. \r
181///\r
79964ac8 182typedef struct {\r
470d0b27 183 ///\r
184 /// An EFI_GUID that identifies the component that produced this data record. Type \r
185 /// EFI_GUID is defined in InstallProtocolInterface() in the EFI 1.10 Specification. \r
186 ///\r
9205b2d7 187 EFI_GUID ProducerName;\r
470d0b27 188 ///\r
189 /// The instance number of the subclass with the same ProducerName. This number is \r
190 /// applicable in cases where multiple subclass instances that were produced by the same \r
191 /// driver exist in the system. This entry is 1 based; 0 means Reserved and -1 means Not \r
192 /// Applicable. All data consumer drivers should be able to handle all the possible values \r
193 /// of Instance, including Not Applicable and Reserved. \r
194 ///\r
9205b2d7 195 UINT16 Instance;\r
470d0b27 196 /// The instance number of the RecordType for the same Instance. This number is \r
197 /// applicable in cases where multiple instances of the RecordType exist for a specific \r
198 /// Instance. This entry is 1 based; 0 means Reserved and -1 means Not Applicable. \r
199 /// All data consumer drivers should be able to handle all the possible values of \r
200 /// SubInstance, including Not Applicable and Reserved. \r
9205b2d7 201 UINT16 SubInstance;\r
79964ac8 202} EFI_INTER_LINK_DATA;\r
203\r
79964ac8 204//\r
205// EXP data\r
206//\r
470d0b27 207///\r
208/// This macro provides a calculation for base-10 representations. Value and Exponent are each \r
209/// INT16. It is signed to cover negative values and is 16 bits wide (15 bits for data and 1 bit\r
210/// for the sign). \r
211///\r
79964ac8 212typedef struct {\r
470d0b27 213 ///\r
214 /// The INT16 number by which to multiply the base-10 representation. \r
215 ///\r
9205b2d7 216 UINT16 Value;\r
470d0b27 217 ///\r
218 /// The INT16 number by which to raise the base-10 calculation. \r
219 ///\r
9205b2d7 220 UINT16 Exponent;\r
79964ac8 221} EFI_EXP_BASE2_DATA;\r
222\r
470d0b27 223///\r
224/// This macro provides a calculation for base-2 representations. Value and Exponent are each \r
225/// INT16. It is 16 bits wide and is unsigned to mean nonnegative values. \r
226///\r
df2b7d51 227typedef struct {\r
470d0b27 228 ///\r
229 /// The INT16 number by which to multiply the base-2 representation.\r
230 ///\r
b66be4ca 231 INT16 Value;\r
470d0b27 232 ///\r
233 /// The INT16 number by which to raise the base-2 calculation. \r
234 ///\r
b66be4ca 235 INT16 Exponent;\r
df2b7d51 236} EFI_EXP_BASE10_DATA;\r
237\r
9205b2d7 238typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA;\r
239typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA;\r
240typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_CORE_FREQUENCY_DATA;\r
470d0b27 241\r
242///\r
243/// This data record refers to the list of frequencies that the processor core supports. The list of \r
244/// supported frequencies is determined by the firmware based on hardware capabilities--for example, \r
245/// it could be a common subset of all processors and the chipset. The unit of measurement of this data \r
246/// record is in Hertz. For asynchronous processors, the content of this data record is zero. \r
247/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means \r
248/// that the processor/driver supports automatic frequency selection. \r
249///\r
2cbfdae3 250/// Inconsistent with specification here: \r
251/// It's a typo of MiscSubclass 0.9 spec. It should be a pointer since it refers to a list of frequencies.\r
252///\r
9205b2d7 253typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA;\r
470d0b27 254\r
255///\r
256/// This data record refers to the list of supported frequencies of the processor external bus. The list of \r
257/// supported frequencies is determined by the firmware based on hardware capabilities--for example, \r
258/// it could be a common subset of all processors and the chipset. The unit of measurement of this data \r
259/// record is in Hertz. For asynchronous processors, the content of this data record is NULL. \r
260/// The list is terminated by -1 in the Value field of the last element. A Value field of zero means \r
261/// that the processor/driver supports automatic frequency selection. \r
262///\r
9205b2d7 263typedef EFI_EXP_BASE10_DATA *EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA;\r
264typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_FSB_FREQUENCY_DATA;\r
265typedef STRING_REF EFI_PROCESSOR_VERSION_DATA;\r
266typedef STRING_REF EFI_PROCESSOR_MANUFACTURER_DATA;\r
267typedef STRING_REF EFI_PROCESSOR_SERIAL_NUMBER_DATA;\r
268typedef STRING_REF EFI_PROCESSOR_ASSET_TAG_DATA;\r
269\r
270typedef struct {\r
271 UINT32 ProcessorSteppingId:4;\r
272 UINT32 ProcessorModel: 4;\r
273 UINT32 ProcessorFamily: 4;\r
274 UINT32 ProcessorType: 2;\r
275 UINT32 ProcessorReserved1: 2;\r
276 UINT32 ProcessorXModel: 4;\r
277 UINT32 ProcessorXFamily: 8;\r
278 UINT32 ProcessorReserved2: 4;\r
79964ac8 279} EFI_PROCESSOR_SIGNATURE;\r
280\r
281typedef struct {\r
b66be4ca 282 UINT32 ProcessorBrandIndex :8;\r
283 UINT32 ProcessorClflush :8;\r
284 UINT32 LogicalProcessorCount :8;\r
285 UINT32 ProcessorDfltApicId :8;\r
79964ac8 286} EFI_PROCESSOR_MISC_INFO;\r
287\r
288typedef struct {\r
9205b2d7 289 UINT32 ProcessorFpu: 1;\r
290 UINT32 ProcessorVme: 1;\r
291 UINT32 ProcessorDe: 1;\r
292 UINT32 ProcessorPse: 1;\r
293 UINT32 ProcessorTsc: 1;\r
294 UINT32 ProcessorMsr: 1;\r
295 UINT32 ProcessorPae: 1;\r
296 UINT32 ProcessorMce: 1;\r
297 UINT32 ProcessorCx8: 1;\r
298 UINT32 ProcessorApic: 1;\r
299 UINT32 ProcessorReserved1: 1;\r
300 UINT32 ProcessorSep: 1;\r
301 UINT32 ProcessorMtrr: 1;\r
302 UINT32 ProcessorPge: 1;\r
303 UINT32 ProcessorMca: 1;\r
304 UINT32 ProcessorCmov: 1;\r
305 UINT32 ProcessorPat: 1;\r
306 UINT32 ProcessorPse36: 1;\r
307 UINT32 ProcessorPsn: 1;\r
308 UINT32 ProcessorClfsh: 1;\r
309 UINT32 ProcessorReserved2: 1;\r
310 UINT32 ProcessorDs: 1;\r
311 UINT32 ProcessorAcpi: 1;\r
312 UINT32 ProcessorMmx: 1;\r
313 UINT32 ProcessorFxsr: 1;\r
314 UINT32 ProcessorSse: 1;\r
315 UINT32 ProcessorSse2: 1;\r
316 UINT32 ProcessorSs: 1;\r
317 UINT32 ProcessorReserved3: 1;\r
318 UINT32 ProcessorTm: 1;\r
319 UINT32 ProcessorReserved4: 2;\r
79964ac8 320} EFI_PROCESSOR_FEATURE_FLAGS;\r
321\r
470d0b27 322///\r
323/// This data record refers to the unique ID that identifies a set of processors. This data record is 16 \r
324/// bytes in length. The data in this structure is processor specific and reserved values can be defined \r
325/// for future use. The consumer of this data should not make any assumption and should use this data \r
326/// with respect to the processor family defined in the Family record number. \r
327///\r
79964ac8 328typedef struct {\r
470d0b27 329 ///\r
330 /// Identifies the processor.\r
331 ///\r
9205b2d7 332 EFI_PROCESSOR_SIGNATURE Signature;\r
470d0b27 333 ///\r
334 /// Provides additional processor information. \r
335 ///\r
9205b2d7 336 EFI_PROCESSOR_MISC_INFO MiscInfo;\r
470d0b27 337 ///\r
338 /// Reserved for future use. \r
339 ///\r
9205b2d7 340 UINT32 Reserved;\r
470d0b27 341 ///\r
342 /// Provides additional processor information. \r
343 ///\r
9205b2d7 344 EFI_PROCESSOR_FEATURE_FLAGS FeatureFlags;\r
79964ac8 345} EFI_PROCESSOR_ID_DATA;\r
346\r
470d0b27 347///\r
348/// This data record refers to the general classification of the processor. This data record is 4 bytes in \r
349/// length. \r
350///\r
79964ac8 351typedef enum {\r
352 EfiProcessorOther = 1,\r
353 EfiProcessorUnknown = 2,\r
354 EfiCentralProcessor = 3,\r
355 EfiMathProcessor = 4,\r
356 EfiDspProcessor = 5,\r
357 EfiVideoProcessor = 6\r
358} EFI_PROCESSOR_TYPE_DATA;\r
359\r
470d0b27 360///\r
361/// This data record refers to the family of the processor as defined by the DMTF. \r
362/// This data record is 4 bytes in length. \r
363///\r
79964ac8 364typedef enum {\r
a244f400 365 EfiProcessorFamilyOther = 0x01, \r
366 EfiProcessorFamilyUnknown = 0x02,\r
367 EfiProcessorFamily8086 = 0x03, \r
368 EfiProcessorFamily80286 = 0x04,\r
369 EfiProcessorFamilyIntel386 = 0x05, \r
370 EfiProcessorFamilyIntel486 = 0x06,\r
371 EfiProcessorFamily8087 = 0x07,\r
372 EfiProcessorFamily80287 = 0x08,\r
373 EfiProcessorFamily80387 = 0x09, \r
374 EfiProcessorFamily80487 = 0x0A,\r
375 EfiProcessorFamilyPentium = 0x0B, \r
376 EfiProcessorFamilyPentiumPro = 0x0C,\r
377 EfiProcessorFamilyPentiumII = 0x0D,\r
378 EfiProcessorFamilyPentiumMMX = 0x0E,\r
379 EfiProcessorFamilyCeleron = 0x0F,\r
380 EfiProcessorFamilyPentiumIIXeon = 0x10,\r
381 EfiProcessorFamilyPentiumIII = 0x11, \r
382 EfiProcessorFamilyM1 = 0x12,\r
383 EfiProcessorFamilyM2 = 0x13,\r
384 EfiProcessorFamilyM1Reserved2 = 0x14,\r
385 EfiProcessorFamilyM1Reserved3 = 0x15,\r
386 EfiProcessorFamilyM1Reserved4 = 0x16,\r
387 EfiProcessorFamilyM1Reserved5 = 0x17,\r
388 EfiProcessorFamilyAmdDuron = 0x18,\r
389 EfiProcessorFamilyK5 = 0x19, \r
390 EfiProcessorFamilyK6 = 0x1A,\r
391 EfiProcessorFamilyK6_2 = 0x1B,\r
392 EfiProcessorFamilyK6_3 = 0x1C,\r
393 EfiProcessorFamilyAmdAthlon = 0x1D,\r
394 EfiProcessorFamilyAmd29000 = 0x1E,\r
395 EfiProcessorFamilyK6_2Plus = 0x1F,\r
396 EfiProcessorFamilyPowerPC = 0x20,\r
397 EfiProcessorFamilyPowerPC601 = 0x21,\r
398 EfiProcessorFamilyPowerPC603 = 0x22,\r
399 EfiProcessorFamilyPowerPC603Plus = 0x23,\r
400 EfiProcessorFamilyPowerPC604 = 0x24,\r
401 EfiProcessorFamilyPowerPC620 = 0x25,\r
402 EfiProcessorFamilyPowerPCx704 = 0x26,\r
403 EfiProcessorFamilyPowerPC750 = 0x27,\r
404 EfiProcessorFamilyAlpha3 = 0x30,\r
405 EfiProcessorFamilyAlpha21064 = 0x31,\r
406 EfiProcessorFamilyAlpha21066 = 0x32,\r
407 EfiProcessorFamilyAlpha21164 = 0x33,\r
408 EfiProcessorFamilyAlpha21164PC = 0x34,\r
409 EfiProcessorFamilyAlpha21164a = 0x35,\r
410 EfiProcessorFamilyAlpha21264 = 0x36,\r
411 EfiProcessorFamilyAlpha21364 = 0x37,\r
412 EfiProcessorFamilyMips = 0x40,\r
413 EfiProcessorFamilyMIPSR4000 = 0x41,\r
414 EfiProcessorFamilyMIPSR4200 = 0x42,\r
415 EfiProcessorFamilyMIPSR4400 = 0x43,\r
416 EfiProcessorFamilyMIPSR4600 = 0x44,\r
417 EfiProcessorFamilyMIPSR10000 = 0x45,\r
418 EfiProcessorFamilySparc = 0x50,\r
419 EfiProcessorFamilySuperSparc = 0x51,\r
420 EfiProcessorFamilymicroSparcII = 0x52,\r
421 EfiProcessorFamilymicroSparcIIep = 0x53,\r
422 EfiProcessorFamilyUltraSparc = 0x54,\r
423 EfiProcessorFamilyUltraSparcII = 0x55,\r
424 EfiProcessorFamilyUltraSparcIIi = 0x56,\r
425 EfiProcessorFamilyUltraSparcIII = 0x57,\r
b66be4ca 426 ///\r
427 /// Inconsistent with specification here: \r
428 /// This field in ProcSubClass spec0.9 is defined as EfiProcessorFamilyUltraSparcIIi, it's a typo.\r
429 ///\r
a244f400 430 EfiProcessorFamilyUltraSparcIIIi = 0x58,\r
431 EfiProcessorFamily68040 = 0x60,\r
432 EfiProcessorFamily68xxx = 0x61,\r
433 EfiProcessorFamily68000 = 0x62,\r
434 EfiProcessorFamily68010 = 0x63,\r
435 EfiProcessorFamily68020 = 0x64,\r
436 EfiProcessorFamily68030 = 0x65,\r
437 EfiProcessorFamilyHobbit = 0x70,\r
438 EfiProcessorFamilyCrusoeTM5000 = 0x78,\r
439 EfiProcessorFamilyCrusoeTM3000 = 0x79,\r
440 EfiProcessorFamilyEfficeonTM8000 = 0x7A,\r
441 EfiProcessorFamilyWeitek = 0x80,\r
442 EfiProcessorFamilyItanium = 0x82,\r
443 EfiProcessorFamilyAmdAthlon64 = 0x83,\r
444 EfiProcessorFamilyAmdOpteron = 0x84,\r
445 EfiProcessorFamilyAmdSempron = 0x85,\r
446 EfiProcessorFamilyAmdTurion64Mobile = 0x86,\r
447 EfiProcessorFamilyDualCoreAmdOpteron = 0x87,\r
448 EfiProcessorFamilyAmdAthlon64X2DualCore = 0x88,\r
449 EfiProcessorFamilyAmdTurion64X2Mobile = 0x89,\r
450 EfiProcessorFamilyPARISC = 0x90,\r
451 EfiProcessorFamilyPaRisc8500 = 0x91,\r
452 EfiProcessorFamilyPaRisc8000 = 0x92,\r
453 EfiProcessorFamilyPaRisc7300LC = 0x93,\r
454 EfiProcessorFamilyPaRisc7200 = 0x94,\r
455 EfiProcessorFamilyPaRisc7100LC = 0x95,\r
456 EfiProcessorFamilyPaRisc7100 = 0x96,\r
457 EfiProcessorFamilyV30 = 0xA0,\r
458 EfiProcessorFamilyPentiumIIIXeon = 0xB0,\r
459 EfiProcessorFamilyPentiumIIISpeedStep = 0xB1,\r
460 EfiProcessorFamilyPentium4 = 0xB2,\r
461 EfiProcessorFamilyIntelXeon = 0xB3,\r
462 EfiProcessorFamilyAS400 = 0xB4,\r
463 EfiProcessorFamilyIntelXeonMP = 0xB5,\r
464 EfiProcessorFamilyAMDAthlonXP = 0xB6,\r
465 EfiProcessorFamilyAMDAthlonMP = 0xB7,\r
466 EfiProcessorFamilyIntelItanium2 = 0xB8,\r
b66be4ca 467 ///\r
468 /// Inconsistent with specification here: \r
469 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
470 ///\r
a244f400 471 EfiProcessorFamilyIntelPentiumM = 0xB9,\r
b66be4ca 472 ///\r
473 /// Inconsistent with specification here: \r
474 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
475 ///\r
a244f400 476 EfiProcessorFamilyIntelCeleronD = 0xBA,\r
b66be4ca 477 ///\r
478 /// Inconsistent with specification here: \r
479 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
480 ///\r
a244f400 481 EfiProcessorFamilyIntelPentiumD = 0xBB,\r
b66be4ca 482 ///\r
483 /// Inconsistent with specification here: \r
484 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
485 ///\r
a244f400 486 EfiProcessorFamilyIntelPentiumEx = 0xBC,\r
b66be4ca 487 ///\r
488 /// Inconsistent with specification here: \r
489 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
490 ///\r
491 EfiProcessorFamilyIntelCoreSolo = 0xBD, \r
492 ///\r
493 /// Inconsistent with specification here: \r
494 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
495 ///\r
496 EfiProcessorFamilyReserved = 0xBE, \r
497 ///\r
498 /// Inconsistent with specification here: \r
499 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
500 ///\r
a244f400 501 EfiProcessorFamilyIntelCore2 = 0xBF,\r
502 EfiProcessorFamilyIBM390 = 0xC8,\r
503 EfiProcessorFamilyG4 = 0xC9,\r
504 EfiProcessorFamilyG5 = 0xCA,\r
b66be4ca 505 ///\r
506 /// Inconsistent with specification here: \r
507 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
508 ///\r
a244f400 509 EfiProcessorFamilyG6 = 0xCB,\r
b66be4ca 510 ///\r
511 /// Inconsistent with specification here: \r
512 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
513 ///\r
a244f400 514 EfiProcessorFamilyzArchitectur = 0xCC,\r
b66be4ca 515 ///\r
516 /// Inconsistent with specification here: \r
517 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
518 ///\r
a244f400 519 EfiProcessorFamilyViaC7M = 0xD2,\r
b66be4ca 520 ///\r
521 /// Inconsistent with specification here: \r
522 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
523 ///\r
a244f400 524 EfiProcessorFamilyViaC7D = 0xD3,\r
b66be4ca 525 ///\r
526 /// Inconsistent with specification here: \r
527 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
528 ///\r
a244f400 529 EfiProcessorFamilyViaC7 = 0xD4,\r
b66be4ca 530 ///\r
531 /// Inconsistent with specification here: \r
532 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
533 ///\r
a244f400 534 EfiProcessorFamilyViaEden = 0xD5,\r
535 EfiProcessorFamilyi860 = 0xFA,\r
536 EfiProcessorFamilyi960 = 0xFB,\r
b66be4ca 537 ///\r
538 /// Inconsistent with specification here: \r
539 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
540 ///\r
a244f400 541 EfiProcessorFamilyIndicatorFamily2 = 0xFE,\r
b66be4ca 542 ///\r
543 /// Inconsistent with specification here: \r
544 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
545 ///\r
a244f400 546 EfiProcessorFamilyReserved1 = 0xFF\r
79964ac8 547} EFI_PROCESSOR_FAMILY_DATA;\r
548\r
470d0b27 549///\r
550/// This data record refers to the core voltage of the processor being defined. The unit of measurement \r
551/// of this data record is in volts. \r
552///\r
9205b2d7 553typedef EFI_EXP_BASE10_DATA EFI_PROCESSOR_VOLTAGE_DATA;\r
470d0b27 554\r
555///\r
556/// This data record refers to the base address of the APIC of the processor being defined. This data \r
557/// record is a physical address location. \r
558///\r
9205b2d7 559typedef EFI_PHYSICAL_ADDRESS EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA;\r
470d0b27 560\r
561///\r
562/// This data record refers to the ID of the APIC of the processor being defined. This data record is a \r
563/// 4-byte entry. \r
564///\r
9205b2d7 565typedef UINT32 EFI_PROCESSOR_APIC_ID_DATA;\r
470d0b27 566\r
567///\r
568/// This data record refers to the version number of the APIC of the processor being defined. This data \r
569/// record is a 4-byte entry. \r
570///\r
9205b2d7 571typedef UINT32 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA;\r
79964ac8 572\r
573typedef enum {\r
574 EfiProcessorIa32Microcode = 1,\r
575 EfiProcessorIpfPalAMicrocode = 2,\r
576 EfiProcessorIpfPalBMicrocode = 3\r
577} EFI_PROCESSOR_MICROCODE_TYPE;\r
578\r
470d0b27 579///\r
580/// This data record refers to the revision of the processor microcode that is loaded in the processor. \r
581/// This data record is a 4-byte entry. \r
582///\r
79964ac8 583typedef struct {\r
470d0b27 584 ///\r
585 /// Identifies what type of microcode the data is. \r
586 /// \r
9205b2d7 587 EFI_PROCESSOR_MICROCODE_TYPE ProcessorMicrocodeType;\r
470d0b27 588 ///\r
589 /// Indicates the revision number of this microcode. \r
590 ///\r
9205b2d7 591 UINT32 ProcessorMicrocodeRevisionNumber;\r
79964ac8 592} EFI_PROCESSOR_MICROCODE_REVISION_DATA;\r
593\r
470d0b27 594///\r
595/// This data record refers to the status of the processor.\r
596///\r
79964ac8 597typedef struct {\r
470d0b27 598 UINT32 CpuStatus :3; ///> Indicates the status of the processor. \r
599 UINT32 Reserved1 :3; ///> Reserved for future use. Should be set to zero. \r
600 UINT32 SocketPopulated :1; ///> Indicates if the processor is socketed or not. \r
601 UINT32 Reserved2 :1; ///> Reserved for future use. Should be set to zero. \r
602 UINT32 ApicEnable :1; ///> Indicates if the APIC is enabled or not. \r
603 UINT32 BootApplicationProcessor :1; ///> Indicates if this processor is the boot processor. \r
604 UINT32 Reserved3 :22;///> Reserved for future use. Should be set to zero. \r
79964ac8 605} EFI_PROCESSOR_STATUS_DATA;\r
606\r
607typedef enum {\r
608 EfiCpuStatusUnknown = 0,\r
609 EfiCpuStatusEnabled = 1,\r
610 EfiCpuStatusDisabledByUser = 2,\r
611 EfiCpuStatusDisabledbyBios = 3,\r
612 EfiCpuStatusIdle = 4,\r
613 EfiCpuStatusOther = 7\r
614} EFI_CPU_STATUS;\r
615\r
616typedef enum {\r
617 EfiProcessorSocketOther = 1,\r
618 EfiProcessorSocketUnknown = 2,\r
619 EfiProcessorSocketDaughterBoard = 3,\r
620 EfiProcessorSocketZIF = 4,\r
621 EfiProcessorSocketReplacePiggyBack = 5,\r
622 EfiProcessorSocketNone = 6,\r
623 EfiProcessorSocketLIF = 7,\r
624 EfiProcessorSocketSlot1 = 8,\r
625 EfiProcessorSocketSlot2 = 9,\r
626 EfiProcessorSocket370Pin = 0xA,\r
627 EfiProcessorSocketSlotA = 0xB,\r
628 EfiProcessorSocketSlotM = 0xC,\r
629 EfiProcessorSocket423 = 0xD,\r
630 EfiProcessorSocketA462 = 0xE,\r
631 EfiProcessorSocket478 = 0xF,\r
632 EfiProcessorSocket754 = 0x10,\r
633 EfiProcessorSocket940 = 0x11,\r
b66be4ca 634 ///\r
635 /// Inconsistent with specification here: \r
636 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
637 ///\r
79964ac8 638 EfiProcessorSocket939 = 0x12,\r
b66be4ca 639 ///\r
640 /// Inconsistent with specification here: \r
641 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
642 ///\r
79964ac8 643 EfiProcessorSocketmPGA604 = 0x13,\r
b66be4ca 644 ///\r
645 /// Inconsistent with specification here: \r
646 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
647 ///\r
79964ac8 648 EfiProcessorSocketLGA771 = 0x14,\r
b66be4ca 649 ///\r
650 /// Inconsistent with specification here: \r
651 /// This field is NOT defined in ProcSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
652 ///\r
79964ac8 653 EfiProcessorSocketLGA775 = 0x15\r
654\r
655} EFI_PROCESSOR_SOCKET_TYPE_DATA;\r
656\r
9205b2d7 657typedef STRING_REF EFI_PROCESSOR_SOCKET_NAME_DATA;\r
b66be4ca 658typedef EFI_INTER_LINK_DATA EFI_PROCESSOR_CACHE_ASSOCIATION_DATA;\r
79964ac8 659\r
470d0b27 660///\r
661/// This data record refers to the health status of the processor. \r
662///\r
79964ac8 663typedef enum {\r
664 EfiProcessorHealthy = 1,\r
665 EfiProcessorPerfRestricted = 2,\r
470d0b27 666 EfiProcessorFuncRestricted = 3 \r
b66be4ca 667} EFI_PROCESSOR_HEALTH_STATUS_DATA;\r
79964ac8 668\r
470d0b27 669///\r
670/// This data record refers to the package number of this processor. Multiple logical processors can \r
671/// exist in a system and each logical processor can be correlated to the physical processor using this \r
672/// record type. \r
673///\r
9205b2d7 674typedef UINTN EFI_PROCESSOR_PACKAGE_NUMBER_DATA;\r
79964ac8 675\r
676typedef enum {\r
677 ProcessorCoreFrequencyRecordType = 1,\r
678 ProcessorFsbFrequencyRecordType = 2,\r
679 ProcessorVersionRecordType = 3,\r
680 ProcessorManufacturerRecordType = 4,\r
681 ProcessorSerialNumberRecordType = 5,\r
682 ProcessorIdRecordType = 6,\r
683 ProcessorTypeRecordType = 7,\r
684 ProcessorFamilyRecordType = 8,\r
685 ProcessorVoltageRecordType = 9,\r
686 ProcessorApicBaseAddressRecordType = 10,\r
687 ProcessorApicIdRecordType = 11,\r
688 ProcessorApicVersionNumberRecordType = 12,\r
689 CpuUcodeRevisionDataRecordType = 13,\r
690 ProcessorStatusRecordType = 14,\r
691 ProcessorSocketTypeRecordType = 15,\r
692 ProcessorSocketNameRecordType = 16,\r
693 CacheAssociationRecordType = 17,\r
694 ProcessorMaxCoreFrequencyRecordType = 18,\r
695 ProcessorAssetTagRecordType = 19,\r
696 ProcessorMaxFsbFrequencyRecordType = 20,\r
697 ProcessorPackageNumberRecordType = 21,\r
698 ProcessorCoreFrequencyListRecordType = 22,\r
699 ProcessorFsbFrequencyListRecordType = 23,\r
700 ProcessorHealthStatusRecordType = 24\r
701} EFI_CPU_VARIABLE_RECORD_TYPE;\r
702\r
703typedef union {\r
704 EFI_PROCESSOR_CORE_FREQUENCY_LIST_DATA ProcessorCoreFrequencyList;\r
705 EFI_PROCESSOR_FSB_FREQUENCY_LIST_DATA ProcessorFsbFrequencyList;\r
706 EFI_PROCESSOR_SERIAL_NUMBER_DATA ProcessorSerialNumber;\r
707 EFI_PROCESSOR_CORE_FREQUENCY_DATA ProcessorCoreFrequency;\r
708 EFI_PROCESSOR_FSB_FREQUENCY_DATA ProcessorFsbFrequency;\r
709 EFI_PROCESSOR_MAX_CORE_FREQUENCY_DATA ProcessorMaxCoreFrequency;\r
710 EFI_PROCESSOR_MAX_FSB_FREQUENCY_DATA ProcessorMaxFsbFrequency;\r
711 EFI_PROCESSOR_VERSION_DATA ProcessorVersion;\r
712 EFI_PROCESSOR_MANUFACTURER_DATA ProcessorManufacturer;\r
713 EFI_PROCESSOR_ID_DATA ProcessorId;\r
714 EFI_PROCESSOR_TYPE_DATA ProcessorType;\r
715 EFI_PROCESSOR_FAMILY_DATA ProcessorFamily;\r
716 EFI_PROCESSOR_VOLTAGE_DATA ProcessorVoltage;\r
717 EFI_PROCESSOR_APIC_BASE_ADDRESS_DATA ProcessorApicBase;\r
718 EFI_PROCESSOR_APIC_ID_DATA ProcessorApicId;\r
719 EFI_PROCESSOR_APIC_VERSION_NUMBER_DATA ProcessorApicVersionNumber;\r
720 EFI_PROCESSOR_MICROCODE_REVISION_DATA CpuUcodeRevisionData;\r
721 EFI_PROCESSOR_STATUS_DATA ProcessorStatus;\r
722 EFI_PROCESSOR_SOCKET_TYPE_DATA ProcessorSocketType;\r
723 EFI_PROCESSOR_SOCKET_NAME_DATA ProcessorSocketName;\r
724 EFI_PROCESSOR_ASSET_TAG_DATA ProcessorAssetTag;\r
b66be4ca 725 EFI_PROCESSOR_HEALTH_STATUS_DATA ProcessorHealthStatus;\r
79964ac8 726 EFI_PROCESSOR_PACKAGE_NUMBER_DATA ProcessorPackageNumber;\r
727} EFI_CPU_VARIABLE_RECORD;\r
728\r
729typedef struct {\r
9205b2d7 730 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;\r
731 EFI_CPU_VARIABLE_RECORD VariableRecord;\r
79964ac8 732} EFI_CPU_DATA_RECORD;\r
733\r
734#define EFI_CACHE_SUBCLASS_VERSION 0x00010000\r
735\r
9205b2d7 736typedef EFI_EXP_BASE2_DATA EFI_CACHE_SIZE_DATA;\r
eeff6bb0 737typedef EFI_EXP_BASE2_DATA EFI_CACHE_MAXIMUM_SIZE_DATA;\r
9205b2d7 738typedef EFI_EXP_BASE10_DATA EFI_CACHE_SPEED_DATA;\r
739typedef STRING_REF EFI_CACHE_SOCKET_DATA;\r
79964ac8 740\r
741typedef struct {\r
9205b2d7 742 UINT32 Other :1;\r
743 UINT32 Unknown :1;\r
744 UINT32 NonBurst :1;\r
745 UINT32 Burst :1;\r
746 UINT32 PipelineBurst :1;\r
747 UINT32 Asynchronous :1;\r
748 UINT32 Synchronous :1;\r
749 UINT32 Reserved :25;\r
79964ac8 750} EFI_CACHE_SRAM_TYPE_DATA;\r
751\r
9205b2d7 752typedef EFI_CACHE_SRAM_TYPE_DATA EFI_CACHE_SRAM_INSTALL_DATA;\r
8403ef2e 753\r
79964ac8 754typedef enum {\r
755 EfiCacheErrorOther = 1,\r
756 EfiCacheErrorUnknown = 2,\r
757 EfiCacheErrorNone = 3,\r
758 EfiCacheErrorParity = 4,\r
759 EfiCacheErrorSingleBit = 5,\r
760 EfiCacheErrorMultiBit = 6\r
761} EFI_CACHE_ERROR_TYPE_DATA;\r
762\r
763typedef enum {\r
764 EfiCacheTypeOther = 1,\r
765 EfiCacheTypeUnknown = 2,\r
766 EfiCacheTypeInstruction = 3,\r
767 EfiCacheTypeData = 4,\r
768 EfiCacheTypeUnified = 5\r
769} EFI_CACHE_TYPE_DATA;\r
770\r
771typedef enum {\r
772 EfiCacheAssociativityOther = 1,\r
773 EfiCacheAssociativityUnknown = 2,\r
774 EfiCacheAssociativityDirectMapped = 3,\r
775 EfiCacheAssociativity2Way = 4,\r
776 EfiCacheAssociativity4Way = 5,\r
777 EfiCacheAssociativityFully = 6,\r
778 EfiCacheAssociativity8Way = 7,\r
7bfed576 779 EfiCacheAssociativity16Way = 8\r
79964ac8 780} EFI_CACHE_ASSOCIATIVITY_DATA;\r
781\r
dcd8fb0c 782///\r
783/// Inconsistent with specification here: \r
784/// It's a typo of CacheSubclass 0.9 spec. It should be UINT32 type since it refers to a 32bit width data.\r
785///\r
79964ac8 786typedef struct {\r
9205b2d7 787 UINT32 Level :3;\r
788 UINT32 Socketed :1;\r
789 UINT32 Reserved2 :1;\r
790 UINT32 Location :2;\r
791 UINT32 Enable :1;\r
792 UINT32 OperationalMode :2;\r
793 UINT32 Reserved1 :22;\r
79964ac8 794} EFI_CACHE_CONFIGURATION_DATA;\r
795\r
9205b2d7 796#define EFI_CACHE_L1 1\r
797#define EFI_CACHE_L2 2\r
798#define EFI_CACHE_L3 3\r
799#define EFI_CACHE_L4 4\r
800#define EFI_CACHE_LMAX EFI_CACHE_L4\r
79964ac8 801\r
802#define EFI_CACHE_SOCKETED 1\r
803#define EFI_CACHE_NOT_SOCKETED 0\r
804\r
805typedef enum {\r
806 EfiCacheInternal = 0,\r
807 EfiCacheExternal = 1,\r
808 EfiCacheReserved = 2,\r
809 EfiCacheUnknown = 3\r
810} EFI_CACHE_LOCATION;\r
811\r
9205b2d7 812#define EFI_CACHE_ENABLED 1\r
813#define EFI_CACHE_DISABLED 0\r
79964ac8 814\r
815typedef enum {\r
816 EfiCacheWriteThrough = 0,\r
817 EfiCacheWriteBack = 1,\r
818 EfiCacheDynamicMode = 2,\r
819 EfiCacheUnknownMode = 3\r
820} EFI_CACHE_OPERATIONAL_MODE;\r
821\r
822\r
823\r
824typedef enum {\r
825 CacheSizeRecordType = 1,\r
826 MaximumSizeCacheRecordType = 2,\r
827 CacheSpeedRecordType = 3,\r
828 CacheSocketRecordType = 4,\r
829 CacheSramTypeRecordType = 5,\r
830 CacheInstalledSramTypeRecordType = 6,\r
831 CacheErrorTypeRecordType = 7,\r
832 CacheTypeRecordType = 8,\r
833 CacheAssociativityRecordType = 9,\r
834 CacheConfigRecordType = 10\r
835} EFI_CACHE_VARIABLE_RECORD_TYPE;\r
836\r
837\r
838typedef union {\r
b66be4ca 839 EFI_CACHE_SIZE_DATA CacheSize;\r
eeff6bb0 840 EFI_CACHE_MAXIMUM_SIZE_DATA MaximumCacheSize;\r
b66be4ca 841 EFI_CACHE_SPEED_DATA CacheSpeed;\r
842 EFI_CACHE_SOCKET_DATA CacheSocket;\r
843 EFI_CACHE_SRAM_TYPE_DATA CacheSramType;\r
844 EFI_CACHE_SRAM_TYPE_DATA CacheInstalledSramType;\r
845 EFI_CACHE_ERROR_TYPE_DATA CacheErrorType;\r
846 EFI_CACHE_TYPE_DATA CacheType;\r
847 EFI_CACHE_ASSOCIATIVITY_DATA CacheAssociativity;\r
848 EFI_CACHE_CONFIGURATION_DATA CacheConfig;\r
849 EFI_PROCESSOR_CACHE_ASSOCIATION_DATA CacheAssociation;\r
79964ac8 850} EFI_CACHE_VARIABLE_RECORD;\r
851\r
852typedef struct {\r
9205b2d7 853 EFI_SUBCLASS_TYPE1_HEADER DataRecordHeader;\r
854 EFI_CACHE_VARIABLE_RECORD VariableRecord;\r
79964ac8 855} EFI_CACHE_DATA_RECORD;\r
856\r
857#define EFI_MEMORY_SUBCLASS_VERSION 0x0100\r
9205b2d7 858#define EFI_MEMORY_SIZE_RECORD_NUMBER 0x00000001\r
79964ac8 859\r
860typedef enum _EFI_MEMORY_REGION_TYPE {\r
9205b2d7 861 EfiMemoryRegionMemory = 0x01,\r
862 EfiMemoryRegionReserved = 0x02,\r
863 EfiMemoryRegionAcpi = 0x03,\r
864 EfiMemoryRegionNvs = 0x04\r
79964ac8 865} EFI_MEMORY_REGION_TYPE;\r
866\r
470d0b27 867///\r
868/// This data record refers to the size of a memory region. The regions that are \r
869/// described can refer to physical memory, memory-mapped I/O, or reserved BIOS memory regions. \r
870/// The unit of measurement of this data record is in bytes. \r
871///\r
79964ac8 872typedef struct {\r
470d0b27 873 ///\r
874 /// A zero-based value that indicates which processor(s) can access the memory region. \r
875 /// A value of 0xFFFF indicates the region is accessible by all processors. \r
876 ///\r
9205b2d7 877 UINT32 ProcessorNumber;\r
470d0b27 878 ///\r
879 /// A zero-based value that indicates the starting bus that can access the memory region. \r
880 ///\r
9205b2d7 881 UINT16 StartBusNumber;\r
470d0b27 882 ///\r
883 /// A zero-based value that indicates the ending bus that can access the memory region. \r
884 /// A value of 0xFF for a PCI system indicates the region is accessible by all buses and \r
885 /// is global in scope. An example of the EndBusNumber not being 0xFF is a system \r
886 /// with two or more peer-to-host PCI bridges. \r
887 ///\r
9205b2d7 888 UINT16 EndBusNumber;\r
470d0b27 889 ///\r
b4420c36 890 /// The type of memory region from the operating system's point of view. \r
470d0b27 891 /// MemoryRegionType values are equivalent to the legacy INT 15 AX = E820 BIOS \r
892 /// command values. \r
893 ///\r
9205b2d7 894 EFI_MEMORY_REGION_TYPE MemoryRegionType;\r
470d0b27 895 ///\r
896 /// The size of the memory region in bytes. \r
897 ///\r
9205b2d7 898 EFI_EXP_BASE2_DATA MemorySize;\r
470d0b27 899 ///\r
900 /// The starting physical address of the memory region. \r
901 ///\r
9205b2d7 902 EFI_PHYSICAL_ADDRESS MemoryStartAddress;\r
79964ac8 903} EFI_MEMORY_SIZE_DATA;\r
904\r
905\r
9205b2d7 906#define EFI_MEMORY_ARRAY_LOCATION_RECORD_NUMBER 0x00000002\r
79964ac8 907\r
908typedef enum _EFI_MEMORY_ARRAY_LOCATION {\r
909 EfiMemoryArrayLocationOther = 0x01,\r
910 EfiMemoryArrayLocationUnknown = 0x02,\r
911 EfiMemoryArrayLocationSystemBoard = 0x03,\r
912 EfiMemoryArrayLocationIsaAddonCard = 0x04,\r
913 EfiMemoryArrayLocationEisaAddonCard = 0x05,\r
914 EfiMemoryArrayLocationPciAddonCard = 0x06,\r
915 EfiMemoryArrayLocationMcaAddonCard = 0x07,\r
916 EfiMemoryArrayLocationPcmciaAddonCard = 0x08,\r
917 EfiMemoryArrayLocationProprietaryAddonCard = 0x09,\r
918 EfiMemoryArrayLocationNuBus = 0x0A,\r
919 EfiMemoryArrayLocationPc98C20AddonCard = 0xA0,\r
920 EfiMemoryArrayLocationPc98C24AddonCard = 0xA1,\r
921 EfiMemoryArrayLocationPc98EAddonCard = 0xA2,\r
922 EfiMemoryArrayLocationPc98LocalBusAddonCard = 0xA3\r
923} EFI_MEMORY_ARRAY_LOCATION;\r
924\r
925typedef enum _EFI_MEMORY_ARRAY_USE {\r
926 EfiMemoryArrayUseOther = 0x01,\r
927 EfiMemoryArrayUseUnknown = 0x02,\r
928 EfiMemoryArrayUseSystemMemory = 0x03,\r
929 EfiMemoryArrayUseVideoMemory = 0x04,\r
930 EfiMemoryArrayUseFlashMemory = 0x05,\r
931 EfiMemoryArrayUseNonVolatileRam = 0x06,\r
661e7afd 932 EfiMemoryArrayUseCacheMemory = 0x07\r
79964ac8 933} EFI_MEMORY_ARRAY_USE;\r
934\r
935typedef enum _EFI_MEMORY_ERROR_CORRECTION {\r
936 EfiMemoryErrorCorrectionOther = 0x01,\r
937 EfiMemoryErrorCorrectionUnknown = 0x02,\r
938 EfiMemoryErrorCorrectionNone = 0x03,\r
939 EfiMemoryErrorCorrectionParity = 0x04,\r
940 EfiMemoryErrorCorrectionSingleBitEcc = 0x05,\r
941 EfiMemoryErrorCorrectionMultiBitEcc = 0x06,\r
661e7afd 942 EfiMemoryErrorCorrectionCrc = 0x07\r
79964ac8 943} EFI_MEMORY_ERROR_CORRECTION;\r
944\r
470d0b27 945///\r
946/// This data record refers to the physical memory array. This data record is a structure. \r
947/// The type definition structure for EFI_MEMORY_ARRAY_LOCATION_DATA is in SMBIOS 2.3.4: \r
948/// - Table 3.3.17.1, Type 16, Offset 0x4 \r
949/// - Table 3.3.17.2, Type 16, Offset 0x5 \r
950/// - Table 3.3.17.3, Type 16, with the following offsets: \r
951/// -- Offset 0x6 \r
952/// -- Offset 0x7 \r
953/// -- Offset 0xB \r
954/// -- Offset 0xD \r
955/// \r
79964ac8 956typedef struct {\r
470d0b27 957 ///\r
958 /// The physical location of the memory array. \r
959 ///\r
9205b2d7 960 EFI_MEMORY_ARRAY_LOCATION MemoryArrayLocation;\r
470d0b27 961 ///\r
962 /// The memory array usage.\r
963 ///\r
9205b2d7 964 EFI_MEMORY_ARRAY_USE MemoryArrayUse;\r
470d0b27 965 ///\r
966 /// The primary error correction or detection supported by this memory array.\r
967 ///\r
9205b2d7 968 EFI_MEMORY_ERROR_CORRECTION MemoryErrorCorrection;\r
470d0b27 969 ///\r
970 /// The maximum memory capacity size in kilobytes. If capacity is unknown, then \r
971 /// values of MaximumMemoryCapacity.Value = 0x00 and \r
972 /// MaximumMemoryCapacity.Exponent = 0x8000 are used.\r
973 ///\r
9205b2d7 974 EFI_EXP_BASE2_DATA MaximumMemoryCapacity;\r
470d0b27 975 ///\r
976 /// The number of memory slots or sockets that are available for memory devices \r
977 /// in this array. \r
978 ///\r
9205b2d7 979 UINT16 NumberMemoryDevices;\r
79964ac8 980} EFI_MEMORY_ARRAY_LOCATION_DATA;\r
981\r
982\r
9205b2d7 983#define EFI_MEMORY_ARRAY_LINK_RECORD_NUMBER 0x00000003\r
79964ac8 984\r
985typedef enum _EFI_MEMORY_FORM_FACTOR {\r
986 EfiMemoryFormFactorOther = 0x01,\r
987 EfiMemoryFormFactorUnknown = 0x02,\r
988 EfiMemoryFormFactorSimm = 0x03,\r
989 EfiMemoryFormFactorSip = 0x04,\r
990 EfiMemoryFormFactorChip = 0x05,\r
991 EfiMemoryFormFactorDip = 0x06,\r
992 EfiMemoryFormFactorZip = 0x07,\r
993 EfiMemoryFormFactorProprietaryCard = 0x08,\r
994 EfiMemoryFormFactorDimm = 0x09,\r
995 EfiMemoryFormFactorTsop = 0x0A,\r
996 EfiMemoryFormFactorRowOfChips = 0x0B,\r
997 EfiMemoryFormFactorRimm = 0x0C,\r
998 EfiMemoryFormFactorSodimm = 0x0D,\r
999 EfiMemoryFormFactorSrimm = 0x0E,\r
4c617fa9 1000 ///\r
1001 /// Inconsistent with specification here: \r
1002 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1003 ///\r
79964ac8 1004 EfiMemoryFormFactorFbDimm = 0x0F\r
1005} EFI_MEMORY_FORM_FACTOR;\r
1006\r
1007typedef enum _EFI_MEMORY_ARRAY_TYPE {\r
1008 EfiMemoryTypeOther = 0x01,\r
1009 EfiMemoryTypeUnknown = 0x02,\r
1010 EfiMemoryTypeDram = 0x03,\r
1011 EfiMemoryTypeEdram = 0x04,\r
1012 EfiMemoryTypeVram = 0x05,\r
1013 EfiMemoryTypeSram = 0x06,\r
1014 EfiMemoryTypeRam = 0x07,\r
1015 EfiMemoryTypeRom = 0x08,\r
1016 EfiMemoryTypeFlash = 0x09,\r
1017 EfiMemoryTypeEeprom = 0x0A,\r
1018 EfiMemoryTypeFeprom = 0x0B,\r
1019 EfiMemoryTypeEprom = 0x0C,\r
1020 EfiMemoryTypeCdram = 0x0D,\r
1021 EfiMemoryType3Dram = 0x0E,\r
1022 EfiMemoryTypeSdram = 0x0F,\r
1023 EfiMemoryTypeSgram = 0x10,\r
1024 EfiMemoryTypeRdram = 0x11,\r
1025 EfiMemoryTypeDdr = 0x12,\r
4c617fa9 1026 ///\r
1027 /// Inconsistent with specification here: \r
1028 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1029 ///\r
79964ac8 1030 EfiMemoryTypeDdr2 = 0x13,\r
4c617fa9 1031 ///\r
1032 /// Inconsistent with specification here: \r
1033 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1034 ///\r
79964ac8 1035 EfiMemoryTypeDdr2FbDimm = 0x14\r
1036} EFI_MEMORY_ARRAY_TYPE;\r
1037\r
1038typedef struct {\r
9205b2d7 1039 UINT32 Reserved :1;\r
1040 UINT32 Other :1;\r
1041 UINT32 Unknown :1;\r
1042 UINT32 FastPaged :1;\r
1043 UINT32 StaticColumn :1;\r
1044 UINT32 PseudoStatic :1;\r
1045 UINT32 Rambus :1;\r
1046 UINT32 Synchronous :1;\r
1047 UINT32 Cmos :1;\r
1048 UINT32 Edo :1;\r
1049 UINT32 WindowDram :1;\r
1050 UINT32 CacheDram :1;\r
1051 UINT32 Nonvolatile :1;\r
1052 UINT32 Reserved1 :19;\r
79964ac8 1053} EFI_MEMORY_TYPE_DETAIL;\r
1054\r
1055typedef enum {\r
1056 EfiMemoryStateEnabled = 0,\r
1057 EfiMemoryStateUnknown = 1,\r
1058 EfiMemoryStateUnsupported = 2,\r
1059 EfiMemoryStateError = 3,\r
1060 EfiMemoryStateAbsent = 4,\r
1061 EfiMemoryStateDisabled = 5,\r
4c617fa9 1062 ///\r
1063 /// Inconsistent with specification here: \r
1064 /// This field is NOT defined in MemSubClass spec0.9. It's introduced for SMBIOS2.6 spec.\r
1065 ///\r
79964ac8 1066 EfiMemoryStatePartial = 6\r
1067} EFI_MEMORY_STATE;\r
1068\r
470d0b27 1069///\r
1070/// This data record describes a memory device. This data record is a structure. \r
1071/// The type definition structure for EFI_MEMORY_ARRAY_LINK_DATA is in SMBIOS 2.3.4.\r
1072///\r
79964ac8 1073typedef struct {\r
470d0b27 1074 ///\r
1075 /// A string that identifies the physically labeled socket or board position where the \r
1076 /// memory device is located.\r
1077 ///\r
9205b2d7 1078 STRING_REF MemoryDeviceLocator;\r
470d0b27 1079 ///\r
1080 /// A string denoting the physically labeled bank where the memory device is located. \r
1081 ///\r
9205b2d7 1082 STRING_REF MemoryBankLocator;\r
470d0b27 1083 ///\r
1084 /// A string denoting the memory manufacturer. \r
1085 /// \r
9205b2d7 1086 STRING_REF MemoryManufacturer;\r
470d0b27 1087 ///\r
1088 /// A string denoting the serial number of the memory device. \r
1089 ///\r
9205b2d7 1090 STRING_REF MemorySerialNumber;\r
470d0b27 1091 ///\r
1092 /// The asset tag of the memory device. \r
1093 ///\r
9205b2d7 1094 STRING_REF MemoryAssetTag;\r
470d0b27 1095 ///\r
1096 /// A string denoting the part number of the memory device. \r
1097 ///\r
9205b2d7 1098 STRING_REF MemoryPartNumber;\r
470d0b27 1099 ///\r
1100 /// A link to a memory array structure set. \r
1101 ///\r
9205b2d7 1102 EFI_INTER_LINK_DATA MemoryArrayLink;\r
470d0b27 1103 ///\r
1104 /// A link to a memory array structure set.\r
1105 ///\r
9205b2d7 1106 EFI_INTER_LINK_DATA MemorySubArrayLink;\r
470d0b27 1107 ///\r
1108 /// The total width in bits of this memory device. If there are no error correcting bits, \r
1109 /// then the total width equals the data width. If the width is unknown, then set the field \r
1110 /// to 0xFFFF. \r
1111 ///\r
9205b2d7 1112 UINT16 MemoryTotalWidth;\r
470d0b27 1113 ///\r
1114 /// The data width in bits of the memory device. A data width of 0x00 and a total width \r
1115 /// of 0x08 indicate that the device is used solely for error correction. \r
1116 ///\r
9205b2d7 1117 UINT16 MemoryDataWidth;\r
470d0b27 1118 ///\r
1119 /// The size in bytes of the memory device. A value of 0x00 denotes that no device is \r
1120 /// installed, while a value of all Fs denotes that the size is not known.\r
1121 ///\r
9205b2d7 1122 EFI_EXP_BASE2_DATA MemoryDeviceSize;\r
470d0b27 1123 ///\r
1124 /// The form factor of the memory device. \r
1125 ///\r
9205b2d7 1126 EFI_MEMORY_FORM_FACTOR MemoryFormFactor;\r
470d0b27 1127 ///\r
1128 /// A memory device set that must be populated with all devices of the same type and \r
1129 /// size. A value of 0x00 indicates that the device is not part of any set. A value of 0xFF \r
1130 /// indicates that the attribute is unknown. Any other value denotes the set number. \r
1131 ///\r
9205b2d7 1132 UINT8 MemoryDeviceSet;\r
470d0b27 1133 ///\r
1134 /// The memory type in the socket. \r
1135 ///\r
9205b2d7 1136 EFI_MEMORY_ARRAY_TYPE MemoryType;\r
470d0b27 1137 ///\r
1138 /// The memory type details. \r
1139 ///\r
9205b2d7 1140 EFI_MEMORY_TYPE_DETAIL MemoryTypeDetail;\r
470d0b27 1141 ///\r
1142 /// The memory speed in megahertz (MHz). A value of 0x00 denotes that \r
1143 /// the speed is unknown.\r
1144 ///\r
4c617fa9 1145 EFI_EXP_BASE10_DATA MemoryTypeSpeed;\r
470d0b27 1146 ///\r
1147 /// The memory state. \r
1148 ///\r
9205b2d7 1149 EFI_MEMORY_STATE MemoryState;\r
79964ac8 1150} EFI_MEMORY_ARRAY_LINK_DATA;\r
1151\r
1152\r
9205b2d7 1153#define EFI_MEMORY_ARRAY_START_ADDRESS_RECORD_NUMBER 0x00000004\r
79964ac8 1154\r
470d0b27 1155///\r
1156/// This data record refers to a specified physical memory array associated with \r
1157/// a given memory range. \r
1158/// \r
79964ac8 1159typedef struct {\r
470d0b27 1160 ///\r
1161 /// The starting physical address in bytes of memory mapped to a specified physical \r
1162 /// memory array. \r
1163 ///\r
9205b2d7 1164 EFI_PHYSICAL_ADDRESS MemoryArrayStartAddress;\r
470d0b27 1165 ///\r
1166 /// The last physical address in bytes of memory mapped to a specified physical memory \r
1167 /// array. \r
1168 ///\r
9205b2d7 1169 EFI_PHYSICAL_ADDRESS MemoryArrayEndAddress;\r
470d0b27 1170 ///\r
1171 /// See Physical Memory Array (Type 16) for physical memory array structures.\r
1172 ///\r
9205b2d7 1173 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;\r
470d0b27 1174 ///\r
1175 /// The number of memory devices that form a single row of memory for the address \r
1176 /// partition. \r
1177 ///\r
9205b2d7 1178 UINT16 MemoryArrayPartitionWidth;\r
79964ac8 1179} EFI_MEMORY_ARRAY_START_ADDRESS_DATA;\r
1180\r
1181\r
9205b2d7 1182#define EFI_MEMORY_DEVICE_START_ADDRESS_RECORD_NUMBER 0x00000005\r
79964ac8 1183\r
470d0b27 1184///\r
1185/// This data record refers to a physical memory device that is associated with \r
1186/// a given memory range.\r
1187/// \r
79964ac8 1188typedef struct {\r
470d0b27 1189 ///\r
1190 /// The starting physical address that is associated with the device. \r
1191 ///\r
9205b2d7 1192 EFI_PHYSICAL_ADDRESS MemoryDeviceStartAddress;\r
470d0b27 1193 ///\r
1194 /// The ending physical address that is associated with the device. \r
1195 ///\r
9205b2d7 1196 EFI_PHYSICAL_ADDRESS MemoryDeviceEndAddress;\r
470d0b27 1197 ///\r
1198 /// A link to the memory device data structure. \r
1199 ///\r
9205b2d7 1200 EFI_INTER_LINK_DATA PhysicalMemoryDeviceLink;\r
470d0b27 1201 /// \r
1202 /// A link to the memory array data structure. \r
1203 ///\r
9205b2d7 1204 EFI_INTER_LINK_DATA PhysicalMemoryArrayLink;\r
470d0b27 1205 ///\r
1206 /// The position of the memory device in a row. A value of 0x00 is reserved and a value \r
1207 /// of 0xFF indicates that the position is unknown. \r
1208 ///\r
9205b2d7 1209 UINT8 MemoryDevicePartitionRowPosition;\r
470d0b27 1210 ///\r
1211 /// The position of the device in an interleave. \r
1212 ///\r
9205b2d7 1213 UINT8 MemoryDeviceInterleavePosition;\r
470d0b27 1214 ///\r
1215 /// The maximum number of consecutive rows from the device that are accessed in a \r
1216 /// single interleave transfer. A value of 0x00 indicates that the device is not interleaved \r
1217 /// and a value of 0xFF indicates that the interleave configuration is unknown. \r
1218 ///\r
9205b2d7 1219 UINT8 MemoryDeviceInterleaveDataDepth;\r
79964ac8 1220} EFI_MEMORY_DEVICE_START_ADDRESS_DATA;\r
1221\r
1222\r
1223//\r
1224// Memory. Channel Device Type - SMBIOS Type 37\r
1225//\r
1226\r
9205b2d7 1227#define EFI_MEMORY_CHANNEL_TYPE_RECORD_NUMBER 0x00000006\r
79964ac8 1228\r
1229typedef enum _EFI_MEMORY_CHANNEL_TYPE {\r
1230 EfiMemoryChannelTypeOther = 1,\r
1231 EfiMemoryChannelTypeUnknown = 2,\r
1232 EfiMemoryChannelTypeRambus = 3,\r
1233 EfiMemoryChannelTypeSyncLink = 4\r
1234} EFI_MEMORY_CHANNEL_TYPE;\r
1235\r
470d0b27 1236///\r
1237/// This data record refers the type of memory that is associated with the channel. This data record is a \r
1238/// structure. \r
1239/// The type definition structure for EFI_MEMORY_CHANNEL_TYPE_DATA is in SMBIOS 2.3.4, \r
1240/// Table 3.3.38, Type 37, with the following offsets: \r
1241/// - Offset 0x4 \r
1242/// - Offset 0x5 \r
1243/// - Offset 0x6\r
1244/// \r
79964ac8 1245typedef struct {\r
470d0b27 1246 ///\r
1247 /// The type of memory that is associated with the channel. \r
1248 /// \r
9205b2d7 1249 EFI_MEMORY_CHANNEL_TYPE MemoryChannelType;\r
470d0b27 1250 ///\r
1251 /// The maximum load that is supported by the channel.\r
1252 ///\r
9205b2d7 1253 UINT8 MemoryChannelMaximumLoad;\r
470d0b27 1254 ///\r
1255 /// The number of memory devices on this channel. \r
1256 ///\r
9205b2d7 1257 UINT8 MemoryChannelDeviceCount;\r
79964ac8 1258} EFI_MEMORY_CHANNEL_TYPE_DATA;\r
1259\r
9205b2d7 1260#define EFI_MEMORY_CHANNEL_DEVICE_RECORD_NUMBER 0x00000007\r
79964ac8 1261\r
470d0b27 1262///\r
1263/// This data record refers to the memory device that is associated with the memory channel. This data \r
1264/// record is a structure. \r
1265/// The type definition structure for EFI_MEMORY_CHANNEL_DEVICE_DATA is in SMBIOS 2.3.4, \r
1266/// Table 3.3.38, Type 37, with the following offsets: \r
1267/// - Offset 0x7 \r
1268/// - Offset 0x8\r
1269///\r
79964ac8 1270typedef struct {\r
470d0b27 1271 ///\r
1272 /// A number between one and MemoryChannelDeviceCount plus an arbitrary base. \r
1273 /// \r
9205b2d7 1274 UINT8 DeviceId;\r
470d0b27 1275 ///\r
1276 /// The Link of the associated memory device. See Memory Device (Type 17) for \r
1277 /// memory devices. \r
1278 ///\r
9205b2d7 1279 EFI_INTER_LINK_DATA DeviceLink;\r
470d0b27 1280 ///\r
1281 /// The number of load units that this device consumes. \r
1282 ///\r
9205b2d7 1283 UINT8 MemoryChannelDeviceLoad;\r
79964ac8 1284} EFI_MEMORY_CHANNEL_DEVICE_DATA;\r
1285\r
91399a51 1286//\r
1287// Memory. Controller Information - SMBIOS Type 5\r
1288//\r
9205b2d7 1289#define EFI_MEMORY_CONTROLLER_INFORMATION_RECORD_NUMBER 0x00000008\r
91399a51 1290\r
1291typedef enum { \r
1292 EfiErrorDetectingMethodOther = 1,\r
1293 EfiErrorDetectingMethodUnknown = 2,\r
1294 EfiErrorDetectingMethodNone = 3,\r
1295 EfiErrorDetectingMethodParity = 4,\r
1296 EfiErrorDetectingMethod32Ecc = 5,\r
1297 EfiErrorDetectingMethod64Ecc = 6,\r
1298 EfiErrorDetectingMethod128Ecc = 7,\r
1299 EfiErrorDetectingMethodCrc = 8\r
1300} EFI_MEMORY_ERROR_DETECT_METHOD_TYPE;\r
1301\r
1302typedef struct {\r
9205b2d7 1303 UINT8 Other :1;\r
1304 UINT8 Unknown :1;\r
1305 UINT8 None :1;\r
1306 UINT8 SingleBitErrorCorrect :1;\r
1307 UINT8 DoubleBitErrorCorrect :1;\r
1308 UINT8 ErrorScrubbing :1;\r
1309 UINT8 Reserved :2;\r
91399a51 1310} EFI_MEMORY_ERROR_CORRECT_CAPABILITY;\r
1311\r
1312typedef enum { \r
1313 EfiMemoryInterleaveOther = 1,\r
1314 EfiMemoryInterleaveUnknown = 2,\r
1315 EfiMemoryInterleaveOneWay = 3,\r
1316 EfiMemoryInterleaveTwoWay = 4,\r
1317 EfiMemoryInterleaveFourWay = 5,\r
1318 EfiMemoryInterleaveEightWay = 6,\r
1319 EfiMemoryInterleaveSixteenWay = 7\r
1320} EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
1321\r
1322typedef struct {\r
9205b2d7 1323 UINT16 Other :1;\r
1324 UINT16 Unknown :1;\r
1325 UINT16 SeventyNs:1;\r
1326 UINT16 SixtyNs :1;\r
1327 UINT16 FiftyNs :1;\r
1328 UINT16 Reserved :11;\r
91399a51 1329} EFI_MEMORY_SPEED_TYPE;\r
1330\r
1331typedef struct {\r
9205b2d7 1332 UINT16 Other :1;\r
1333 UINT16 Unknown :1;\r
1334 UINT16 Standard :1;\r
1335 UINT16 FastPageMode:1;\r
1336 UINT16 EDO :1;\r
1337 UINT16 Parity :1;\r
1338 UINT16 ECC :1;\r
1339 UINT16 SIMM :1;\r
1340 UINT16 DIMM :1;\r
1341 UINT16 BurstEdo :1;\r
1342 UINT16 SDRAM :1;\r
1343 UINT16 Reserved :5;\r
91399a51 1344} EFI_MEMORY_SUPPORTED_TYPE;\r
1345\r
1346typedef struct {\r
9205b2d7 1347 UINT8 Five :1;\r
a244f400 1348 UINT8 Three :1;\r
9205b2d7 1349 UINT8 Two :1;\r
1350 UINT8 Reserved:5;\r
91399a51 1351} EFI_MEMORY_MODULE_VOLTAGE_TYPE;\r
1352\r
a244f400 1353//\r
1354// EFI_MEMORY_CONTROLLER_INFORMATION is obsolete\r
1355// Use EFI_MEMORY_CONTROLLER_INFORMATION_DATA instead\r
1356//\r
91399a51 1357typedef struct {\r
9205b2d7 1358 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
1359 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
1360 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
1361 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
1362 UINT8 MaxMemoryModuleSize;\r
1363 EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
1364 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
1365 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
1366 UINT8 NumberofMemorySlot;\r
1367 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
1368 UINT16 *MemoryModuleConfigHandles;\r
91399a51 1369} EFI_MEMORY_CONTROLLER_INFORMATION;\r
1370\r
a244f400 1371typedef struct {\r
1372 EFI_MEMORY_ERROR_DETECT_METHOD_TYPE ErrorDetectingMethod;\r
1373 EFI_MEMORY_ERROR_CORRECT_CAPABILITY ErrorCorrectingCapability;\r
1374 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemorySupportedInterleave;\r
1375 EFI_MEMORY_SUPPORT_INTERLEAVE_TYPE MemoryCurrentInterleave;\r
1376 UINT8 MaxMemoryModuleSize;\r
1377 EFI_MEMORY_SPEED_TYPE MemorySpeedType;\r
1378 EFI_MEMORY_SUPPORTED_TYPE MemorySupportedType;\r
1379 EFI_MEMORY_MODULE_VOLTAGE_TYPE MemoryModuleVoltage;\r
1380 UINT8 NumberofMemorySlot;\r
1381 EFI_MEMORY_ERROR_CORRECT_CAPABILITY EnabledCorrectingCapability;\r
1382 EFI_INTER_LINK_DATA MemoryModuleConfig[1];\r
1383} EFI_MEMORY_CONTROLLER_INFORMATION_DATA;\r
1384\r
91399a51 1385//\r
1386// Memory. Error Information - SMBIOS Type 18\r
1387//\r
9205b2d7 1388#define EFI_MEMORY_32BIT_ERROR_INFORMATION_RECORD_NUMBER 0x00000009\r
91399a51 1389\r
1390typedef enum { \r
1391 EfiMemoryErrorOther = 1,\r
1392 EfiMemoryErrorUnknown = 2,\r
1393 EfiMemoryErrorOk = 3,\r
1394 EfiMemoryErrorBadRead = 4,\r
1395 EfiMemoryErrorParity = 5,\r
1396 EfiMemoryErrorSigleBit = 6,\r
1397 EfiMemoryErrorDoubleBit = 7,\r
1398 EfiMemoryErrorMultiBit = 8,\r
1399 EfiMemoryErrorNibble = 9,\r
1400 EfiMemoryErrorChecksum = 10,\r
1401 EfiMemoryErrorCrc = 11,\r
1402 EfiMemoryErrorCorrectSingleBit = 12,\r
1403 EfiMemoryErrorCorrected = 13,\r
1404 EfiMemoryErrorUnCorrectable = 14\r
1405} EFI_MEMORY_ERROR_TYPE;\r
1406\r
1407typedef enum { \r
1408 EfiMemoryGranularityOther = 1,\r
1409 EfiMemoryGranularityOtherUnknown = 2,\r
1410 EfiMemoryGranularityDeviceLevel = 3,\r
1411 EfiMemoryGranularityMemPartitionLevel = 4\r
1412} EFI_MEMORY_ERROR_GRANULARITY_TYPE;\r
1413\r
1414typedef enum { \r
1415 EfiMemoryErrorOperationOther = 1,\r
1416 EfiMemoryErrorOperationUnknown = 2,\r
1417 EfiMemoryErrorOperationRead = 3,\r
1418 EfiMemoryErrorOperationWrite = 4,\r
1419 EfiMemoryErrorOperationPartialWrite = 5\r
1420} EFI_MEMORY_ERROR_OPERATION_TYPE;\r
1421\r
1422typedef struct {\r
1423 EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
1424 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
1425 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
1426 UINT32 VendorSyndrome;\r
1427 UINT32 MemoryArrayErrorAddress;\r
1428 UINT32 DeviceErrorAddress;\r
1429 UINT32 DeviceErrorResolution;\r
1430} EFI_MEMORY_32BIT_ERROR_INFORMATION;\r
1431\r
1432//\r
1433// Memory. Error Information - SMBIOS Type 33\r
1434//\r
9205b2d7 1435#define EFI_MEMORY_64BIT_ERROR_INFORMATION_RECORD_NUMBER 0x0000000A\r
91399a51 1436\r
1437typedef struct {\r
9205b2d7 1438 EFI_MEMORY_ERROR_TYPE MemoryErrorType;\r
1439 EFI_MEMORY_ERROR_GRANULARITY_TYPE MemoryErrorGranularity;\r
1440 EFI_MEMORY_ERROR_OPERATION_TYPE MemoryErrorOperation;\r
1441 UINT32 VendorSyndrome;\r
1442 UINT64 MemoryArrayErrorAddress;\r
1443 UINT64 DeviceErrorAddress;\r
1444 UINT32 DeviceErrorResolution;\r
91399a51 1445} EFI_MEMORY_64BIT_ERROR_INFORMATION;\r
79964ac8 1446\r
1447typedef union _EFI_MEMORY_SUBCLASS_RECORDS {\r
9205b2d7 1448 EFI_MEMORY_SIZE_DATA SizeData;\r
1449 EFI_MEMORY_ARRAY_LOCATION_DATA ArrayLocationData;\r
1450 EFI_MEMORY_ARRAY_LINK_DATA ArrayLink;\r
1451 EFI_MEMORY_ARRAY_START_ADDRESS_DATA ArrayStartAddress;\r
1452 EFI_MEMORY_DEVICE_START_ADDRESS_DATA DeviceStartAddress;\r
1453 EFI_MEMORY_CHANNEL_TYPE_DATA ChannelTypeData;\r
1454 EFI_MEMORY_CHANNEL_DEVICE_DATA ChannelDeviceData;\r
1455 EFI_MEMORY_CONTROLLER_INFORMATION MemoryControllerInfo;\r
1456 EFI_MEMORY_32BIT_ERROR_INFORMATION Memory32bitErrorInfo;\r
1457 EFI_MEMORY_64BIT_ERROR_INFORMATION Memory64bitErrorInfo;\r
79964ac8 1458} EFI_MEMORY_SUBCLASS_RECORDS;\r
1459\r
1460typedef struct {\r
9205b2d7 1461 EFI_SUBCLASS_TYPE1_HEADER Header;\r
1462 EFI_MEMORY_SUBCLASS_RECORDS Record;\r
79964ac8 1463} EFI_MEMORY_SUBCLASS_DRIVER_DATA;\r
1464\r
1465#define EFI_MISC_SUBCLASS_VERSION 0x0100\r
1466\r
1467#pragma pack(1)\r
9205b2d7 1468\r
79964ac8 1469//\r
1470// Last PCI Bus Number\r
1471//\r
9205b2d7 1472#define EFI_MISC_LAST_PCI_BUS_RECORD_NUMBER 0x00000001\r
79964ac8 1473\r
1474typedef struct {\r
9205b2d7 1475 UINT8 LastPciBus;\r
79964ac8 1476} EFI_MISC_LAST_PCI_BUS_DATA;\r
1477\r
79964ac8 1478//\r
1479// Misc. BIOS Vendor - SMBIOS Type 0\r
1480//\r
9205b2d7 1481#define EFI_MISC_BIOS_VENDOR_RECORD_NUMBER 0x00000002\r
1482\r
1483typedef struct {\r
1484 UINT64 Reserved1 :2;\r
1485 UINT64 Unknown :1;\r
1486 UINT64 BiosCharacteristicsNotSupported :1;\r
1487 UINT64 IsaIsSupported :1;\r
1488 UINT64 McaIsSupported :1;\r
1489 UINT64 EisaIsSupported :1;\r
1490 UINT64 PciIsSupported :1;\r
1491 UINT64 PcmciaIsSupported :1;\r
1492 UINT64 PlugAndPlayIsSupported :1;\r
1493 UINT64 ApmIsSupported :1;\r
1494 UINT64 BiosIsUpgradable :1;\r
1495 UINT64 BiosShadowingAllowed :1;\r
1496 UINT64 VlVesaIsSupported :1;\r
1497 UINT64 EscdSupportIsAvailable :1;\r
1498 UINT64 BootFromCdIsSupported :1;\r
1499 UINT64 SelectableBootIsSupported :1;\r
1500 UINT64 RomBiosIsSocketed :1;\r
1501 UINT64 BootFromPcmciaIsSupported :1;\r
1502 UINT64 EDDSpecificationIsSupported :1;\r
1503 UINT64 JapaneseNecFloppyIsSupported :1;\r
1504 UINT64 JapaneseToshibaFloppyIsSupported :1;\r
1505 UINT64 Floppy525_360IsSupported :1;\r
1506 UINT64 Floppy525_12IsSupported :1;\r
1507 UINT64 Floppy35_720IsSupported :1;\r
1508 UINT64 Floppy35_288IsSupported :1;\r
1509 UINT64 PrintScreenIsSupported :1;\r
1510 UINT64 Keyboard8042IsSupported :1;\r
1511 UINT64 SerialIsSupported :1;\r
1512 UINT64 PrinterIsSupported :1;\r
1513 UINT64 CgaMonoIsSupported :1;\r
1514 UINT64 NecPc98 :1;\r
1515 UINT64 AcpiIsSupported :1;\r
1516 UINT64 UsbLegacyIsSupported :1;\r
1517 UINT64 AgpIsSupported :1;\r
1518 UINT64 I20BootIsSupported :1;\r
1519 UINT64 Ls120BootIsSupported :1;\r
1520 UINT64 AtapiZipDriveBootIsSupported :1;\r
1521 UINT64 Boot1394IsSupported :1;\r
1522 UINT64 SmartBatteryIsSupported :1;\r
1523 UINT64 BiosBootSpecIsSupported :1;\r
1524 UINT64 FunctionKeyNetworkBootIsSupported :1;\r
1525 UINT64 Reserved :22;\r
79964ac8 1526} EFI_MISC_BIOS_CHARACTERISTICS;\r
1527\r
1528typedef struct {\r
9205b2d7 1529 UINT64 BiosReserved :16;\r
1530 UINT64 SystemReserved:16;\r
1531 UINT64 Reserved :32;\r
79964ac8 1532} EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION;\r
1533\r
1534typedef struct {\r
9205b2d7 1535 STRING_REF BiosVendor;\r
1536 STRING_REF BiosVersion;\r
1537 STRING_REF BiosReleaseDate;\r
1538 EFI_PHYSICAL_ADDRESS BiosStartingAddress;\r
1539 EFI_EXP_BASE2_DATA BiosPhysicalDeviceSize;\r
1540 EFI_MISC_BIOS_CHARACTERISTICS BiosCharacteristics1;\r
1541 EFI_MISC_BIOS_CHARACTERISTICS_EXTENSION \r
1542 BiosCharacteristics2;\r
1543 UINT8 BiosMajorRelease;\r
1544 UINT8 BiosMinorRelease;\r
1545 UINT8 BiosEmbeddedFirmwareMajorRelease;\r
1546 UINT8 BiosEmbeddedFirmwareMinorRelease;\r
79964ac8 1547} EFI_MISC_BIOS_VENDOR_DATA;\r
1548\r
79964ac8 1549//\r
1550// Misc. System Manufacturer - SMBIOS Type 1\r
1551//\r
9205b2d7 1552#define EFI_MISC_SYSTEM_MANUFACTURER_RECORD_NUMBER 0x00000003\r
79964ac8 1553\r
1554typedef enum {\r
1555 EfiSystemWakeupTypeReserved = 0,\r
1556 EfiSystemWakeupTypeOther = 1,\r
1557 EfiSystemWakeupTypeUnknown = 2,\r
1558 EfiSystemWakeupTypeApmTimer = 3,\r
1559 EfiSystemWakeupTypeModemRing = 4,\r
1560 EfiSystemWakeupTypeLanRemote = 5,\r
1561 EfiSystemWakeupTypePowerSwitch = 6,\r
1562 EfiSystemWakeupTypePciPme = 7,\r
661e7afd 1563 EfiSystemWakeupTypeAcPowerRestored = 8\r
79964ac8 1564} EFI_MISC_SYSTEM_WAKEUP_TYPE;\r
1565\r
1566typedef struct {\r
9205b2d7 1567 STRING_REF SystemManufacturer;\r
1568 STRING_REF SystemProductName;\r
1569 STRING_REF SystemVersion;\r
1570 STRING_REF SystemSerialNumber;\r
1571 EFI_GUID SystemUuid;\r
1572 EFI_MISC_SYSTEM_WAKEUP_TYPE SystemWakeupType;\r
1573 STRING_REF SystemSKUNumber;\r
1574 STRING_REF SystemFamily;\r
79964ac8 1575} EFI_MISC_SYSTEM_MANUFACTURER_DATA;\r
1576\r
79964ac8 1577//\r
1578// Misc. Base Board Manufacturer - SMBIOS Type 2\r
1579//\r
9205b2d7 1580#define EFI_MISC_BASE_BOARD_MANUFACTURER_RECORD_NUMBER 0x00000004\r
79964ac8 1581\r
1582typedef struct {\r
9205b2d7 1583 UINT32 Motherboard :1;\r
1584 UINT32 RequiresDaughterCard :1;\r
1585 UINT32 Removable :1;\r
1586 UINT32 Replaceable :1;\r
1587 UINT32 HotSwappable :1;\r
1588 UINT32 Reserved :27;\r
79964ac8 1589} EFI_BASE_BOARD_FEATURE_FLAGS;\r
1590\r
1591typedef enum {\r
1592 EfiBaseBoardTypeUnknown = 1,\r
1593 EfiBaseBoardTypeOther = 2,\r
1594 EfiBaseBoardTypeServerBlade = 3,\r
1595 EfiBaseBoardTypeConnectivitySwitch = 4,\r
1596 EfiBaseBoardTypeSystemManagementModule = 5,\r
1597 EfiBaseBoardTypeProcessorModule = 6,\r
1598 EfiBaseBoardTypeIOModule = 7,\r
1599 EfiBaseBoardTypeMemoryModule = 8,\r
1600 EfiBaseBoardTypeDaughterBoard = 9,\r
1601 EfiBaseBoardTypeMotherBoard = 0xA,\r
1602 EfiBaseBoardTypeProcessorMemoryModule = 0xB,\r
1603 EfiBaseBoardTypeProcessorIOModule = 0xC,\r
661e7afd 1604 EfiBaseBoardTypeInterconnectBoard = 0xD\r
79964ac8 1605} EFI_BASE_BOARD_TYPE;\r
1606\r
1607typedef struct {\r
9205b2d7 1608 STRING_REF BaseBoardManufacturer;\r
1609 STRING_REF BaseBoardProductName;\r
1610 STRING_REF BaseBoardVersion;\r
1611 STRING_REF BaseBoardSerialNumber;\r
1612 STRING_REF BaseBoardAssetTag;\r
1613 STRING_REF BaseBoardChassisLocation;\r
1614 EFI_BASE_BOARD_FEATURE_FLAGS BaseBoardFeatureFlags;\r
1615 EFI_BASE_BOARD_TYPE BaseBoardType;\r
1616 EFI_INTER_LINK_DATA BaseBoardChassisLink;\r
1617 UINT32 BaseBoardNumberLinks;\r
1618 EFI_INTER_LINK_DATA LinkN;\r
79964ac8 1619} EFI_MISC_BASE_BOARD_MANUFACTURER_DATA;\r
1620\r
79964ac8 1621//\r
1622// Misc. System/Chassis Enclosure - SMBIOS Type 3\r
1623//\r
9205b2d7 1624#define EFI_MISC_CHASSIS_MANUFACTURER_RECORD_NUMBER 0x00000005\r
79964ac8 1625\r
1626typedef enum {\r
1627 EfiMiscChassisTypeOther = 0x1,\r
1628 EfiMiscChassisTypeUnknown = 0x2,\r
1629 EfiMiscChassisTypeDeskTop = 0x3,\r
1630 EfiMiscChassisTypeLowProfileDesktop = 0x4,\r
1631 EfiMiscChassisTypePizzaBox = 0x5,\r
1632 EfiMiscChassisTypeMiniTower = 0x6,\r
1633 EfiMiscChassisTypeTower = 0x7,\r
1634 EfiMiscChassisTypePortable = 0x8,\r
1635 EfiMiscChassisTypeLapTop = 0x9,\r
1636 EfiMiscChassisTypeNotebook = 0xA,\r
1637 EfiMiscChassisTypeHandHeld = 0xB,\r
1638 EfiMiscChassisTypeDockingStation = 0xC,\r
1639 EfiMiscChassisTypeAllInOne = 0xD,\r
1640 EfiMiscChassisTypeSubNotebook = 0xE,\r
1641 EfiMiscChassisTypeSpaceSaving = 0xF,\r
1642 EfiMiscChassisTypeLunchBox = 0x10,\r
1643 EfiMiscChassisTypeMainServerChassis = 0x11,\r
1644 EfiMiscChassisTypeExpansionChassis = 0x12,\r
1645 EfiMiscChassisTypeSubChassis = 0x13,\r
1646 EfiMiscChassisTypeBusExpansionChassis = 0x14,\r
1647 EfiMiscChassisTypePeripheralChassis = 0x15,\r
1648 EfiMiscChassisTypeRaidChassis = 0x16,\r
1649 EfiMiscChassisTypeRackMountChassis = 0x17,\r
1650 EfiMiscChassisTypeSealedCasePc = 0x18,\r
661e7afd 1651 EfiMiscChassisMultiSystemChassis = 0x19\r
79964ac8 1652} EFI_MISC_CHASSIS_TYPE;\r
1653\r
1654typedef struct {\r
6b7058c4 1655 ///\r
1656 /// Inconsistent with specification here: \r
1657 /// It's a typo of MiscSubclass 0.9 spec. It should be a variable\r
1658 /// name "ChassisType" rather than a type "EFI_MISC_CHASSIS_TYPE".\r
1659 ///\r
9205b2d7 1660 UINT32 ChassisType :16;\r
1661 UINT32 ChassisLockPresent:1;\r
1662 UINT32 Reserved :15;\r
79964ac8 1663} EFI_MISC_CHASSIS_STATUS;\r
1664\r
1665typedef enum {\r
1666 EfiChassisStateOther = 0x01,\r
1667 EfiChassisStateUnknown = 0x02,\r
1668 EfiChassisStateSafe = 0x03,\r
1669 EfiChassisStateWarning = 0x04,\r
1670 EfiChassisStateCritical = 0x05,\r
661e7afd 1671 EfiChassisStateNonRecoverable = 0x06\r
79964ac8 1672} EFI_MISC_CHASSIS_STATE;\r
1673\r
1674typedef enum {\r
1675 EfiChassisSecurityStatusOther = 0x01,\r
1676 EfiChassisSecurityStatusUnknown = 0x02,\r
1677 EfiChassisSecurityStatusNone = 0x03,\r
1678 EfiChassisSecurityStatusExternalInterfaceLockedOut = 0x04,\r
661e7afd 1679 EfiChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05\r
79964ac8 1680} EFI_MISC_CHASSIS_SECURITY_STATE;\r
1681\r
1682typedef struct {\r
a244f400 1683 UINT32 RecordType :1;\r
1684 UINT32 Type :7;\r
1685 UINT32 Reserved :24;\r
79964ac8 1686} EFI_MISC_ELEMENT_TYPE;\r
1687\r
1688typedef struct {\r
9205b2d7 1689 EFI_MISC_ELEMENT_TYPE ChassisElementType;\r
1690 EFI_INTER_LINK_DATA ChassisElementStructure;\r
1691 EFI_BASE_BOARD_TYPE ChassisBaseBoard;\r
1692 UINT32 ChassisElementMinimum;\r
1693 UINT32 ChassisElementMaximum;\r
79964ac8 1694} EFI_MISC_ELEMENTS;\r
1695\r
1696typedef struct {\r
9205b2d7 1697 STRING_REF ChassisManufacturer;\r
1698 STRING_REF ChassisVersion;\r
1699 STRING_REF ChassisSerialNumber;\r
1700 STRING_REF ChassisAssetTag;\r
1701 EFI_MISC_CHASSIS_STATUS ChassisType;\r
1702 EFI_MISC_CHASSIS_STATE ChassisBootupState;\r
1703 EFI_MISC_CHASSIS_STATE ChassisPowerSupplyState;\r
1704 EFI_MISC_CHASSIS_STATE ChassisThermalState;\r
1705 EFI_MISC_CHASSIS_SECURITY_STATE ChassisSecurityState;\r
1706 UINT32 ChassisOemDefined;\r
1707 UINT32 ChassisHeight;\r
1708 UINT32 ChassisNumberPowerCords;\r
1709 UINT32 ChassisElementCount;\r
1710 UINT32 ChassisElementRecordLength;\r
1711 EFI_MISC_ELEMENTS ChassisElements;\r
79964ac8 1712} EFI_MISC_CHASSIS_MANUFACTURER_DATA;\r
1713\r
79964ac8 1714//\r
1715// Misc. Port Connector Information - SMBIOS Type 8\r
1716//\r
9205b2d7 1717#define EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_RECORD_NUMBER 0x00000006\r
79964ac8 1718\r
1719typedef enum {\r
1720 EfiPortConnectorTypeNone = 0x00,\r
1721 EfiPortConnectorTypeCentronics = 0x01,\r
1722 EfiPortConnectorTypeMiniCentronics = 0x02,\r
1723 EfiPortConnectorTypeProprietary = 0x03,\r
1724 EfiPortConnectorTypeDB25Male = 0x04,\r
1725 EfiPortConnectorTypeDB25Female = 0x05,\r
1726 EfiPortConnectorTypeDB15Male = 0x06,\r
1727 EfiPortConnectorTypeDB15Female = 0x07,\r
1728 EfiPortConnectorTypeDB9Male = 0x08,\r
1729 EfiPortConnectorTypeDB9Female = 0x09,\r
1730 EfiPortConnectorTypeRJ11 = 0x0A,\r
1731 EfiPortConnectorTypeRJ45 = 0x0B,\r
1732 EfiPortConnectorType50PinMiniScsi = 0x0C,\r
1733 EfiPortConnectorTypeMiniDin = 0x0D,\r
1734 EfiPortConnectorTypeMicriDin = 0x0E,\r
1735 EfiPortConnectorTypePS2 = 0x0F,\r
1736 EfiPortConnectorTypeInfrared = 0x10,\r
1737 EfiPortConnectorTypeHpHil = 0x11,\r
1738 EfiPortConnectorTypeUsb = 0x12,\r
1739 EfiPortConnectorTypeSsaScsi = 0x13,\r
1740 EfiPortConnectorTypeCircularDin8Male = 0x14,\r
1741 EfiPortConnectorTypeCircularDin8Female = 0x15,\r
1742 EfiPortConnectorTypeOnboardIde = 0x16,\r
1743 EfiPortConnectorTypeOnboardFloppy = 0x17,\r
1744 EfiPortConnectorType9PinDualInline = 0x18,\r
1745 EfiPortConnectorType25PinDualInline = 0x19,\r
1746 EfiPortConnectorType50PinDualInline = 0x1A,\r
1747 EfiPortConnectorType68PinDualInline = 0x1B,\r
1748 EfiPortConnectorTypeOnboardSoundInput = 0x1C,\r
1749 EfiPortConnectorTypeMiniCentronicsType14 = 0x1D,\r
1750 EfiPortConnectorTypeMiniCentronicsType26 = 0x1E,\r
1751 EfiPortConnectorTypeHeadPhoneMiniJack = 0x1F,\r
1752 EfiPortConnectorTypeBNC = 0x20,\r
1753 EfiPortConnectorType1394 = 0x21,\r
1754 EfiPortConnectorTypePC98 = 0xA0,\r
1755 EfiPortConnectorTypePC98Hireso = 0xA1,\r
1756 EfiPortConnectorTypePCH98 = 0xA2,\r
1757 EfiPortConnectorTypePC98Note = 0xA3,\r
1758 EfiPortConnectorTypePC98Full = 0xA4,\r
661e7afd 1759 EfiPortConnectorTypeOther = 0xFF\r
79964ac8 1760} EFI_MISC_PORT_CONNECTOR_TYPE;\r
1761\r
1762typedef enum {\r
1763 EfiPortTypeNone = 0x00,\r
1764 EfiPortTypeParallelXtAtCompatible = 0x01,\r
1765 EfiPortTypeParallelPortPs2 = 0x02,\r
1766 EfiPortTypeParallelPortEcp = 0x03,\r
1767 EfiPortTypeParallelPortEpp = 0x04,\r
1768 EfiPortTypeParallelPortEcpEpp = 0x05,\r
1769 EfiPortTypeSerialXtAtCompatible = 0x06,\r
1770 EfiPortTypeSerial16450Compatible = 0x07,\r
1771 EfiPortTypeSerial16550Compatible = 0x08,\r
1772 EfiPortTypeSerial16550ACompatible = 0x09,\r
1773 EfiPortTypeScsi = 0x0A,\r
1774 EfiPortTypeMidi = 0x0B,\r
1775 EfiPortTypeJoyStick = 0x0C,\r
1776 EfiPortTypeKeyboard = 0x0D,\r
1777 EfiPortTypeMouse = 0x0E,\r
1778 EfiPortTypeSsaScsi = 0x0F,\r
1779 EfiPortTypeUsb = 0x10,\r
1780 EfiPortTypeFireWire = 0x11,\r
1781 EfiPortTypePcmciaTypeI = 0x12,\r
1782 EfiPortTypePcmciaTypeII = 0x13,\r
1783 EfiPortTypePcmciaTypeIII = 0x14,\r
1784 EfiPortTypeCardBus = 0x15,\r
1785 EfiPortTypeAccessBusPort = 0x16,\r
1786 EfiPortTypeScsiII = 0x17,\r
1787 EfiPortTypeScsiWide = 0x18,\r
1788 EfiPortTypePC98 = 0x19,\r
1789 EfiPortTypePC98Hireso = 0x1A,\r
1790 EfiPortTypePCH98 = 0x1B,\r
1791 EfiPortTypeVideoPort = 0x1C,\r
1792 EfiPortTypeAudioPort = 0x1D,\r
1793 EfiPortTypeModemPort = 0x1E,\r
1794 EfiPortTypeNetworkPort = 0x1F,\r
1795 EfiPortType8251Compatible = 0xA0,\r
1796 EfiPortType8251FifoCompatible = 0xA1,\r
661e7afd 1797 EfiPortTypeOther = 0xFF\r
79964ac8 1798} EFI_MISC_PORT_TYPE;\r
1799\r
1800typedef struct {\r
9205b2d7 1801 STRING_REF PortInternalConnectorDesignator;\r
1802 STRING_REF PortExternalConnectorDesignator;\r
1803 EFI_MISC_PORT_CONNECTOR_TYPE PortInternalConnectorType;\r
1804 EFI_MISC_PORT_CONNECTOR_TYPE PortExternalConnectorType;\r
1805 EFI_MISC_PORT_TYPE PortType;\r
1806 EFI_MISC_PORT_DEVICE_PATH PortPath;\r
79964ac8 1807} EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA;\r
1808\r
79964ac8 1809//\r
1810// Misc. System Slots - SMBIOS Type 9\r
1811//\r
9205b2d7 1812#define EFI_MISC_SYSTEM_SLOT_DESIGNATION_RECORD_NUMBER 0x00000007\r
79964ac8 1813\r
1814typedef enum {\r
1815 EfiSlotTypeOther = 0x01,\r
1816 EfiSlotTypeUnknown = 0x02,\r
1817 EfiSlotTypeIsa = 0x03,\r
1818 EfiSlotTypeMca = 0x04,\r
1819 EfiSlotTypeEisa = 0x05,\r
1820 EfiSlotTypePci = 0x06,\r
1821 EfiSlotTypePcmcia = 0x07,\r
1822 EfiSlotTypeVlVesa = 0x08,\r
1823 EfiSlotTypeProprietary = 0x09,\r
1824 EfiSlotTypeProcessorCardSlot = 0x0A,\r
1825 EfiSlotTypeProprietaryMemoryCardSlot = 0x0B,\r
1826 EfiSlotTypeIORiserCardSlot = 0x0C,\r
1827 EfiSlotTypeNuBus = 0x0D,\r
1828 EfiSlotTypePci66MhzCapable = 0x0E,\r
1829 EfiSlotTypeAgp = 0x0F,\r
1830 EfiSlotTypeApg2X = 0x10,\r
1831 EfiSlotTypeAgp4X = 0x11,\r
1832 EfiSlotTypePciX = 0x12,\r
1833 EfiSlotTypeAgp4x = 0x13,\r
1834 EfiSlotTypePC98C20 = 0xA0,\r
1835 EfiSlotTypePC98C24 = 0xA1,\r
1836 EfiSlotTypePC98E = 0xA2,\r
1837 EfiSlotTypePC98LocalBus = 0xA3,\r
1838 EfiSlotTypePC98Card = 0xA4,\r
1839 EfiSlotTypePciExpress = 0xA5\r
1840} EFI_MISC_SLOT_TYPE;\r
1841\r
1842typedef enum {\r
1843 EfiSlotDataBusWidthOther = 0x01,\r
1844 EfiSlotDataBusWidthUnknown = 0x02,\r
1845 EfiSlotDataBusWidth8Bit = 0x03,\r
1846 EfiSlotDataBusWidth16Bit = 0x04,\r
1847 EfiSlotDataBusWidth32Bit = 0x05,\r
1848 EfiSlotDataBusWidth64Bit = 0x06,\r
661e7afd 1849 EfiSlotDataBusWidth128Bit = 0x07\r
79964ac8 1850} EFI_MISC_SLOT_DATA_BUS_WIDTH;\r
1851\r
1852typedef enum {\r
1853 EfiSlotUsageOther = 1,\r
1854 EfiSlotUsageUnknown = 2,\r
1855 EfiSlotUsageAvailable = 3,\r
661e7afd 1856 EfiSlotUsageInUse = 4\r
79964ac8 1857} EFI_MISC_SLOT_USAGE;\r
1858\r
1859typedef enum {\r
1860 EfiSlotLengthOther = 1,\r
1861 EfiSlotLengthUnknown = 2,\r
1862 EfiSlotLengthShort = 3,\r
1863 EfiSlotLengthLong = 4\r
1864} EFI_MISC_SLOT_LENGTH;\r
1865\r
1866typedef struct {\r
9205b2d7 1867 UINT32 CharacteristicsUnknown :1;\r
1868 UINT32 Provides50Volts :1;\r
1869 UINT32 Provides33Volts :1;\r
1870 UINT32 SharedSlot :1;\r
1871 UINT32 PcCard16Supported :1;\r
1872 UINT32 CardBusSupported :1;\r
1873 UINT32 ZoomVideoSupported :1;\r
1874 UINT32 ModemRingResumeSupported:1;\r
1875 UINT32 PmeSignalSupported :1;\r
1876 UINT32 HotPlugDevicesSupported :1;\r
1877 UINT32 SmbusSignalSupported :1;\r
1878 UINT32 Reserved :21;\r
79964ac8 1879} EFI_MISC_SLOT_CHARACTERISTICS;\r
1880\r
1881typedef struct {\r
9205b2d7 1882 STRING_REF SlotDesignation;\r
1883 EFI_MISC_SLOT_TYPE SlotType;\r
1884 EFI_MISC_SLOT_DATA_BUS_WIDTH SlotDataBusWidth;\r
1885 EFI_MISC_SLOT_USAGE SlotUsage;\r
1886 EFI_MISC_SLOT_LENGTH SlotLength;\r
1887 UINT16 SlotId;\r
1888 EFI_MISC_SLOT_CHARACTERISTICS SlotCharacteristics;\r
1889 EFI_DEVICE_PATH_PROTOCOL SlotDevicePath;\r
79964ac8 1890} EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA;\r
1891\r
79964ac8 1892//\r
1893// Misc. Onboard Device - SMBIOS Type 10\r
1894//\r
9205b2d7 1895#define EFI_MISC_ONBOARD_DEVICE_RECORD_NUMBER 0x00000008\r
79964ac8 1896\r
1897typedef enum {\r
1898 EfiOnBoardDeviceTypeOther = 1,\r
1899 EfiOnBoardDeviceTypeUnknown = 2,\r
1900 EfiOnBoardDeviceTypeVideo = 3,\r
1901 EfiOnBoardDeviceTypeScsiController = 4,\r
1902 EfiOnBoardDeviceTypeEthernet = 5,\r
1903 EfiOnBoardDeviceTypeTokenRing = 6,\r
661e7afd 1904 EfiOnBoardDeviceTypeSound = 7\r
79964ac8 1905} EFI_MISC_ONBOARD_DEVICE_TYPE;\r
1906\r
1907typedef struct {\r
9205b2d7 1908 UINT32 DeviceType :16;\r
1909 UINT32 DeviceEnabled :1;\r
1910 UINT32 Reserved :15;\r
79964ac8 1911} EFI_MISC_ONBOARD_DEVICE_STATUS;\r
1912\r
1913typedef struct {\r
9205b2d7 1914 STRING_REF OnBoardDeviceDescription;\r
1915 EFI_MISC_ONBOARD_DEVICE_STATUS OnBoardDeviceStatus;\r
1916 EFI_DEVICE_PATH_PROTOCOL OnBoardDevicePath;\r
79964ac8 1917} EFI_MISC_ONBOARD_DEVICE_DATA;\r
1918\r
79964ac8 1919//\r
1920// Misc. BIOS Language Information - SMBIOS Type 11\r
1921//\r
9205b2d7 1922#define EFI_MISC_OEM_STRING_RECORD_NUMBER 0x00000009\r
79964ac8 1923\r
1924typedef struct {\r
9205b2d7 1925 STRING_REF OemStringRef[1];\r
79964ac8 1926} EFI_MISC_OEM_STRING_DATA;\r
1927\r
79964ac8 1928//\r
1929// Misc. System Options - SMBIOS Type 12\r
1930//\r
1931typedef struct {\r
9205b2d7 1932 STRING_REF SystemOptionStringRef[1];\r
79964ac8 1933} EFI_MISC_SYSTEM_OPTION_STRING_DATA;\r
1934\r
9205b2d7 1935#define EFI_MISC_SYSTEM_OPTION_STRING_RECORD_NUMBER 0x0000000A\r
79964ac8 1936\r
79964ac8 1937//\r
1938// Misc. Number of Installable Languages - SMBIOS Type 13\r
1939//\r
9205b2d7 1940#define EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_RECORD_NUMBER 0x0000000B\r
79964ac8 1941\r
1942typedef struct {\r
9205b2d7 1943 UINT32 AbbreviatedLanguageFormat :1;\r
1944 UINT32 Reserved :31;\r
79964ac8 1945} EFI_MISC_LANGUAGE_FLAGS;\r
1946\r
1947typedef struct {\r
9205b2d7 1948 UINT16 NumberOfInstallableLanguages;\r
1949 EFI_MISC_LANGUAGE_FLAGS LanguageFlags;\r
1950 UINT16 CurrentLanguageNumber;\r
79964ac8 1951} EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA;\r
1952\r
79964ac8 1953//\r
1954// Misc. System Language String\r
1955//\r
9205b2d7 1956#define EFI_MISC_SYSTEM_LANGUAGE_STRING_RECORD_NUMBER 0x0000000C\r
79964ac8 1957\r
1958typedef struct {\r
9205b2d7 1959 UINT16 LanguageId;\r
1960 STRING_REF SystemLanguageString;\r
79964ac8 1961} EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA;\r
1962\r
79964ac8 1963//\r
1964// Group Associations - SMBIOS Type 14\r
1965//\r
9205b2d7 1966#define EFI_MISC_GROUP_NAME_RECORD_NUMBER 0x0000000D\r
79964ac8 1967\r
1968typedef struct {\r
9205b2d7 1969 STRING_REF GroupName;\r
1970 UINT16 NumberGroupItems;\r
1971 UINT16 GroupId;\r
79964ac8 1972} EFI_MISC_GROUP_NAME_DATA;\r
1973\r
79964ac8 1974//\r
1975// Group Item Set Element\r
1976//\r
9205b2d7 1977#define EFI_MISC_GROUP_ITEM_SET_RECORD_NUMBER 0x0000000E\r
79964ac8 1978\r
1979typedef struct {\r
9205b2d7 1980 EFI_GUID SubClass;\r
1981 EFI_INTER_LINK_DATA GroupLink;\r
1982 UINT16 GroupId;\r
1983 UINT16 GroupElementId;\r
79964ac8 1984} EFI_MISC_GROUP_ITEM_SET_DATA;\r
1985\r
79964ac8 1986//\r
1987// Misc. Pointing Device Type - SMBIOS Type 21\r
1988//\r
9205b2d7 1989#define EFI_MISC_POINTING_DEVICE_TYPE_RECORD_NUMBER 0x0000000F\r
79964ac8 1990\r
1991typedef enum {\r
1992 EfiPointingDeviceTypeOther = 0x01,\r
1993 EfiPointingDeviceTypeUnknown = 0x02,\r
1994 EfiPointingDeviceTypeMouse = 0x03,\r
1995 EfiPointingDeviceTypeTrackBall = 0x04,\r
1996 EfiPointingDeviceTypeTrackPoint = 0x05,\r
1997 EfiPointingDeviceTypeGlidePoint = 0x06,\r
1998 EfiPointingDeviceTouchPad = 0x07,\r
1999 EfiPointingDeviceTouchScreen = 0x08,\r
661e7afd 2000 EfiPointingDeviceOpticalSensor = 0x09\r
79964ac8 2001} EFI_MISC_POINTING_DEVICE_TYPE;\r
2002\r
2003typedef enum {\r
2004 EfiPointingDeviceInterfaceOther = 0x01,\r
2005 EfiPointingDeviceInterfaceUnknown = 0x02,\r
2006 EfiPointingDeviceInterfaceSerial = 0x03,\r
2007 EfiPointingDeviceInterfacePs2 = 0x04,\r
2008 EfiPointingDeviceInterfaceInfrared = 0x05,\r
2009 EfiPointingDeviceInterfaceHpHil = 0x06,\r
2010 EfiPointingDeviceInterfaceBusMouse = 0x07,\r
2011 EfiPointingDeviceInterfaceADB = 0x08,\r
2012 EfiPointingDeviceInterfaceBusMouseDB9 = 0xA0,\r
2013 EfiPointingDeviceInterfaceBusMouseMicroDin = 0xA1,\r
661e7afd 2014 EfiPointingDeviceInterfaceUsb = 0xA2\r
79964ac8 2015} EFI_MISC_POINTING_DEVICE_INTERFACE;\r
2016\r
2017typedef struct {\r
2018 EFI_MISC_POINTING_DEVICE_TYPE PointingDeviceType;\r
2019 EFI_MISC_POINTING_DEVICE_INTERFACE PointingDeviceInterface;\r
2020 UINT16 NumberPointingDeviceButtons;\r
2021 EFI_DEVICE_PATH_PROTOCOL PointingDevicePath;\r
2022} EFI_MISC_PORTING_DEVICE_TYPE_DATA;\r
2023\r
79964ac8 2024//\r
2025// Portable Battery - SMBIOS Type 22\r
2026//\r
9205b2d7 2027#define EFI_MISC_PORTABLE_BATTERY_RECORD_NUMBER 0x00000010\r
79964ac8 2028\r
765e516c 2029typedef enum { \r
2030 EfiPortableBatteryDeviceChemistryOther = 1,\r
2031 EfiPortableBatteryDeviceChemistryUnknown = 2,\r
2032 EfiPortableBatteryDeviceChemistryLeadAcid = 3,\r
2033 EfiPortableBatteryDeviceChemistryNickelCadmium = 4,\r
2034 EfiPortableBatteryDeviceChemistryNickelMetalHydride = 5,\r
2035 EfiPortableBatteryDeviceChemistryLithiumIon = 6,\r
2036 EfiPortableBatteryDeviceChemistryZincAir = 7,\r
661e7afd 2037 EfiPortableBatteryDeviceChemistryLithiumPolymer = 8\r
765e516c 2038} EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
2039\r
2040typedef struct {\r
9205b2d7 2041 STRING_REF Location;\r
2042 STRING_REF Manufacturer;\r
2043 STRING_REF ManufactureDate;\r
2044 STRING_REF SerialNumber;\r
2045 STRING_REF DeviceName;\r
2046 EFI_MISC_PORTABLE_BATTERY_DEVICE_CHEMISTRY \r
2047 DeviceChemistry;\r
2048 UINT16 DesignCapacity;\r
2049 UINT16 DesignVoltage;\r
2050 STRING_REF SBDSVersionNumber;\r
2051 UINT8 MaximumError;\r
2052 UINT16 SBDSSerialNumber;\r
2053 UINT16 SBDSManufactureDate;\r
2054 STRING_REF SBDSDeviceChemistry;\r
2055 UINT8 DesignCapacityMultiplier;\r
2056 UINT32 OEMSpecific; \r
2057 UINT8 BatteryNumber; // Temporary \r
2058 BOOLEAN Valid; // Is entry valid - Temporary\r
765e516c 2059} EFI_MISC_PORTABLE_BATTERY;\r
79964ac8 2060\r
79964ac8 2061//\r
2062// Misc. Reset Capabilities - SMBIOS Type 23\r
2063//\r
9205b2d7 2064#define EFI_MISC_RESET_CAPABILITIES_RECORD_NUMBER 0x00000011\r
79964ac8 2065\r
2066typedef struct {\r
9205b2d7 2067 UINT32 Status :1;\r
2068 UINT32 BootOption :2;\r
2069 UINT32 BootOptionOnLimit :2;\r
2070 UINT32 WatchdogTimerPresent:1;\r
2071 UINT32 Reserved :26;\r
79964ac8 2072} EFI_MISC_RESET_CAPABILITIES_TYPE;\r
2073\r
2074typedef struct {\r
2075 EFI_MISC_RESET_CAPABILITIES_TYPE ResetCapabilities;\r
2076 UINT16 ResetCount;\r
2077 UINT16 ResetLimit;\r
2078 UINT16 ResetTimerInterval;\r
2079 UINT16 ResetTimeout;\r
2080} EFI_MISC_RESET_CAPABILITIES;\r
2081\r
2082typedef struct {\r
9205b2d7 2083 EFI_MISC_RESET_CAPABILITIES ResetCapabilities;\r
2084 UINT16 ResetCount;\r
2085 UINT16 ResetLimit;\r
2086 UINT16 ResetTimerInterval;\r
2087 UINT16 ResetTimeout;\r
79964ac8 2088} EFI_MISC_RESET_CAPABILITIES_DATA;\r
2089\r
79964ac8 2090//\r
2091// Misc. Hardware Security - SMBIOS Type 24\r
2092//\r
9205b2d7 2093#define EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA_RECORD_NUMBER 0x00000012\r
79964ac8 2094\r
2095typedef enum {\r
2096 EfiHardwareSecurityStatusDisabled = 0,\r
2097 EfiHardwareSecurityStatusEnabled = 1,\r
2098 EfiHardwareSecurityStatusNotImplemented = 2,\r
2099 EfiHardwareSecurityStatusUnknown = 3\r
2100} EFI_MISC_HARDWARE_SECURITY_STATUS;\r
2101\r
2102typedef struct {\r
9205b2d7 2103 EFI_MISC_HARDWARE_SECURITY_STATUS FrontPanelResetStatus :2;\r
2104 EFI_MISC_HARDWARE_SECURITY_STATUS AdministratorPasswordStatus :2;\r
2105 EFI_MISC_HARDWARE_SECURITY_STATUS KeyboardPasswordStatus :2;\r
2106 EFI_MISC_HARDWARE_SECURITY_STATUS PowerOnPasswordStatus :2;\r
2107 EFI_MISC_HARDWARE_SECURITY_STATUS Reserved :24;\r
79964ac8 2108} EFI_MISC_HARDWARE_SECURITY_SETTINGS;\r
2109\r
2110typedef struct {\r
2111 EFI_MISC_HARDWARE_SECURITY_SETTINGS HardwareSecuritySettings;\r
2112} EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA;\r
2113\r
79964ac8 2114//\r
2115// System Power Controls - SMBIOS Type 25\r
2116//\r
9205b2d7 2117#define EFI_MISC_SCHEDULED_POWER_ON_MONTH_RECORD_NUMBER 0x00000013\r
79964ac8 2118\r
2119typedef struct {\r
9205b2d7 2120 UINT16 ScheduledPoweronMonth;\r
2121 UINT16 ScheduledPoweronDayOfMonth;\r
2122 UINT16 ScheduledPoweronHour;\r
2123 UINT16 ScheduledPoweronMinute;\r
2124 UINT16 ScheduledPoweronSecond;\r
79964ac8 2125} EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA;\r
2126\r
79964ac8 2127//\r
2128// Voltage Probe - SMBIOS Type 26\r
2129//\r
9205b2d7 2130#define EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000014\r
79964ac8 2131\r
2132typedef struct {\r
9205b2d7 2133 UINT32 VoltageProbeSite :5;\r
2134 UINT32 VoltageProbeStatus :3;\r
2135 UINT32 Reserved :24;\r
79964ac8 2136} EFI_MISC_VOLTAGE_PROBE_LOCATION;\r
2137\r
2138typedef struct {\r
9205b2d7 2139 STRING_REF VoltageProbeDescription;\r
2140 EFI_MISC_VOLTAGE_PROBE_LOCATION VoltageProbeLocation;\r
2141 EFI_EXP_BASE10_DATA VoltageProbeMaximumValue;\r
2142 EFI_EXP_BASE10_DATA VoltageProbeMinimumValue;\r
2143 EFI_EXP_BASE10_DATA VoltageProbeResolution;\r
2144 EFI_EXP_BASE10_DATA VoltageProbeTolerance;\r
2145 EFI_EXP_BASE10_DATA VoltageProbeAccuracy;\r
2146 EFI_EXP_BASE10_DATA VoltageProbeNominalValue;\r
2147 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2148 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2149 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2150 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2151 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2152 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2153 UINT32 VoltageProbeOemDefined;\r
79964ac8 2154} EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA;\r
2155\r
79964ac8 2156//\r
2157// Cooling Device - SMBIOS Type 27\r
2158//\r
9205b2d7 2159#define EFI_MISC_COOLING_DEVICE_TEMP_LINK_RECORD_NUMBER 0x00000015\r
79964ac8 2160\r
2161typedef struct {\r
9205b2d7 2162 UINT32 CoolingDevice :5;\r
2163 UINT32 CoolingDeviceStatus :3;\r
2164 UINT32 Reserved :24;\r
79964ac8 2165} EFI_MISC_COOLING_DEVICE_TYPE;\r
2166\r
2167typedef struct {\r
9205b2d7 2168 EFI_MISC_COOLING_DEVICE_TYPE CoolingDeviceType;\r
2169 EFI_INTER_LINK_DATA CoolingDeviceTemperatureLink;\r
2170 UINT16 CoolingDeviceUnitGroup;\r
2171 EFI_EXP_BASE10_DATA CoolingDeviceNominalSpeed;\r
2172 UINT32 CoolingDeviceOemDefined;\r
79964ac8 2173} EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA;\r
2174\r
79964ac8 2175//\r
2176// Temperature Probe - SMBIOS Type 28\r
2177//\r
9205b2d7 2178#define EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000016\r
79964ac8 2179\r
2180typedef struct {\r
9205b2d7 2181 UINT32 TemperatureProbeSite :5;\r
2182 UINT32 TemperatureProbeStatus :3;\r
2183 UINT32 Reserved :24;\r
79964ac8 2184} EFI_MISC_TEMPERATURE_PROBE_LOCATION;\r
2185\r
2186typedef struct {\r
9205b2d7 2187 STRING_REF TemperatureProbeDescription;\r
79964ac8 2188 EFI_MISC_TEMPERATURE_PROBE_LOCATION\r
9205b2d7 2189 TemperatureProbeLocation;\r
2190 EFI_EXP_BASE10_DATA TemperatureProbeMaximumValue;\r
2191 EFI_EXP_BASE10_DATA TemperatureProbeMinimumValue;\r
2192 EFI_EXP_BASE10_DATA TemperatureProbeResolution;\r
2193 EFI_EXP_BASE10_DATA TemperatureProbeTolerance;\r
2194 EFI_EXP_BASE10_DATA TemperatureProbeAccuracy;\r
2195 EFI_EXP_BASE10_DATA TemperatureProbeNominalValue;\r
2196 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2197 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2198 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2199 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2200 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2201 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2202 UINT32 TemperatureProbeOemDefined;\r
79964ac8 2203} EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA;\r
2204\r
79964ac8 2205//\r
2206// Electrical Current Probe - SMBIOS Type 29\r
2207//\r
2208\r
9205b2d7 2209#define EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_RECORD_NUMBER 0x00000017\r
79964ac8 2210\r
2211typedef struct {\r
9205b2d7 2212 UINT32 ElectricalCurrentProbeSite :5;\r
2213 UINT32 ElectricalCurrentProbeStatus :3;\r
2214 UINT32 Reserved :24;\r
79964ac8 2215} EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;\r
2216\r
2217typedef struct {\r
9205b2d7 2218 STRING_REF ElectricalCurrentProbeDescription;\r
79964ac8 2219 EFI_MISC_ELECTRICAL_CURRENT_PROBE_LOCATION\r
9205b2d7 2220 ElectricalCurrentProbeLocation;\r
2221 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMaximumValue;\r
2222 EFI_EXP_BASE10_DATA ElectricalCurrentProbeMinimumValue;\r
2223 EFI_EXP_BASE10_DATA ElectricalCurrentProbeResolution;\r
2224 EFI_EXP_BASE10_DATA ElectricalCurrentProbeTolerance;\r
2225 EFI_EXP_BASE10_DATA ElectricalCurrentProbeAccuracy;\r
2226 EFI_EXP_BASE10_DATA ElectricalCurrentProbeNominalValue;\r
2227 EFI_EXP_BASE10_DATA MDLowerNoncriticalThreshold;\r
2228 EFI_EXP_BASE10_DATA MDUpperNoncriticalThreshold;\r
2229 EFI_EXP_BASE10_DATA MDLowerCriticalThreshold;\r
2230 EFI_EXP_BASE10_DATA MDUpperCriticalThreshold;\r
2231 EFI_EXP_BASE10_DATA MDLowerNonrecoverableThreshold;\r
2232 EFI_EXP_BASE10_DATA MDUpperNonrecoverableThreshold;\r
2233 UINT32 ElectricalCurrentProbeOemDefined;\r
79964ac8 2234} EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA;\r
2235\r
79964ac8 2236//\r
2237// Out-of-Band Remote Access - SMBIOS Type 30\r
2238//\r
2239\r
9205b2d7 2240#define EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_RECORD_NUMBER 0x00000018\r
79964ac8 2241\r
2242typedef struct {\r
9205b2d7 2243 UINT32 InboundConnectionEnabled :1;\r
2244 UINT32 OutboundConnectionEnabled :1;\r
2245 UINT32 Reserved :30;\r
79964ac8 2246} EFI_MISC_REMOTE_ACCESS_CONNECTIONS;\r
2247\r
2248typedef struct {\r
9205b2d7 2249 STRING_REF RemoteAccessManufacturerNameDescription;\r
2250 EFI_MISC_REMOTE_ACCESS_CONNECTIONS RemoteAccessConnections;\r
79964ac8 2251} EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA;\r
2252\r
79964ac8 2253//\r
2254// Misc. BIS Entry Point - SMBIOS Type 31\r
2255//\r
9205b2d7 2256#define EFI_MISC_BIS_ENTRY_POINT_RECORD_NUMBER 0x00000019\r
79964ac8 2257\r
2258typedef struct {\r
9205b2d7 2259 EFI_PHYSICAL_ADDRESS BisEntryPoint;\r
79964ac8 2260} EFI_MISC_BIS_ENTRY_POINT_DATA;\r
2261\r
79964ac8 2262//\r
2263// Misc. Boot Information - SMBIOS Type 32\r
2264//\r
9205b2d7 2265#define EFI_MISC_BOOT_INFORMATION_STATUS_RECORD_NUMBER 0x0000001A\r
79964ac8 2266\r
2267typedef enum {\r
2268 EfiBootInformationStatusNoError = 0x00,\r
2269 EfiBootInformationStatusNoBootableMedia = 0x01,\r
2270 EfiBootInformationStatusNormalOSFailedLoading = 0x02,\r
2271 EfiBootInformationStatusFirmwareDetectedFailure = 0x03,\r
2272 EfiBootInformationStatusOSDetectedFailure = 0x04,\r
2273 EfiBootInformationStatusUserRequestedBoot = 0x05,\r
2274 EfiBootInformationStatusSystemSecurityViolation = 0x06,\r
2275 EfiBootInformationStatusPreviousRequestedImage = 0x07,\r
2276 EfiBootInformationStatusWatchdogTimerExpired = 0x08,\r
2277 EfiBootInformationStatusStartReserved = 0x09,\r
2278 EfiBootInformationStatusStartOemSpecific = 0x80,\r
661e7afd 2279 EfiBootInformationStatusStartProductSpecific = 0xC0\r
79964ac8 2280} EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
2281\r
2282typedef struct {\r
2283 EFI_MISC_BOOT_INFORMATION_STATUS_DATA_TYPE BootInformationStatus;\r
2284 UINT8 BootInformationData[9];\r
2285} EFI_MISC_BOOT_INFORMATION_STATUS_DATA;\r
2286\r
79964ac8 2287//\r
2288// Management Device - SMBIOS Type 34\r
2289//\r
9205b2d7 2290#define EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_RECORD_NUMBER 0x0000001B\r
79964ac8 2291\r
2292typedef enum {\r
2293 EfiManagementDeviceTypeOther = 0x01,\r
2294 EfiManagementDeviceTypeUnknown = 0x02,\r
2295 EfiManagementDeviceTypeLm75 = 0x03,\r
2296 EfiManagementDeviceTypeLm78 = 0x04,\r
2297 EfiManagementDeviceTypeLm79 = 0x05,\r
2298 EfiManagementDeviceTypeLm80 = 0x06,\r
2299 EfiManagementDeviceTypeLm81 = 0x07,\r
2300 EfiManagementDeviceTypeAdm9240 = 0x08,\r
2301 EfiManagementDeviceTypeDs1780 = 0x09,\r
2302 EfiManagementDeviceTypeMaxim1617 = 0x0A,\r
2303 EfiManagementDeviceTypeGl518Sm = 0x0B,\r
2304 EfiManagementDeviceTypeW83781D = 0x0C,\r
661e7afd 2305 EfiManagementDeviceTypeHt82H791 = 0x0D\r
79964ac8 2306} EFI_MISC_MANAGEMENT_DEVICE_TYPE;\r
2307\r
2308typedef enum {\r
2309 EfiManagementDeviceAddressTypeOther = 1,\r
2310 EfiManagementDeviceAddressTypeUnknown = 2,\r
2311 EfiManagementDeviceAddressTypeIOPort = 3,\r
2312 EfiManagementDeviceAddressTypeMemory = 4,\r
2313 EfiManagementDeviceAddressTypeSmbus = 5\r
2314} EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;\r
2315\r
2316typedef struct {\r
9205b2d7 2317 STRING_REF ManagementDeviceDescription;\r
2318 EFI_MISC_MANAGEMENT_DEVICE_TYPE ManagementDeviceType;\r
2319 UINTN ManagementDeviceAddress;\r
79964ac8 2320 EFI_MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE\r
9205b2d7 2321 ManagementDeviceAddressType;\r
79964ac8 2322} EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA;\r
2323\r
79964ac8 2324//\r
2325// Management Device Component - SMBIOS Type 35\r
2326//\r
2327\r
9205b2d7 2328#define EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER 0x0000001C\r
79964ac8 2329\r
2330typedef struct {\r
9205b2d7 2331 STRING_REF ManagementDeviceComponentDescription;\r
2332 EFI_INTER_LINK_DATA ManagementDeviceLink;\r
2333 EFI_INTER_LINK_DATA ManagementDeviceComponentLink;\r
2334 EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;\r
79964ac8 2335} EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA;\r
2336\r
79964ac8 2337//\r
2338// IPMI Data Record - SMBIOS Type 38\r
2339//\r
2340typedef enum {\r
2341 EfiIpmiOther = 0,\r
2342 EfiIpmiKcs = 1,\r
2343 EfiIpmiSmic = 2,\r
661e7afd 2344 EfiIpmiBt = 3\r
79964ac8 2345} EFI_MISC_IPMI_INTERFACE_TYPE;\r
2346\r
2347typedef struct {\r
9205b2d7 2348 UINT16 IpmiSpecLeastSignificantDigit:4;\r
2349 UINT16 IpmiSpecMostSignificantDigit: 4;\r
2350 UINT16 Reserved: 8;\r
79964ac8 2351} EFI_MISC_IPMI_SPECIFICATION_REVISION;\r
2352\r
2353typedef struct {\r
9205b2d7 2354 EFI_MISC_IPMI_INTERFACE_TYPE IpmiInterfaceType;\r
2355 EFI_MISC_IPMI_SPECIFICATION_REVISION \r
2356 IpmiSpecificationRevision;\r
2357 UINT16 IpmiI2CSlaveAddress;\r
2358 UINT16 IpmiNvDeviceAddress;\r
2359 UINT64 IpmiBaseAddress;\r
2360 EFI_DEVICE_PATH_PROTOCOL IpmiDevicePath;\r
79964ac8 2361} EFI_MISC_IPMI_INTERFACE_TYPE_DATA;\r
2362\r
9205b2d7 2363#define EFI_MISC_IPMI_INTERFACE_TYPE_RECORD_NUMBER 0x0000001D\r
79964ac8 2364\r
79964ac8 2365//\r
2366//System Power supply Record - SMBIOS Type 39\r
2367//\r
2368typedef struct {\r
9205b2d7 2369 UINT16 PowerSupplyHotReplaceable:1;\r
2370 UINT16 PowerSupplyPresent :1;\r
2371 UINT16 PowerSupplyUnplugged :1;\r
2372 UINT16 InputVoltageRangeSwitch :4;\r
2373 UINT16 PowerSupplyStatus :3;\r
2374 UINT16 PowerSupplyType :4;\r
2375 UINT16 Reserved :2;\r
79964ac8 2376} POWER_SUPPLY_CHARACTERISTICS;\r
2377\r
2378typedef struct {\r
9205b2d7 2379 UINT16 PowerUnitGroup;\r
2380 STRING_REF PowerSupplyLocation;\r
2381 STRING_REF PowerSupplyDeviceName;\r
2382 STRING_REF PowerSupplyManufacturer;\r
2383 STRING_REF PowerSupplySerialNumber;\r
2384 STRING_REF PowerSupplyAssetTagNumber;\r
2385 STRING_REF PowerSupplyModelPartNumber;\r
2386 STRING_REF PowerSupplyRevisionLevel;\r
2387 UINT16 PowerSupplyMaxPowerCapacity;\r
2388 POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;\r
2389 EFI_INTER_LINK_DATA PowerSupplyInputVoltageProbeLink;\r
2390 EFI_INTER_LINK_DATA PowerSupplyCoolingDeviceLink;\r
2391 EFI_INTER_LINK_DATA PowerSupplyInputCurrentProbeLink;\r
79964ac8 2392} EFI_MISC_SYSTEM_POWER_SUPPLY_DATA;\r
2393\r
9205b2d7 2394#define EFI_MISC_SYSTEM_POWER_SUPPLY_RECORD_NUMBER 0x0000001E\r
79964ac8 2395\r
79964ac8 2396//\r
2397// OEM Data Record - SMBIOS Type 0x80-0xFF\r
2398//\r
2399typedef struct {\r
9205b2d7 2400 UINT8 Type;\r
2401 UINT8 Length;\r
2402 UINT16 Handle;\r
79964ac8 2403} SMBIOS_STRUCTURE_HDR;\r
2404\r
2405typedef struct {\r
9205b2d7 2406 SMBIOS_STRUCTURE_HDR Header;\r
2407 UINT8 RawData[1];\r
79964ac8 2408} EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA;\r
2409\r
9205b2d7 2410#define EFI_MISC_SMBIOS_STRUCT_ENCAP_RECORD_NUMBER 0x0000001F\r
79964ac8 2411\r
91399a51 2412//\r
2413// Misc. System Event Log - SMBIOS Type 15\r
2414//\r
9205b2d7 2415#define EFI_MISC_SYSTEM_EVENT_LOG_RECORD_NUMBER 0x00000020\r
2416typedef struct {\r
2417 UINT16 LogAreaLength;\r
2418 UINT16 LogHeaderStartOffset;\r
2419 UINT16 LogDataStartOffset;\r
2420 UINT8 AccessMethod;\r
2421 UINT8 LogStatus;\r
2422 UINT32 LogChangeToken;\r
2423 UINT32 AccessMethodAddress;\r
2424 UINT8 LogHeaderFormat;\r
2425 UINT8 NumberOfSupportedLogType;\r
2426 UINT8 LengthOfLogDescriptor;\r
91399a51 2427} EFI_MISC_SYSTEM_EVENT_LOG_DATA;\r
2428\r
2429//\r
2430// Access Method.\r
2431// 0x00~0x04: as following definition\r
2432// 0x05~0x7f: Available for future assignment.\r
2433// 0x80~0xff: BIOS Vendor/OEM-specific.\r
2434// \r
2435#define ACCESS_INDEXIO_1INDEX8BIT_DATA8BIT 0x00\r
2436#define ACCESS_INDEXIO_2INDEX8BIT_DATA8BIT 0X01\r
2437#define ACCESS_INDEXIO_1INDEX16BIT_DATA8BIT 0X02\r
2438#define ACCESS_MEMORY_MAPPED 0x03\r
2439#define ACCESS_GPNV 0x04\r
2440\r
91399a51 2441//\r
2442//Management Device Threshold Data Record - SMBIOS Type 36\r
2443//\r
9205b2d7 2444#define EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD_RECORD_NUMBER 0x00000021\r
91399a51 2445\r
2446typedef struct {\r
9205b2d7 2447 UINT16 LowerThresNonCritical;\r
2448 UINT16 UpperThresNonCritical;\r
2449 UINT16 LowerThresCritical;\r
2450 UINT16 UpperThresCritical;\r
2451 UINT16 LowerThresNonRecover;\r
2452 UINT16 UpperThresNonRecover;\r
91399a51 2453} EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD;\r
2454\r
79964ac8 2455//\r
2456// Declare the following strutures alias to use them more conviniently.\r
2457//\r
2458typedef EFI_MISC_LAST_PCI_BUS_DATA EFI_MISC_LAST_PCI_BUS;\r
2459typedef EFI_MISC_BIOS_VENDOR_DATA EFI_MISC_BIOS_VENDOR;\r
2460typedef EFI_MISC_SYSTEM_MANUFACTURER_DATA EFI_MISC_SYSTEM_MANUFACTURER;\r
2461typedef EFI_MISC_BASE_BOARD_MANUFACTURER_DATA EFI_MISC_BASE_BOARD_MANUFACTURER;\r
2462typedef EFI_MISC_CHASSIS_MANUFACTURER_DATA EFI_MISC_CHASSIS_MANUFACTURER;\r
2463typedef EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR;\r
2464typedef EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA EFI_MISC_SYSTEM_SLOT_DESIGNATION;\r
2465typedef EFI_MISC_ONBOARD_DEVICE_DATA EFI_MISC_ONBOARD_DEVICE;\r
2466typedef EFI_MISC_PORTING_DEVICE_TYPE_DATA EFI_MISC_ONBOARD_DEVICE_TYPE_DATA;\r
2467typedef EFI_MISC_OEM_STRING_DATA EFI_MISC_OEM_STRING;\r
2468typedef EFI_MISC_SYSTEM_OPTION_STRING_DATA EFI_MISC_SYSTEM_OPTION_STRING;\r
2469typedef EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES;\r
2470typedef EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA EFI_MISC_SYSTEM_LANGUAGE_STRING;\r
2471typedef EFI_MISC_SYSTEM_EVENT_LOG_DATA EFI_MISC_SYSTEM_EVENT_LOG;\r
2472typedef EFI_MISC_BIS_ENTRY_POINT_DATA EFI_MISC_BIS_ENTRY_POINT;\r
2473typedef EFI_MISC_BOOT_INFORMATION_STATUS_DATA EFI_MISC_BOOT_INFORMATION_STATUS;\r
2474typedef EFI_MISC_SYSTEM_POWER_SUPPLY_DATA EFI_MISC_SYSTEM_POWER_SUPPLY;\r
2475typedef EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION;\r
765e516c 2476typedef EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA EFI_MISC_SCHEDULED_POWER_ON_MONTH;\r
2477typedef EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA EFI_MISC_VOLTAGE_PROBE_DESCRIPTION;\r
2478typedef EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA EFI_MISC_COOLING_DEVICE_TEMP_LINK;\r
2479typedef EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION;\r
2480typedef EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA \r
2481 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION;\r
2482typedef EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION;\r
2483typedef EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION;\r
79964ac8 2484\r
2485typedef union {\r
2486 EFI_MISC_LAST_PCI_BUS_DATA LastPciBus;\r
2487 EFI_MISC_BIOS_VENDOR_DATA MiscBiosVendor;\r
2488 EFI_MISC_SYSTEM_MANUFACTURER_DATA MiscSystemManufacturer;\r
2489 EFI_MISC_BASE_BOARD_MANUFACTURER_DATA MiscBaseBoardManufacturer;\r
2490 EFI_MISC_CHASSIS_MANUFACTURER_DATA MiscChassisManufacturer;\r
2491 EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA MiscPortInternalConnectorDesignator;\r
2492 EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA MiscSystemSlotDesignation;\r
2493 EFI_MISC_ONBOARD_DEVICE_DATA MiscOnboardDevice;\r
2494 EFI_MISC_OEM_STRING_DATA MiscOemString;\r
2495 EFI_MISC_SYSTEM_OPTION_STRING_DATA MiscOptionString;\r
2496 EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA NumberOfInstallableLanguages;\r
2497 EFI_MISC_SYSTEM_LANGUAGE_STRING_DATA MiscSystemLanguageString;\r
2498 EFI_MISC_SYSTEM_EVENT_LOG_DATA MiscSystemEventLog;\r
2499 EFI_MISC_GROUP_NAME_DATA MiscGroupNameData;\r
2500 EFI_MISC_GROUP_ITEM_SET_DATA MiscGroupItemSetData;\r
2501 EFI_MISC_PORTING_DEVICE_TYPE_DATA MiscPortingDeviceTypeData;\r
2502 EFI_MISC_RESET_CAPABILITIES_DATA MiscResetCapablilitiesData;\r
2503 EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA MiscHardwareSecuritySettingsData;\r
2504 EFI_MISC_SCHEDULED_POWER_ON_MONTH_DATA MiscScheduledPowerOnMonthData;\r
2505 EFI_MISC_VOLTAGE_PROBE_DESCRIPTION_DATA MiscVoltagePorbeDescriptionData;\r
2506 EFI_MISC_COOLING_DEVICE_TEMP_LINK_DATA MiscCoolingDeviceTempLinkData;\r
2507 EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION_DATA MiscTemperatureProbeDescriptionData;\r
2508 EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION_DATA MiscElectricalCurrentProbeDescriptionData;\r
2509 EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION_DATA\r
2510 MiscRemoteAccessManufacturerDescriptionData;\r
2511 EFI_MISC_BIS_ENTRY_POINT_DATA MiscBisEntryPoint;\r
2512 EFI_MISC_BOOT_INFORMATION_STATUS_DATA MiscBootInformationStatus;\r
2513 EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION_DATA MiscMangementDeviceDescriptionData;\r
2514 EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_DATA\r
2515 MiscmangementDeviceComponentDescriptionData;\r
2516 EFI_MISC_IPMI_INTERFACE_TYPE_DATA MiscIpmiInterfaceTypeData;\r
2517 EFI_MISC_SYSTEM_POWER_SUPPLY_DATA MiscPowerSupplyInfo;\r
2518 EFI_MISC_SMBIOS_STRUCT_ENCAPSULATION_DATA MiscSmbiosStructEncapsulation;\r
91399a51 2519 EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD MiscManagementDeviceThreshold;\r
79964ac8 2520} EFI_MISC_SUBCLASS_RECORDS;\r
2521\r
2522//\r
2523//\r
2524//\r
2525typedef struct {\r
9205b2d7 2526 EFI_SUBCLASS_TYPE1_HEADER Header;\r
2527 EFI_MISC_SUBCLASS_RECORDS Record;\r
79964ac8 2528} EFI_MISC_SUBCLASS_DRIVER_DATA;\r
2529\r
2530#pragma pack()\r
2531\r
2532//\r
2533// Sub Class Header type1\r
2534//\r
2535\r
2536#define EFI_SUBCLASS_INSTANCE_RESERVED 0\r
2537#define EFI_SUBCLASS_INSTANCE_NON_APPLICABLE 0xFFFF //16 bit\r
2538\r
2539#endif\r