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