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