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