]> git.proxmox.com Git - mirror_edk2.git/blame - MdePkg/Include/IndustryStandard/SmBios.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / IndustryStandard / SmBios.h
CommitLineData
a7ed1e2e 1/** @file\r
cfcca3c2 2 Industry Standard Definitions of SMBIOS Table Specification v3.2.0.\r
a7ed1e2e 3\r
0b545abb 4Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
713e4b00 5(C) Copyright 2015-2017 Hewlett Packard Enterprise Development LP<BR>\r
9344f092 6SPDX-License-Identifier: BSD-2-Clause-Patent\r
a7ed1e2e 7\r
a7ed1e2e 8**/\r
9\r
10#ifndef __SMBIOS_STANDARD_H__\r
11#define __SMBIOS_STANDARD_H__\r
98cb9ae8 12\r
f2d0889f 13///\r
14/// Reference SMBIOS 2.6, chapter 3.1.2.\r
15/// For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for\r
16/// use by this specification.\r
17///\r
18#define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00\r
19\r
7ddba202
SZ
20///\r
21/// Reference SMBIOS 2.7, chapter 6.1.2.\r
22/// The UEFI Platform Initialization Specification reserves handle number FFFEh for its\r
23/// EFI_SMBIOS_PROTOCOL.Add() function to mean "assign an unused handle number automatically."\r
24/// This number is not used for any other purpose by the SMBIOS specification.\r
25///\r
26#define SMBIOS_HANDLE_PI_RESERVED 0xFFFE\r
27\r
f2d0889f 28///\r
af2dc6a7 29/// Reference SMBIOS 2.6, chapter 3.1.3.\r
30/// Each text string is limited to 64 significant characters due to system MIF limitations.\r
7ddba202
SZ
31/// Reference SMBIOS 2.7, chapter 6.1.3.\r
32/// It will have no limit on the length of each individual text string.\r
f2d0889f 33///\r
34#define SMBIOS_STRING_MAX_LENGTH 64\r
35\r
7254d134
JY
36//\r
37// The length of the entire structure table (including all strings) must be reported\r
38// in the Structure Table Length field of the SMBIOS Structure Table Entry Point,\r
39// which is a WORD field limited to 65,535 bytes.\r
40//\r
41#define SMBIOS_TABLE_MAX_LENGTH 0xFFFF\r
42\r
43//\r
44// For SMBIOS 3.0, Structure table maximum size in Entry Point structure is DWORD field limited to 0xFFFFFFFF bytes.\r
45//\r
46#define SMBIOS_3_0_TABLE_MAX_LENGTH 0xFFFFFFFF\r
47\r
bb7051eb
MH
48//\r
49// SMBIOS type macros which is according to SMBIOS 2.7 specification.\r
50//\r
51#define SMBIOS_TYPE_BIOS_INFORMATION 0\r
52#define SMBIOS_TYPE_SYSTEM_INFORMATION 1\r
53#define SMBIOS_TYPE_BASEBOARD_INFORMATION 2\r
54#define SMBIOS_TYPE_SYSTEM_ENCLOSURE 3\r
55#define SMBIOS_TYPE_PROCESSOR_INFORMATION 4\r
56#define SMBIOS_TYPE_MEMORY_CONTROLLER_INFORMATION 5\r
57#define SMBIOS_TYPE_MEMORY_MODULE_INFORMATON 6\r
58#define SMBIOS_TYPE_CACHE_INFORMATION 7\r
59#define SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION 8\r
60#define SMBIOS_TYPE_SYSTEM_SLOTS 9\r
61#define SMBIOS_TYPE_ONBOARD_DEVICE_INFORMATION 10\r
62#define SMBIOS_TYPE_OEM_STRINGS 11\r
63#define SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS 12\r
64#define SMBIOS_TYPE_BIOS_LANGUAGE_INFORMATION 13\r
65#define SMBIOS_TYPE_GROUP_ASSOCIATIONS 14\r
66#define SMBIOS_TYPE_SYSTEM_EVENT_LOG 15\r
67#define SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY 16\r
68#define SMBIOS_TYPE_MEMORY_DEVICE 17\r
69#define SMBIOS_TYPE_32BIT_MEMORY_ERROR_INFORMATION 18\r
70#define SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS 19\r
71#define SMBIOS_TYPE_MEMORY_DEVICE_MAPPED_ADDRESS 20\r
72#define SMBIOS_TYPE_BUILT_IN_POINTING_DEVICE 21\r
73#define SMBIOS_TYPE_PORTABLE_BATTERY 22\r
74#define SMBIOS_TYPE_SYSTEM_RESET 23\r
75#define SMBIOS_TYPE_HARDWARE_SECURITY 24\r
76#define SMBIOS_TYPE_SYSTEM_POWER_CONTROLS 25\r
77#define SMBIOS_TYPE_VOLTAGE_PROBE 26\r
78#define SMBIOS_TYPE_COOLING_DEVICE 27\r
79#define SMBIOS_TYPE_TEMPERATURE_PROBE 28\r
80#define SMBIOS_TYPE_ELECTRICAL_CURRENT_PROBE 29\r
81#define SMBIOS_TYPE_OUT_OF_BAND_REMOTE_ACCESS 30\r
82#define SMBIOS_TYPE_BOOT_INTEGRITY_SERVICE 31\r
83#define SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION 32\r
84#define SMBIOS_TYPE_64BIT_MEMORY_ERROR_INFORMATION 33\r
85#define SMBIOS_TYPE_MANAGEMENT_DEVICE 34\r
86#define SMBIOS_TYPE_MANAGEMENT_DEVICE_COMPONENT 35\r
87#define SMBIOS_TYPE_MANAGEMENT_DEVICE_THRESHOLD_DATA 36\r
88#define SMBIOS_TYPE_MEMORY_CHANNEL 37\r
89#define SMBIOS_TYPE_IPMI_DEVICE_INFORMATION 38\r
90#define SMBIOS_TYPE_SYSTEM_POWER_SUPPLY 39\r
91#define SMBIOS_TYPE_ADDITIONAL_INFORMATION 40\r
92#define SMBIOS_TYPE_ONBOARD_DEVICES_EXTENDED_INFORMATION 41\r
93#define SMBIOS_TYPE_MANAGEMENT_CONTROLLER_HOST_INTERFACE 42\r
713e4b00 94#define SMBIOS_TYPE_TPM_DEVICE 43\r
bb7051eb 95\r
f2d0889f 96///\r
97/// Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.\r
9095d37b 98/// Upper-level software that interprets the SMBIOS structure-table should bypass an\r
f2d0889f 99/// Inactive structure just like a structure type that the software does not recognize.\r
100///\r
9095d37b 101#define SMBIOS_TYPE_INACTIVE 0x007E\r
f2d0889f 102\r
103///\r
104/// End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.\r
105/// The end-of-table indicator is used in the last physical structure in a table\r
106///\r
107#define SMBIOS_TYPE_END_OF_TABLE 0x007F\r
108\r
bb7051eb
MH
109#define SMBIOS_OEM_BEGIN 128\r
110#define SMBIOS_OEM_END 255\r
111\r
112///\r
113/// Types 0 through 127 (7Fh) are reserved for and defined by this\r
9095d37b 114/// specification. Types 128 through 256 (80h to FFh) are available for system- and OEM-specific information.\r
bb7051eb
MH
115///\r
116typedef UINT8 SMBIOS_TYPE;\r
117\r
118///\r
119/// Specifies the structure's handle, a unique 16-bit number in the range 0 to 0FFFEh (for version\r
120/// 2.0) or 0 to 0FEFFh (for version 2.1 and later). The handle can be used with the Get SMBIOS\r
121/// Structure function to retrieve a specific structure; the handle numbers are not required to be\r
122/// contiguous. For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for\r
123/// use by this specification.\r
124/// If the system configuration changes, a previously assigned handle might no longer exist.\r
125/// However once a handle has been assigned by the BIOS, the BIOS cannot re-assign that handle\r
126/// number to another structure.\r
127///\r
128typedef UINT16 SMBIOS_HANDLE;\r
129\r
4135253b 130///\r
af2dc6a7 131/// Smbios Table Entry Point Structure.\r
4135253b 132///\r
766f4bc1 133#pragma pack(1)\r
a7ed1e2e 134typedef struct {\r
135 UINT8 AnchorString[4];\r
136 UINT8 EntryPointStructureChecksum;\r
137 UINT8 EntryPointLength;\r
138 UINT8 MajorVersion;\r
139 UINT8 MinorVersion;\r
140 UINT16 MaxStructureSize;\r
141 UINT8 EntryPointRevision;\r
142 UINT8 FormattedArea[5];\r
143 UINT8 IntermediateAnchorString[5];\r
144 UINT8 IntermediateChecksum;\r
145 UINT16 TableLength;\r
146 UINT32 TableAddress;\r
147 UINT16 NumberOfSmbiosStructures;\r
148 UINT8 SmbiosBcdRevision;\r
149} SMBIOS_TABLE_ENTRY_POINT;\r
150\r
6cd35c62
EL
151typedef struct {\r
152 UINT8 AnchorString[5];\r
153 UINT8 EntryPointStructureChecksum;\r
154 UINT8 EntryPointLength;\r
155 UINT8 MajorVersion;\r
156 UINT8 MinorVersion;\r
157 UINT8 DocRev;\r
158 UINT8 EntryPointRevision;\r
159 UINT8 Reserved;\r
160 UINT32 TableMaximumSize;\r
161 UINT64 TableAddress;\r
162} SMBIOS_TABLE_3_0_ENTRY_POINT;\r
163\r
ec8432e5 164///\r
af2dc6a7 165/// The Smbios structure header.\r
ec8432e5 166///\r
a7ed1e2e 167typedef struct {\r
bb7051eb
MH
168 SMBIOS_TYPE Type;\r
169 UINT8 Length;\r
170 SMBIOS_HANDLE Handle;\r
a7ed1e2e 171} SMBIOS_STRUCTURE;\r
172\r
bf7ea009 173///\r
bb7051eb
MH
174/// Text strings associated with a given SMBIOS structure are returned in the dmiStrucBuffer, appended directly after\r
175/// the formatted portion of the structure. This method of returning string information eliminates the need for\r
176/// application software to deal with pointers embedded in the SMBIOS structure. Each string is terminated with a null\r
177/// (00h) BYTE and the set of strings is terminated with an additional null (00h) BYTE. When the formatted portion of\r
178/// a SMBIOS structure references a string, it does so by specifying a non-zero string number within the structure's\r
179/// string-set. For example, if a string field contains 02h, it references the second string following the formatted portion\r
180/// of the SMBIOS structure. If a string field references no string, a null (0) is placed in that string field. If the\r
181/// formatted portion of the structure contains string-reference fields and all the string fields are set to 0 (no string\r
182/// references), the formatted section of the structure is followed by two null (00h) BYTES.\r
bf7ea009 183///\r
61ce5861 184typedef UINT8 SMBIOS_TABLE_STRING;\r
185\r
98cb9ae8 186///\r
7ddba202
SZ
187/// BIOS Characteristics\r
188/// Defines which functions the BIOS supports. PCI, PCMCIA, Flash, etc.\r
98cb9ae8 189///\r
190typedef struct {\r
af2dc6a7 191 UINT32 Reserved :2; ///< Bits 0-1.\r
7ddba202
SZ
192 UINT32 Unknown :1;\r
193 UINT32 BiosCharacteristicsNotSupported :1;\r
194 UINT32 IsaIsSupported :1;\r
98cb9ae8 195 UINT32 McaIsSupported :1;\r
196 UINT32 EisaIsSupported :1;\r
197 UINT32 PciIsSupported :1;\r
198 UINT32 PcmciaIsSupported :1;\r
199 UINT32 PlugAndPlayIsSupported :1;\r
200 UINT32 ApmIsSupported :1;\r
201 UINT32 BiosIsUpgradable :1;\r
202 UINT32 BiosShadowingAllowed :1;\r
203 UINT32 VlVesaIsSupported :1;\r
204 UINT32 EscdSupportIsAvailable :1;\r
205 UINT32 BootFromCdIsSupported :1;\r
206 UINT32 SelectableBootIsSupported :1;\r
207 UINT32 RomBiosIsSocketed :1;\r
208 UINT32 BootFromPcmciaIsSupported :1;\r
209 UINT32 EDDSpecificationIsSupported :1;\r
210 UINT32 JapaneseNecFloppyIsSupported :1;\r
211 UINT32 JapaneseToshibaFloppyIsSupported :1;\r
212 UINT32 Floppy525_360IsSupported :1;\r
213 UINT32 Floppy525_12IsSupported :1;\r
214 UINT32 Floppy35_720IsSupported :1;\r
215 UINT32 Floppy35_288IsSupported :1;\r
216 UINT32 PrintScreenIsSupported :1;\r
217 UINT32 Keyboard8042IsSupported :1;\r
218 UINT32 SerialIsSupported :1;\r
219 UINT32 PrinterIsSupported :1;\r
220 UINT32 CgaMonoIsSupported :1;\r
221 UINT32 NecPc98 :1;\r
9095d37b
LG
222 UINT32 ReservedForVendor :32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor\r
223 ///< and bits 48-63 reserved for System Vendor.\r
98cb9ae8 224} MISC_BIOS_CHARACTERISTICS;\r
225\r
226///\r
7ddba202
SZ
227/// BIOS Characteristics Extension Byte 1.\r
228/// This information, available for SMBIOS version 2.1 and later, appears at offset 12h\r
229/// within the BIOS Information structure.\r
98cb9ae8 230///\r
231typedef struct {\r
232 UINT8 AcpiIsSupported :1;\r
7ddba202
SZ
233 UINT8 UsbLegacyIsSupported :1;\r
234 UINT8 AgpIsSupported :1;\r
119c1688 235 UINT8 I2OBootIsSupported :1;\r
98cb9ae8 236 UINT8 Ls120BootIsSupported :1;\r
237 UINT8 AtapiZipDriveBootIsSupported :1;\r
238 UINT8 Boot1394IsSupported :1;\r
239 UINT8 SmartBatteryIsSupported :1;\r
240} MBCE_BIOS_RESERVED;\r
241\r
242///\r
af2dc6a7 243/// BIOS Characteristics Extension Byte 2.\r
7ddba202 244/// This information, available for SMBIOS version 2.3 and later, appears at offset 13h\r
98cb9ae8 245/// within the BIOS Information structure.\r
246///\r
247typedef struct {\r
248 UINT8 BiosBootSpecIsSupported :1;\r
7ddba202
SZ
249 UINT8 FunctionKeyNetworkBootIsSupported :1;\r
250 UINT8 TargetContentDistributionEnabled :1;\r
251 UINT8 UefiSpecificationSupported :1;\r
252 UINT8 VirtualMachineSupported :1;\r
253 UINT8 ExtensionByte2Reserved :3;\r
98cb9ae8 254} MBCE_SYSTEM_RESERVED;\r
255\r
256///\r
af2dc6a7 257/// BIOS Characteristics Extension Bytes.\r
98cb9ae8 258///\r
259typedef struct {\r
260 MBCE_BIOS_RESERVED BiosReserved;\r
261 MBCE_SYSTEM_RESERVED SystemReserved;\r
98cb9ae8 262} MISC_BIOS_CHARACTERISTICS_EXTENSION;\r
263\r
ff6a1f32
SZ
264///\r
265/// Extended BIOS ROM size.\r
266///\r
267typedef struct {\r
268 UINT16 Size :14;\r
269 UINT16 Unit :2;\r
270} EXTENDED_BIOS_ROM_SIZE;\r
271\r
4135253b 272///\r
af2dc6a7 273/// BIOS Information (Type 0).\r
4135253b 274///\r
61ce5861 275typedef struct {\r
98cb9ae8 276 SMBIOS_STRUCTURE Hdr;\r
277 SMBIOS_TABLE_STRING Vendor;\r
278 SMBIOS_TABLE_STRING BiosVersion;\r
279 UINT16 BiosSegment;\r
280 SMBIOS_TABLE_STRING BiosReleaseDate;\r
281 UINT8 BiosSize;\r
282 MISC_BIOS_CHARACTERISTICS BiosCharacteristics;\r
283 UINT8 BIOSCharacteristicsExtensionBytes[2];\r
284 UINT8 SystemBiosMajorRelease;\r
285 UINT8 SystemBiosMinorRelease;\r
286 UINT8 EmbeddedControllerFirmwareMajorRelease;\r
287 UINT8 EmbeddedControllerFirmwareMinorRelease;\r
ff6a1f32
SZ
288 //\r
289 // Add for smbios 3.1.0\r
290 //\r
291 EXTENDED_BIOS_ROM_SIZE ExtendedBiosSize;\r
61ce5861 292} SMBIOS_TABLE_TYPE0;\r
293\r
98cb9ae8 294///\r
af2dc6a7 295/// System Wake-up Type.\r
98cb9ae8 296///\r
9095d37b 297typedef enum {\r
98cb9ae8 298 SystemWakeupTypeReserved = 0x00,\r
299 SystemWakeupTypeOther = 0x01,\r
300 SystemWakeupTypeUnknown = 0x02,\r
301 SystemWakeupTypeApmTimer = 0x03,\r
302 SystemWakeupTypeModemRing = 0x04,\r
303 SystemWakeupTypeLanRemote = 0x05,\r
304 SystemWakeupTypePowerSwitch = 0x06,\r
305 SystemWakeupTypePciPme = 0x07,\r
306 SystemWakeupTypeAcPowerRestored = 0x08\r
307} MISC_SYSTEM_WAKEUP_TYPE;\r
308\r
4135253b 309///\r
af2dc6a7 310/// System Information (Type 1).\r
9095d37b
LG
311///\r
312/// The information in this structure defines attributes of the overall system and is\r
98cb9ae8 313/// intended to be associated with the Component ID group of the system's MIF.\r
9095d37b 314/// An SMBIOS implementation is associated with a single system instance and contains\r
98cb9ae8 315/// one and only one System Information (Type 1) structure.\r
4135253b 316///\r
61ce5861 317typedef struct {\r
98cb9ae8 318 SMBIOS_STRUCTURE Hdr;\r
319 SMBIOS_TABLE_STRING Manufacturer;\r
320 SMBIOS_TABLE_STRING ProductName;\r
321 SMBIOS_TABLE_STRING Version;\r
322 SMBIOS_TABLE_STRING SerialNumber;\r
323 GUID Uuid;\r
af2dc6a7 324 UINT8 WakeUpType; ///< The enumeration value from MISC_SYSTEM_WAKEUP_TYPE.\r
98cb9ae8 325 SMBIOS_TABLE_STRING SKUNumber;\r
326 SMBIOS_TABLE_STRING Family;\r
61ce5861 327} SMBIOS_TABLE_TYPE1;\r
328\r
98cb9ae8 329///\r
9095d37b 330/// Base Board - Feature Flags.\r
98cb9ae8 331///\r
332typedef struct {\r
333 UINT8 Motherboard :1;\r
334 UINT8 RequiresDaughterCard :1;\r
335 UINT8 Removable :1;\r
336 UINT8 Replaceable :1;\r
337 UINT8 HotSwappable :1;\r
338 UINT8 Reserved :3;\r
339} BASE_BOARD_FEATURE_FLAGS;\r
340\r
341///\r
af2dc6a7 342/// Base Board - Board Type.\r
98cb9ae8 343///\r
9095d37b 344typedef enum {\r
98cb9ae8 345 BaseBoardTypeUnknown = 0x1,\r
346 BaseBoardTypeOther = 0x2,\r
347 BaseBoardTypeServerBlade = 0x3,\r
348 BaseBoardTypeConnectivitySwitch = 0x4,\r
349 BaseBoardTypeSystemManagementModule = 0x5,\r
350 BaseBoardTypeProcessorModule = 0x6,\r
351 BaseBoardTypeIOModule = 0x7,\r
352 BaseBoardTypeMemoryModule = 0x8,\r
353 BaseBoardTypeDaughterBoard = 0x9,\r
354 BaseBoardTypeMotherBoard = 0xA,\r
355 BaseBoardTypeProcessorMemoryModule = 0xB,\r
356 BaseBoardTypeProcessorIOModule = 0xC,\r
357 BaseBoardTypeInterconnectBoard = 0xD\r
358} BASE_BOARD_TYPE;\r
359\r
4135253b 360///\r
af2dc6a7 361/// Base Board (or Module) Information (Type 2).\r
4135253b 362///\r
9095d37b 363/// The information in this structure defines attributes of a system baseboard -\r
98cb9ae8 364/// for example a motherboard, planar, or server blade or other standard system module.\r
365///\r
61ce5861 366typedef struct {\r
98cb9ae8 367 SMBIOS_STRUCTURE Hdr;\r
368 SMBIOS_TABLE_STRING Manufacturer;\r
369 SMBIOS_TABLE_STRING ProductName;\r
370 SMBIOS_TABLE_STRING Version;\r
371 SMBIOS_TABLE_STRING SerialNumber;\r
372 SMBIOS_TABLE_STRING AssetTag;\r
373 BASE_BOARD_FEATURE_FLAGS FeatureFlag;\r
374 SMBIOS_TABLE_STRING LocationInChassis;\r
375 UINT16 ChassisHandle;\r
af2dc6a7 376 UINT8 BoardType; ///< The enumeration value from BASE_BOARD_TYPE.\r
98cb9ae8 377 UINT8 NumberOfContainedObjectHandles;\r
378 UINT16 ContainedObjectHandles[1];\r
61ce5861 379} SMBIOS_TABLE_TYPE2;\r
380\r
98cb9ae8 381///\r
382/// System Enclosure or Chassis Types\r
383///\r
9095d37b 384typedef enum {\r
98cb9ae8 385 MiscChassisTypeOther = 0x01,\r
386 MiscChassisTypeUnknown = 0x02,\r
387 MiscChassisTypeDeskTop = 0x03,\r
388 MiscChassisTypeLowProfileDesktop = 0x04,\r
389 MiscChassisTypePizzaBox = 0x05,\r
390 MiscChassisTypeMiniTower = 0x06,\r
391 MiscChassisTypeTower = 0x07,\r
392 MiscChassisTypePortable = 0x08,\r
393 MiscChassisTypeLapTop = 0x09,\r
394 MiscChassisTypeNotebook = 0x0A,\r
395 MiscChassisTypeHandHeld = 0x0B,\r
396 MiscChassisTypeDockingStation = 0x0C,\r
397 MiscChassisTypeAllInOne = 0x0D,\r
398 MiscChassisTypeSubNotebook = 0x0E,\r
399 MiscChassisTypeSpaceSaving = 0x0F,\r
400 MiscChassisTypeLunchBox = 0x10,\r
401 MiscChassisTypeMainServerChassis = 0x11,\r
402 MiscChassisTypeExpansionChassis = 0x12,\r
403 MiscChassisTypeSubChassis = 0x13,\r
404 MiscChassisTypeBusExpansionChassis = 0x14,\r
405 MiscChassisTypePeripheralChassis = 0x15,\r
406 MiscChassisTypeRaidChassis = 0x16,\r
407 MiscChassisTypeRackMountChassis = 0x17,\r
408 MiscChassisTypeSealedCasePc = 0x18,\r
409 MiscChassisMultiSystemChassis = 0x19,\r
410 MiscChassisCompactPCI = 0x1A,\r
411 MiscChassisAdvancedTCA = 0x1B,\r
412 MiscChassisBlade = 0x1C,\r
6cd35c62
EL
413 MiscChassisBladeEnclosure = 0x1D,\r
414 MiscChassisTablet = 0x1E,\r
415 MiscChassisConvertible = 0x1F,\r
ff6a1f32
SZ
416 MiscChassisDetachable = 0x20,\r
417 MiscChassisIoTGateway = 0x21,\r
418 MiscChassisEmbeddedPc = 0x22,\r
419 MiscChassisMiniPc = 0x23,\r
420 MiscChassisStickPc = 0x24\r
98cb9ae8 421} MISC_CHASSIS_TYPE;\r
422\r
423///\r
af2dc6a7 424/// System Enclosure or Chassis States .\r
98cb9ae8 425///\r
9095d37b 426typedef enum {\r
98cb9ae8 427 ChassisStateOther = 0x01,\r
428 ChassisStateUnknown = 0x02,\r
429 ChassisStateSafe = 0x03,\r
430 ChassisStateWarning = 0x04,\r
431 ChassisStateCritical = 0x05,\r
432 ChassisStateNonRecoverable = 0x06\r
433} MISC_CHASSIS_STATE;\r
434\r
435///\r
af2dc6a7 436/// System Enclosure or Chassis Security Status.\r
98cb9ae8 437///\r
9095d37b 438typedef enum {\r
98cb9ae8 439 ChassisSecurityStatusOther = 0x01,\r
440 ChassisSecurityStatusUnknown = 0x02,\r
441 ChassisSecurityStatusNone = 0x03,\r
442 ChassisSecurityStatusExternalInterfaceLockedOut = 0x04,\r
443 ChassisSecurityStatusExternalInterfaceLockedEnabled = 0x05\r
444} MISC_CHASSIS_SECURITY_STATE;\r
445\r
bf7ea009 446///\r
447/// Contained Element record\r
448///\r
61ce5861 449typedef struct {\r
450 UINT8 ContainedElementType;\r
451 UINT8 ContainedElementMinimum;\r
452 UINT8 ContainedElementMaximum;\r
453} CONTAINED_ELEMENT;\r
454\r
98cb9ae8 455\r
4135253b 456///\r
af2dc6a7 457/// System Enclosure or Chassis (Type 3).\r
4135253b 458///\r
9095d37b
LG
459/// The information in this structure defines attributes of the system's mechanical enclosure(s).\r
460/// For example, if a system included a separate enclosure for its peripheral devices,\r
98cb9ae8 461/// two structures would be returned: one for the main, system enclosure and the second for\r
462/// the peripheral device enclosure. The additions to this structure in v2.1 of this specification\r
9095d37b 463/// support the population of the CIM_Chassis class.\r
98cb9ae8 464///\r
61ce5861 465typedef struct {\r
98cb9ae8 466 SMBIOS_STRUCTURE Hdr;\r
467 SMBIOS_TABLE_STRING Manufacturer;\r
468 UINT8 Type;\r
469 SMBIOS_TABLE_STRING Version;\r
470 SMBIOS_TABLE_STRING SerialNumber;\r
471 SMBIOS_TABLE_STRING AssetTag;\r
af2dc6a7 472 UINT8 BootupState; ///< The enumeration value from MISC_CHASSIS_STATE.\r
473 UINT8 PowerSupplyState; ///< The enumeration value from MISC_CHASSIS_STATE.\r
474 UINT8 ThermalState; ///< The enumeration value from MISC_CHASSIS_STATE.\r
475 UINT8 SecurityStatus; ///< The enumeration value from MISC_CHASSIS_SECURITY_STATE.\r
98cb9ae8 476 UINT8 OemDefined[4];\r
477 UINT8 Height;\r
478 UINT8 NumberofPowerCords;\r
479 UINT8 ContainedElementCount;\r
480 UINT8 ContainedElementRecordLength;\r
f15908aa
CP
481 //\r
482 // Can have 0 to (ContainedElementCount * ContainedElementRecordLength) contained elements\r
483 //\r
98cb9ae8 484 CONTAINED_ELEMENT ContainedElements[1];\r
f15908aa
CP
485 //\r
486 // Add for smbios 2.7\r
487 //\r
488 // Since ContainedElements has a variable number of entries, must not define SKUNumber in\r
489 // the structure. Need to reference it by starting at offset 0x15 and adding\r
490 // (ContainedElementCount * ContainedElementRecordLength) bytes.\r
491 //\r
492 // SMBIOS_TABLE_STRING SKUNumber;\r
61ce5861 493} SMBIOS_TABLE_TYPE3;\r
494\r
98cb9ae8 495///\r
af2dc6a7 496/// Processor Information - Processor Type.\r
98cb9ae8 497///\r
498typedef enum {\r
499 ProcessorOther = 0x01,\r
500 ProcessorUnknown = 0x02,\r
501 CentralProcessor = 0x03,\r
502 MathProcessor = 0x04,\r
503 DspProcessor = 0x05,\r
504 VideoProcessor = 0x06\r
505} PROCESSOR_TYPE_DATA;\r
506\r
507///\r
af2dc6a7 508/// Processor Information - Processor Family.\r
98cb9ae8 509///\r
510typedef enum {\r
9095d37b 511 ProcessorFamilyOther = 0x01,\r
98cb9ae8 512 ProcessorFamilyUnknown = 0x02,\r
9095d37b 513 ProcessorFamily8086 = 0x03,\r
98cb9ae8 514 ProcessorFamily80286 = 0x04,\r
9095d37b 515 ProcessorFamilyIntel386 = 0x05,\r
98cb9ae8 516 ProcessorFamilyIntel486 = 0x06,\r
517 ProcessorFamily8087 = 0x07,\r
518 ProcessorFamily80287 = 0x08,\r
9095d37b 519 ProcessorFamily80387 = 0x09,\r
98cb9ae8 520 ProcessorFamily80487 = 0x0A,\r
9095d37b 521 ProcessorFamilyPentium = 0x0B,\r
98cb9ae8 522 ProcessorFamilyPentiumPro = 0x0C,\r
523 ProcessorFamilyPentiumII = 0x0D,\r
524 ProcessorFamilyPentiumMMX = 0x0E,\r
525 ProcessorFamilyCeleron = 0x0F,\r
526 ProcessorFamilyPentiumIIXeon = 0x10,\r
9095d37b 527 ProcessorFamilyPentiumIII = 0x11,\r
98cb9ae8 528 ProcessorFamilyM1 = 0x12,\r
529 ProcessorFamilyM2 = 0x13,\r
119c1688
SZ
530 ProcessorFamilyIntelCeleronM = 0x14,\r
531 ProcessorFamilyIntelPentium4Ht = 0x15,\r
98cb9ae8 532 ProcessorFamilyAmdDuron = 0x18,\r
9095d37b 533 ProcessorFamilyK5 = 0x19,\r
98cb9ae8 534 ProcessorFamilyK6 = 0x1A,\r
535 ProcessorFamilyK6_2 = 0x1B,\r
536 ProcessorFamilyK6_3 = 0x1C,\r
537 ProcessorFamilyAmdAthlon = 0x1D,\r
538 ProcessorFamilyAmd29000 = 0x1E,\r
539 ProcessorFamilyK6_2Plus = 0x1F,\r
540 ProcessorFamilyPowerPC = 0x20,\r
541 ProcessorFamilyPowerPC601 = 0x21,\r
542 ProcessorFamilyPowerPC603 = 0x22,\r
543 ProcessorFamilyPowerPC603Plus = 0x23,\r
544 ProcessorFamilyPowerPC604 = 0x24,\r
545 ProcessorFamilyPowerPC620 = 0x25,\r
546 ProcessorFamilyPowerPCx704 = 0x26,\r
547 ProcessorFamilyPowerPC750 = 0x27,\r
3507ab19 548 ProcessorFamilyIntelCoreDuo = 0x28,\r
549 ProcessorFamilyIntelCoreDuoMobile = 0x29,\r
550 ProcessorFamilyIntelCoreSoloMobile = 0x2A,\r
551 ProcessorFamilyIntelAtom = 0x2B,\r
6cd35c62 552 ProcessorFamilyIntelCoreM = 0x2C,\r
ff6a1f32
SZ
553 ProcessorFamilyIntelCorem3 = 0x2D,\r
554 ProcessorFamilyIntelCorem5 = 0x2E,\r
555 ProcessorFamilyIntelCorem7 = 0x2F,\r
4a228334 556 ProcessorFamilyAlpha = 0x30,\r
98cb9ae8 557 ProcessorFamilyAlpha21064 = 0x31,\r
558 ProcessorFamilyAlpha21066 = 0x32,\r
559 ProcessorFamilyAlpha21164 = 0x33,\r
560 ProcessorFamilyAlpha21164PC = 0x34,\r
561 ProcessorFamilyAlpha21164a = 0x35,\r
562 ProcessorFamilyAlpha21264 = 0x36,\r
563 ProcessorFamilyAlpha21364 = 0x37,\r
7ddba202
SZ
564 ProcessorFamilyAmdTurionIIUltraDualCoreMobileM = 0x38,\r
565 ProcessorFamilyAmdTurionIIDualCoreMobileM = 0x39,\r
566 ProcessorFamilyAmdAthlonIIDualCoreM = 0x3A,\r
567 ProcessorFamilyAmdOpteron6100Series = 0x3B,\r
568 ProcessorFamilyAmdOpteron4100Series = 0x3C,\r
569 ProcessorFamilyAmdOpteron6200Series = 0x3D,\r
570 ProcessorFamilyAmdOpteron4200Series = 0x3E,\r
4a228334 571 ProcessorFamilyAmdFxSeries = 0x3F,\r
98cb9ae8 572 ProcessorFamilyMips = 0x40,\r
573 ProcessorFamilyMIPSR4000 = 0x41,\r
574 ProcessorFamilyMIPSR4200 = 0x42,\r
575 ProcessorFamilyMIPSR4400 = 0x43,\r
576 ProcessorFamilyMIPSR4600 = 0x44,\r
577 ProcessorFamilyMIPSR10000 = 0x45,\r
7ddba202
SZ
578 ProcessorFamilyAmdCSeries = 0x46,\r
579 ProcessorFamilyAmdESeries = 0x47,\r
4a228334 580 ProcessorFamilyAmdASeries = 0x48, ///< SMBIOS spec 2.8.0 updated the name\r
7ddba202 581 ProcessorFamilyAmdGSeries = 0x49,\r
4a228334
EL
582 ProcessorFamilyAmdZSeries = 0x4A,\r
583 ProcessorFamilyAmdRSeries = 0x4B,\r
584 ProcessorFamilyAmdOpteron4300 = 0x4C,\r
585 ProcessorFamilyAmdOpteron6300 = 0x4D,\r
586 ProcessorFamilyAmdOpteron3300 = 0x4E,\r
587 ProcessorFamilyAmdFireProSeries = 0x4F,\r
98cb9ae8 588 ProcessorFamilySparc = 0x50,\r
589 ProcessorFamilySuperSparc = 0x51,\r
590 ProcessorFamilymicroSparcII = 0x52,\r
591 ProcessorFamilymicroSparcIIep = 0x53,\r
592 ProcessorFamilyUltraSparc = 0x54,\r
593 ProcessorFamilyUltraSparcII = 0x55,\r
4a228334 594 ProcessorFamilyUltraSparcIii = 0x56,\r
98cb9ae8 595 ProcessorFamilyUltraSparcIII = 0x57,\r
596 ProcessorFamilyUltraSparcIIIi = 0x58,\r
597 ProcessorFamily68040 = 0x60,\r
598 ProcessorFamily68xxx = 0x61,\r
599 ProcessorFamily68000 = 0x62,\r
600 ProcessorFamily68010 = 0x63,\r
601 ProcessorFamily68020 = 0x64,\r
602 ProcessorFamily68030 = 0x65,\r
6cd35c62
EL
603 ProcessorFamilyAmdAthlonX4QuadCore = 0x66,\r
604 ProcessorFamilyAmdOpteronX1000Series = 0x67,\r
605 ProcessorFamilyAmdOpteronX2000Series = 0x68,\r
ff6a1f32
SZ
606 ProcessorFamilyAmdOpteronASeries = 0x69,\r
607 ProcessorFamilyAmdOpteronX3000Series = 0x6A,\r
043026ac 608 ProcessorFamilyAmdZen = 0x6B,\r
98cb9ae8 609 ProcessorFamilyHobbit = 0x70,\r
610 ProcessorFamilyCrusoeTM5000 = 0x78,\r
611 ProcessorFamilyCrusoeTM3000 = 0x79,\r
612 ProcessorFamilyEfficeonTM8000 = 0x7A,\r
613 ProcessorFamilyWeitek = 0x80,\r
614 ProcessorFamilyItanium = 0x82,\r
615 ProcessorFamilyAmdAthlon64 = 0x83,\r
616 ProcessorFamilyAmdOpteron = 0x84,\r
617 ProcessorFamilyAmdSempron = 0x85,\r
618 ProcessorFamilyAmdTurion64Mobile = 0x86,\r
619 ProcessorFamilyDualCoreAmdOpteron = 0x87,\r
620 ProcessorFamilyAmdAthlon64X2DualCore = 0x88,\r
621 ProcessorFamilyAmdTurion64X2Mobile = 0x89,\r
3507ab19 622 ProcessorFamilyQuadCoreAmdOpteron = 0x8A,\r
623 ProcessorFamilyThirdGenerationAmdOpteron = 0x8B,\r
624 ProcessorFamilyAmdPhenomFxQuadCore = 0x8C,\r
625 ProcessorFamilyAmdPhenomX4QuadCore = 0x8D,\r
626 ProcessorFamilyAmdPhenomX2DualCore = 0x8E,\r
9095d37b 627 ProcessorFamilyAmdAthlonX2DualCore = 0x8F,\r
98cb9ae8 628 ProcessorFamilyPARISC = 0x90,\r
629 ProcessorFamilyPaRisc8500 = 0x91,\r
630 ProcessorFamilyPaRisc8000 = 0x92,\r
631 ProcessorFamilyPaRisc7300LC = 0x93,\r
632 ProcessorFamilyPaRisc7200 = 0x94,\r
633 ProcessorFamilyPaRisc7100LC = 0x95,\r
634 ProcessorFamilyPaRisc7100 = 0x96,\r
635 ProcessorFamilyV30 = 0xA0,\r
3507ab19 636 ProcessorFamilyQuadCoreIntelXeon3200Series = 0xA1,\r
637 ProcessorFamilyDualCoreIntelXeon3000Series = 0xA2,\r
638 ProcessorFamilyQuadCoreIntelXeon5300Series = 0xA3,\r
639 ProcessorFamilyDualCoreIntelXeon5100Series = 0xA4,\r
640 ProcessorFamilyDualCoreIntelXeon5000Series = 0xA5,\r
641 ProcessorFamilyDualCoreIntelXeonLV = 0xA6,\r
642 ProcessorFamilyDualCoreIntelXeonULV = 0xA7,\r
643 ProcessorFamilyDualCoreIntelXeon7100Series = 0xA8,\r
644 ProcessorFamilyQuadCoreIntelXeon5400Series = 0xA9,\r
645 ProcessorFamilyQuadCoreIntelXeon = 0xAA,\r
646 ProcessorFamilyDualCoreIntelXeon5200Series = 0xAB,\r
647 ProcessorFamilyDualCoreIntelXeon7200Series = 0xAC,\r
648 ProcessorFamilyQuadCoreIntelXeon7300Series = 0xAD,\r
649 ProcessorFamilyQuadCoreIntelXeon7400Series = 0xAE,\r
650 ProcessorFamilyMultiCoreIntelXeon7400Series = 0xAF,\r
98cb9ae8 651 ProcessorFamilyPentiumIIIXeon = 0xB0,\r
652 ProcessorFamilyPentiumIIISpeedStep = 0xB1,\r
653 ProcessorFamilyPentium4 = 0xB2,\r
654 ProcessorFamilyIntelXeon = 0xB3,\r
655 ProcessorFamilyAS400 = 0xB4,\r
656 ProcessorFamilyIntelXeonMP = 0xB5,\r
657 ProcessorFamilyAMDAthlonXP = 0xB6,\r
658 ProcessorFamilyAMDAthlonMP = 0xB7,\r
659 ProcessorFamilyIntelItanium2 = 0xB8,\r
660 ProcessorFamilyIntelPentiumM = 0xB9,\r
661 ProcessorFamilyIntelCeleronD = 0xBA,\r
662 ProcessorFamilyIntelPentiumD = 0xBB,\r
663 ProcessorFamilyIntelPentiumEx = 0xBC,\r
4a228334 664 ProcessorFamilyIntelCoreSolo = 0xBD, ///< SMBIOS spec 2.6 updated this value\r
98cb9ae8 665 ProcessorFamilyReserved = 0xBE,\r
666 ProcessorFamilyIntelCore2 = 0xBF,\r
3507ab19 667 ProcessorFamilyIntelCore2Solo = 0xC0,\r
668 ProcessorFamilyIntelCore2Extreme = 0xC1,\r
669 ProcessorFamilyIntelCore2Quad = 0xC2,\r
670 ProcessorFamilyIntelCore2ExtremeMobile = 0xC3,\r
671 ProcessorFamilyIntelCore2DuoMobile = 0xC4,\r
672 ProcessorFamilyIntelCore2SoloMobile = 0xC5,\r
673 ProcessorFamilyIntelCoreI7 = 0xC6,\r
9095d37b 674 ProcessorFamilyDualCoreIntelCeleron = 0xC7,\r
98cb9ae8 675 ProcessorFamilyIBM390 = 0xC8,\r
676 ProcessorFamilyG4 = 0xC9,\r
677 ProcessorFamilyG5 = 0xCA,\r
678 ProcessorFamilyG6 = 0xCB,\r
4a228334 679 ProcessorFamilyzArchitecture = 0xCC,\r
7ddba202
SZ
680 ProcessorFamilyIntelCoreI5 = 0xCD,\r
681 ProcessorFamilyIntelCoreI3 = 0xCE,\r
cfcca3c2 682 ProcessorFamilyIntelCoreI9 = 0xCF,\r
98cb9ae8 683 ProcessorFamilyViaC7M = 0xD2,\r
684 ProcessorFamilyViaC7D = 0xD3,\r
685 ProcessorFamilyViaC7 = 0xD4,\r
686 ProcessorFamilyViaEden = 0xD5,\r
3507ab19 687 ProcessorFamilyMultiCoreIntelXeon = 0xD6,\r
688 ProcessorFamilyDualCoreIntelXeon3Series = 0xD7,\r
689 ProcessorFamilyQuadCoreIntelXeon3Series = 0xD8,\r
7ddba202 690 ProcessorFamilyViaNano = 0xD9,\r
3507ab19 691 ProcessorFamilyDualCoreIntelXeon5Series = 0xDA,\r
692 ProcessorFamilyQuadCoreIntelXeon5Series = 0xDB,\r
693 ProcessorFamilyDualCoreIntelXeon7Series = 0xDD,\r
694 ProcessorFamilyQuadCoreIntelXeon7Series = 0xDE,\r
695 ProcessorFamilyMultiCoreIntelXeon7Series = 0xDF,\r
7ddba202 696 ProcessorFamilyMultiCoreIntelXeon3400Series = 0xE0,\r
4a228334
EL
697 ProcessorFamilyAmdOpteron3000Series = 0xE4,\r
698 ProcessorFamilyAmdSempronII = 0xE5,\r
3507ab19 699 ProcessorFamilyEmbeddedAmdOpteronQuadCore = 0xE6,\r
700 ProcessorFamilyAmdPhenomTripleCore = 0xE7,\r
701 ProcessorFamilyAmdTurionUltraDualCoreMobile = 0xE8,\r
702 ProcessorFamilyAmdTurionDualCoreMobile = 0xE9,\r
703 ProcessorFamilyAmdAthlonDualCore = 0xEA,\r
704 ProcessorFamilyAmdSempronSI = 0xEB,\r
7ddba202
SZ
705 ProcessorFamilyAmdPhenomII = 0xEC,\r
706 ProcessorFamilyAmdAthlonII = 0xED,\r
707 ProcessorFamilySixCoreAmdOpteron = 0xEE,\r
708 ProcessorFamilyAmdSempronM = 0xEF,\r
98cb9ae8 709 ProcessorFamilyi860 = 0xFA,\r
710 ProcessorFamilyi960 = 0xFB,\r
711 ProcessorFamilyIndicatorFamily2 = 0xFE,\r
712 ProcessorFamilyReserved1 = 0xFF\r
713} PROCESSOR_FAMILY_DATA;\r
714\r
f9ed6c93
YL
715///\r
716/// Processor Information2 - Processor Family2.\r
717///\r
718typedef enum {\r
ff6a1f32
SZ
719 ProcessorFamilyARMv7 = 0x0100,\r
720 ProcessorFamilyARMv8 = 0x0101,\r
f9ed6c93
YL
721 ProcessorFamilySH3 = 0x0104,\r
722 ProcessorFamilySH4 = 0x0105,\r
723 ProcessorFamilyARM = 0x0118,\r
724 ProcessorFamilyStrongARM = 0x0119,\r
725 ProcessorFamily6x86 = 0x012C,\r
726 ProcessorFamilyMediaGX = 0x012D,\r
727 ProcessorFamilyMII = 0x012E,\r
728 ProcessorFamilyWinChip = 0x0140,\r
729 ProcessorFamilyDSP = 0x015E,\r
730 ProcessorFamilyVideoProcessor = 0x01F4\r
731} PROCESSOR_FAMILY2_DATA;\r
732\r
98cb9ae8 733///\r
9095d37b 734/// Processor Information - Voltage.\r
98cb9ae8 735///\r
736typedef struct {\r
9095d37b
LG
737 UINT8 ProcessorVoltageCapability5V :1;\r
738 UINT8 ProcessorVoltageCapability3_3V :1;\r
739 UINT8 ProcessorVoltageCapability2_9V :1;\r
6800ac83 740 UINT8 ProcessorVoltageCapabilityReserved :1; ///< Bit 3, must be zero.\r
741 UINT8 ProcessorVoltageReserved :3; ///< Bits 4-6, must be zero.\r
742 UINT8 ProcessorVoltageIndicateLegacy :1;\r
98cb9ae8 743} PROCESSOR_VOLTAGE;\r
744\r
745///\r
af2dc6a7 746/// Processor Information - Processor Upgrade.\r
98cb9ae8 747///\r
748typedef enum {\r
749 ProcessorUpgradeOther = 0x01,\r
750 ProcessorUpgradeUnknown = 0x02,\r
751 ProcessorUpgradeDaughterBoard = 0x03,\r
752 ProcessorUpgradeZIFSocket = 0x04,\r
af2dc6a7 753 ProcessorUpgradePiggyBack = 0x05, ///< Replaceable.\r
98cb9ae8 754 ProcessorUpgradeNone = 0x06,\r
755 ProcessorUpgradeLIFSocket = 0x07,\r
756 ProcessorUpgradeSlot1 = 0x08,\r
757 ProcessorUpgradeSlot2 = 0x09,\r
758 ProcessorUpgrade370PinSocket = 0x0A,\r
759 ProcessorUpgradeSlotA = 0x0B,\r
760 ProcessorUpgradeSlotM = 0x0C,\r
761 ProcessorUpgradeSocket423 = 0x0D,\r
af2dc6a7 762 ProcessorUpgradeSocketA = 0x0E, ///< Socket 462.\r
98cb9ae8 763 ProcessorUpgradeSocket478 = 0x0F,\r
764 ProcessorUpgradeSocket754 = 0x10,\r
765 ProcessorUpgradeSocket940 = 0x11,\r
766 ProcessorUpgradeSocket939 = 0x12,\r
767 ProcessorUpgradeSocketmPGA604 = 0x13,\r
768 ProcessorUpgradeSocketLGA771 = 0x14,\r
769 ProcessorUpgradeSocketLGA775 = 0x15,\r
770 ProcessorUpgradeSocketS1 = 0x16,\r
771 ProcessorUpgradeAM2 = 0x17,\r
3507ab19 772 ProcessorUpgradeF1207 = 0x18,\r
7ddba202
SZ
773 ProcessorSocketLGA1366 = 0x19,\r
774 ProcessorUpgradeSocketG34 = 0x1A,\r
775 ProcessorUpgradeSocketAM3 = 0x1B,\r
776 ProcessorUpgradeSocketC32 = 0x1C,\r
777 ProcessorUpgradeSocketLGA1156 = 0x1D,\r
778 ProcessorUpgradeSocketLGA1567 = 0x1E,\r
779 ProcessorUpgradeSocketPGA988A = 0x1F,\r
780 ProcessorUpgradeSocketBGA1288 = 0x20,\r
781 ProcessorUpgradeSocketrPGA988B = 0x21,\r
782 ProcessorUpgradeSocketBGA1023 = 0x22,\r
783 ProcessorUpgradeSocketBGA1224 = 0x23,\r
4a228334 784 ProcessorUpgradeSocketLGA1155 = 0x24, ///< SMBIOS spec 2.8.0 updated the name\r
7ddba202
SZ
785 ProcessorUpgradeSocketLGA1356 = 0x25,\r
786 ProcessorUpgradeSocketLGA2011 = 0x26,\r
787 ProcessorUpgradeSocketFS1 = 0x27,\r
788 ProcessorUpgradeSocketFS2 = 0x28,\r
789 ProcessorUpgradeSocketFM1 = 0x29,\r
4a228334
EL
790 ProcessorUpgradeSocketFM2 = 0x2A,\r
791 ProcessorUpgradeSocketLGA2011_3 = 0x2B,\r
6cd35c62
EL
792 ProcessorUpgradeSocketLGA1356_3 = 0x2C,\r
793 ProcessorUpgradeSocketLGA1150 = 0x2D,\r
794 ProcessorUpgradeSocketBGA1168 = 0x2E,\r
795 ProcessorUpgradeSocketBGA1234 = 0x2F,\r
ff6a1f32
SZ
796 ProcessorUpgradeSocketBGA1364 = 0x30,\r
797 ProcessorUpgradeSocketAM4 = 0x31,\r
798 ProcessorUpgradeSocketLGA1151 = 0x32,\r
799 ProcessorUpgradeSocketBGA1356 = 0x33,\r
800 ProcessorUpgradeSocketBGA1440 = 0x34,\r
801 ProcessorUpgradeSocketBGA1515 = 0x35,\r
802 ProcessorUpgradeSocketLGA3647_1 = 0x36,\r
043026ac 803 ProcessorUpgradeSocketSP3 = 0x37,\r
cfcca3c2
SZ
804 ProcessorUpgradeSocketSP3r2 = 0x38,\r
805 ProcessorUpgradeSocketLGA2066 = 0x39,\r
806 ProcessorUpgradeSocketBGA1392 = 0x3A,\r
807 ProcessorUpgradeSocketBGA1510 = 0x3B,\r
808 ProcessorUpgradeSocketBGA1528 = 0x3C\r
98cb9ae8 809} PROCESSOR_UPGRADE;\r
810\r
811///\r
812/// Processor ID Field Description\r
813///\r
814typedef struct {\r
815 UINT32 ProcessorSteppingId:4;\r
816 UINT32 ProcessorModel: 4;\r
817 UINT32 ProcessorFamily: 4;\r
818 UINT32 ProcessorType: 2;\r
819 UINT32 ProcessorReserved1: 2;\r
820 UINT32 ProcessorXModel: 4;\r
821 UINT32 ProcessorXFamily: 8;\r
822 UINT32 ProcessorReserved2: 4;\r
823} PROCESSOR_SIGNATURE;\r
824\r
98cb9ae8 825typedef struct {\r
826 UINT32 ProcessorFpu :1;\r
827 UINT32 ProcessorVme :1;\r
828 UINT32 ProcessorDe :1;\r
829 UINT32 ProcessorPse :1;\r
830 UINT32 ProcessorTsc :1;\r
831 UINT32 ProcessorMsr :1;\r
832 UINT32 ProcessorPae :1;\r
833 UINT32 ProcessorMce :1;\r
834 UINT32 ProcessorCx8 :1;\r
835 UINT32 ProcessorApic :1;\r
836 UINT32 ProcessorReserved1 :1;\r
837 UINT32 ProcessorSep :1;\r
838 UINT32 ProcessorMtrr :1;\r
839 UINT32 ProcessorPge :1;\r
840 UINT32 ProcessorMca :1;\r
841 UINT32 ProcessorCmov :1;\r
842 UINT32 ProcessorPat :1;\r
843 UINT32 ProcessorPse36 :1;\r
844 UINT32 ProcessorPsn :1;\r
845 UINT32 ProcessorClfsh :1;\r
846 UINT32 ProcessorReserved2 :1;\r
847 UINT32 ProcessorDs :1;\r
848 UINT32 ProcessorAcpi :1;\r
849 UINT32 ProcessorMmx :1;\r
850 UINT32 ProcessorFxsr :1;\r
851 UINT32 ProcessorSse :1;\r
852 UINT32 ProcessorSse2 :1;\r
853 UINT32 ProcessorSs :1;\r
854 UINT32 ProcessorReserved3 :1;\r
855 UINT32 ProcessorTm :1;\r
856 UINT32 ProcessorReserved4 :2;\r
857} PROCESSOR_FEATURE_FLAGS;\r
858\r
859typedef struct {\r
860 PROCESSOR_SIGNATURE Signature;\r
98cb9ae8 861 PROCESSOR_FEATURE_FLAGS FeatureFlags;\r
6800ac83 862} PROCESSOR_ID_DATA;\r
98cb9ae8 863\r
4135253b 864///\r
af2dc6a7 865/// Processor Information (Type 4).\r
4135253b 866///\r
9095d37b
LG
867/// The information in this structure defines the attributes of a single processor;\r
868/// a separate structure instance is provided for each system processor socket/slot.\r
869/// For example, a system with an IntelDX2 processor would have a single\r
af2dc6a7 870/// structure instance, while a system with an IntelSX2 processor would have a structure\r
9095d37b 871/// to describe the main CPU, and a second structure to describe the 80487 co-processor.\r
98cb9ae8 872///\r
9095d37b 873typedef struct {\r
61ce5861 874 SMBIOS_STRUCTURE Hdr;\r
2d5e30ef 875 SMBIOS_TABLE_STRING Socket;\r
af2dc6a7 876 UINT8 ProcessorType; ///< The enumeration value from PROCESSOR_TYPE_DATA.\r
877 UINT8 ProcessorFamily; ///< The enumeration value from PROCESSOR_FAMILY_DATA.\r
61ce5861 878 SMBIOS_TABLE_STRING ProcessorManufacture;\r
98cb9ae8 879 PROCESSOR_ID_DATA ProcessorId;\r
61ce5861 880 SMBIOS_TABLE_STRING ProcessorVersion;\r
98cb9ae8 881 PROCESSOR_VOLTAGE Voltage;\r
61ce5861 882 UINT16 ExternalClock;\r
883 UINT16 MaxSpeed;\r
884 UINT16 CurrentSpeed;\r
885 UINT8 Status;\r
af2dc6a7 886 UINT8 ProcessorUpgrade; ///< The enumeration value from PROCESSOR_UPGRADE.\r
61ce5861 887 UINT16 L1CacheHandle;\r
888 UINT16 L2CacheHandle;\r
889 UINT16 L3CacheHandle;\r
890 SMBIOS_TABLE_STRING SerialNumber;\r
891 SMBIOS_TABLE_STRING AssetTag;\r
892 SMBIOS_TABLE_STRING PartNumber;\r
893 //\r
894 // Add for smbios 2.5\r
895 //\r
896 UINT8 CoreCount;\r
897 UINT8 EnabledCoreCount;\r
898 UINT8 ThreadCount;\r
899 UINT16 ProcessorCharacteristics;\r
900 //\r
901 // Add for smbios 2.6\r
902 //\r
903 UINT16 ProcessorFamily2;\r
6cd35c62
EL
904 //\r
905 // Add for smbios 3.0\r
906 //\r
907 UINT16 CoreCount2;\r
908 UINT16 EnabledCoreCount2;\r
909 UINT16 ThreadCount2;\r
61ce5861 910} SMBIOS_TABLE_TYPE4;\r
911\r
98cb9ae8 912///\r
af2dc6a7 913/// Memory Controller Error Detecting Method.\r
98cb9ae8 914///\r
9095d37b 915typedef enum {\r
98cb9ae8 916 ErrorDetectingMethodOther = 0x01,\r
917 ErrorDetectingMethodUnknown = 0x02,\r
918 ErrorDetectingMethodNone = 0x03,\r
919 ErrorDetectingMethodParity = 0x04,\r
920 ErrorDetectingMethod32Ecc = 0x05,\r
921 ErrorDetectingMethod64Ecc = 0x06,\r
922 ErrorDetectingMethod128Ecc = 0x07,\r
923 ErrorDetectingMethodCrc = 0x08\r
924} MEMORY_ERROR_DETECT_METHOD;\r
925\r
926///\r
af2dc6a7 927/// Memory Controller Error Correcting Capability.\r
98cb9ae8 928///\r
929typedef struct {\r
930 UINT8 Other :1;\r
931 UINT8 Unknown :1;\r
932 UINT8 None :1;\r
933 UINT8 SingleBitErrorCorrect :1;\r
934 UINT8 DoubleBitErrorCorrect :1;\r
935 UINT8 ErrorScrubbing :1;\r
936 UINT8 Reserved :2;\r
937} MEMORY_ERROR_CORRECT_CAPABILITY;\r
938\r
939///\r
af2dc6a7 940/// Memory Controller Information - Interleave Support.\r
98cb9ae8 941///\r
9095d37b 942typedef enum {\r
98cb9ae8 943 MemoryInterleaveOther = 0x01,\r
944 MemoryInterleaveUnknown = 0x02,\r
945 MemoryInterleaveOneWay = 0x03,\r
946 MemoryInterleaveTwoWay = 0x04,\r
947 MemoryInterleaveFourWay = 0x05,\r
948 MemoryInterleaveEightWay = 0x06,\r
949 MemoryInterleaveSixteenWay = 0x07\r
950} MEMORY_SUPPORT_INTERLEAVE_TYPE;\r
951\r
952///\r
af2dc6a7 953/// Memory Controller Information - Memory Speeds.\r
98cb9ae8 954///\r
955typedef struct {\r
956 UINT16 Other :1;\r
957 UINT16 Unknown :1;\r
958 UINT16 SeventyNs:1;\r
959 UINT16 SixtyNs :1;\r
960 UINT16 FiftyNs :1;\r
961 UINT16 Reserved :11;\r
962} MEMORY_SPEED_TYPE;\r
963\r
4135253b 964///\r
af2dc6a7 965/// Memory Controller Information (Type 5, Obsolete).\r
4135253b 966///\r
9095d37b
LG
967/// The information in this structure defines the attributes of the system's memory controller(s)\r
968/// and the supported attributes of any memory-modules present in the sockets controlled by\r
969/// this controller.\r
970/// Note: This structure, and its companion Memory Module Information (Type 6, Obsolete),\r
af2dc6a7 971/// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)\r
98cb9ae8 972/// and Memory Device (Type 17) structures should be used instead. BIOS providers might\r
973/// choose to implement both memory description types to allow existing DMI browsers\r
974/// to properly display the system's memory attributes.\r
975///\r
61ce5861 976typedef struct {\r
98cb9ae8 977 SMBIOS_STRUCTURE Hdr;\r
af2dc6a7 978 UINT8 ErrDetectMethod; ///< The enumeration value from MEMORY_ERROR_DETECT_METHOD.\r
98cb9ae8 979 MEMORY_ERROR_CORRECT_CAPABILITY ErrCorrectCapability;\r
af2dc6a7 980 UINT8 SupportInterleave; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE.\r
9095d37b 981 UINT8 CurrentInterleave; ///< The enumeration value from MEMORY_SUPPORT_INTERLEAVE_TYPE .\r
98cb9ae8 982 UINT8 MaxMemoryModuleSize;\r
983 MEMORY_SPEED_TYPE SupportSpeed;\r
984 UINT16 SupportMemoryType;\r
985 UINT8 MemoryModuleVoltage;\r
986 UINT8 AssociatedMemorySlotNum;\r
987 UINT16 MemoryModuleConfigHandles[1];\r
61ce5861 988} SMBIOS_TABLE_TYPE5;\r
989\r
98cb9ae8 990///\r
991/// Memory Module Information - Memory Types\r
992///\r
993typedef struct {\r
994 UINT16 Other :1;\r
995 UINT16 Unknown :1;\r
996 UINT16 Standard :1;\r
997 UINT16 FastPageMode:1;\r
b4ab47ec 998 UINT16 Edo :1;\r
98cb9ae8 999 UINT16 Parity :1;\r
b4ab47ec 1000 UINT16 Ecc :1;\r
1001 UINT16 Simm :1;\r
1002 UINT16 Dimm :1;\r
98cb9ae8 1003 UINT16 BurstEdo :1;\r
b4ab47ec 1004 UINT16 Sdram :1;\r
98cb9ae8 1005 UINT16 Reserved :5;\r
1006} MEMORY_CURRENT_TYPE;\r
1007\r
1008///\r
af2dc6a7 1009/// Memory Module Information - Memory Size.\r
98cb9ae8 1010///\r
1011typedef struct {\r
6800ac83 1012 UINT8 InstalledOrEnabledSize :7; ///< Size (n), where 2**n is the size in MB.\r
98cb9ae8 1013 UINT8 SingleOrDoubleBank :1;\r
1014} MEMORY_INSTALLED_ENABLED_SIZE;\r
1015\r
4135253b 1016///\r
1017/// Memory Module Information (Type 6, Obsolete)\r
1018///\r
9095d37b 1019/// One Memory Module Information structure is included for each memory-module socket\r
98cb9ae8 1020/// in the system. The structure describes the speed, type, size, and error status\r
9095d37b
LG
1021/// of each system memory module. The supported attributes of each module are described\r
1022/// by the "owning" Memory Controller Information structure.\r
1023/// Note: This structure, and its companion Memory Controller Information (Type 5, Obsolete),\r
af2dc6a7 1024/// are obsolete starting with version 2.1 of this specification. The Physical Memory Array (Type 16)\r
98cb9ae8 1025/// and Memory Device (Type 17) structures should be used instead.\r
1026///\r
61ce5861 1027typedef struct {\r
98cb9ae8 1028 SMBIOS_STRUCTURE Hdr;\r
1029 SMBIOS_TABLE_STRING SocketDesignation;\r
1030 UINT8 BankConnections;\r
1031 UINT8 CurrentSpeed;\r
1032 MEMORY_CURRENT_TYPE CurrentMemoryType;\r
1033 MEMORY_INSTALLED_ENABLED_SIZE InstalledSize;\r
1034 MEMORY_INSTALLED_ENABLED_SIZE EnabledSize;\r
1035 UINT8 ErrorStatus;\r
61ce5861 1036} SMBIOS_TABLE_TYPE6;\r
1037\r
98cb9ae8 1038///\r
af2dc6a7 1039/// Cache Information - SRAM Type.\r
98cb9ae8 1040///\r
1041typedef struct {\r
1042 UINT16 Other :1;\r
1043 UINT16 Unknown :1;\r
1044 UINT16 NonBurst :1;\r
1045 UINT16 Burst :1;\r
1046 UINT16 PipelineBurst :1;\r
98cb9ae8 1047 UINT16 Synchronous :1;\r
53d90f04 1048 UINT16 Asynchronous :1;\r
98cb9ae8 1049 UINT16 Reserved :9;\r
1050} CACHE_SRAM_TYPE_DATA;\r
1051\r
1052///\r
af2dc6a7 1053/// Cache Information - Error Correction Type.\r
98cb9ae8 1054///\r
1055typedef enum {\r
1056 CacheErrorOther = 0x01,\r
1057 CacheErrorUnknown = 0x02,\r
1058 CacheErrorNone = 0x03,\r
1059 CacheErrorParity = 0x04,\r
6800ac83 1060 CacheErrorSingleBit = 0x05, ///< ECC\r
1061 CacheErrorMultiBit = 0x06 ///< ECC\r
98cb9ae8 1062} CACHE_ERROR_TYPE_DATA;\r
1063\r
1064///\r
9095d37b 1065/// Cache Information - System Cache Type.\r
98cb9ae8 1066///\r
1067typedef enum {\r
1068 CacheTypeOther = 0x01,\r
1069 CacheTypeUnknown = 0x02,\r
1070 CacheTypeInstruction = 0x03,\r
1071 CacheTypeData = 0x04,\r
1072 CacheTypeUnified = 0x05\r
1073} CACHE_TYPE_DATA;\r
1074\r
1075///\r
9095d37b 1076/// Cache Information - Associativity.\r
98cb9ae8 1077///\r
1078typedef enum {\r
1079 CacheAssociativityOther = 0x01,\r
1080 CacheAssociativityUnknown = 0x02,\r
1081 CacheAssociativityDirectMapped = 0x03,\r
1082 CacheAssociativity2Way = 0x04,\r
1083 CacheAssociativity4Way = 0x05,\r
1084 CacheAssociativityFully = 0x06,\r
1085 CacheAssociativity8Way = 0x07,\r
1086 CacheAssociativity16Way = 0x08,\r
3507ab19 1087 CacheAssociativity12Way = 0x09,\r
1088 CacheAssociativity24Way = 0x0A,\r
1089 CacheAssociativity32Way = 0x0B,\r
1090 CacheAssociativity48Way = 0x0C,\r
7ddba202
SZ
1091 CacheAssociativity64Way = 0x0D,\r
1092 CacheAssociativity20Way = 0x0E\r
98cb9ae8 1093} CACHE_ASSOCIATIVITY_DATA;\r
1094\r
4135253b 1095///\r
af2dc6a7 1096/// Cache Information (Type 7).\r
4135253b 1097///\r
9095d37b 1098/// The information in this structure defines the attributes of CPU cache device in the system.\r
98cb9ae8 1099/// One structure is specified for each such device, whether the device is internal to\r
1100/// or external to the CPU module. Cache modules can be associated with a processor structure\r
af2dc6a7 1101/// in one or two ways, depending on the SMBIOS version.\r
98cb9ae8 1102///\r
61ce5861 1103typedef struct {\r
98cb9ae8 1104 SMBIOS_STRUCTURE Hdr;\r
1105 SMBIOS_TABLE_STRING SocketDesignation;\r
1106 UINT16 CacheConfiguration;\r
1107 UINT16 MaximumCacheSize;\r
1108 UINT16 InstalledSize;\r
1109 CACHE_SRAM_TYPE_DATA SupportedSRAMType;\r
1110 CACHE_SRAM_TYPE_DATA CurrentSRAMType;\r
1111 UINT8 CacheSpeed;\r
af2dc6a7 1112 UINT8 ErrorCorrectionType; ///< The enumeration value from CACHE_ERROR_TYPE_DATA.\r
1113 UINT8 SystemCacheType; ///< The enumeration value from CACHE_TYPE_DATA.\r
1114 UINT8 Associativity; ///< The enumeration value from CACHE_ASSOCIATIVITY_DATA.\r
ff6a1f32
SZ
1115 //\r
1116 // Add for smbios 3.1.0\r
1117 //\r
1118 UINT32 MaximumCacheSize2;\r
1119 UINT32 InstalledSize2;\r
61ce5861 1120} SMBIOS_TABLE_TYPE7;\r
1121\r
98cb9ae8 1122///\r
9095d37b 1123/// Port Connector Information - Connector Types.\r
98cb9ae8 1124///\r
1125typedef enum {\r
1126 PortConnectorTypeNone = 0x00,\r
1127 PortConnectorTypeCentronics = 0x01,\r
1128 PortConnectorTypeMiniCentronics = 0x02,\r
1129 PortConnectorTypeProprietary = 0x03,\r
1130 PortConnectorTypeDB25Male = 0x04,\r
1131 PortConnectorTypeDB25Female = 0x05,\r
1132 PortConnectorTypeDB15Male = 0x06,\r
1133 PortConnectorTypeDB15Female = 0x07,\r
1134 PortConnectorTypeDB9Male = 0x08,\r
1135 PortConnectorTypeDB9Female = 0x09,\r
1136 PortConnectorTypeRJ11 = 0x0A,\r
1137 PortConnectorTypeRJ45 = 0x0B,\r
1138 PortConnectorType50PinMiniScsi = 0x0C,\r
1139 PortConnectorTypeMiniDin = 0x0D,\r
119c1688 1140 PortConnectorTypeMicroDin = 0x0E,\r
98cb9ae8 1141 PortConnectorTypePS2 = 0x0F,\r
1142 PortConnectorTypeInfrared = 0x10,\r
1143 PortConnectorTypeHpHil = 0x11,\r
1144 PortConnectorTypeUsb = 0x12,\r
1145 PortConnectorTypeSsaScsi = 0x13,\r
1146 PortConnectorTypeCircularDin8Male = 0x14,\r
1147 PortConnectorTypeCircularDin8Female = 0x15,\r
1148 PortConnectorTypeOnboardIde = 0x16,\r
1149 PortConnectorTypeOnboardFloppy = 0x17,\r
1150 PortConnectorType9PinDualInline = 0x18,\r
1151 PortConnectorType25PinDualInline = 0x19,\r
1152 PortConnectorType50PinDualInline = 0x1A,\r
1153 PortConnectorType68PinDualInline = 0x1B,\r
1154 PortConnectorTypeOnboardSoundInput = 0x1C,\r
1155 PortConnectorTypeMiniCentronicsType14 = 0x1D,\r
1156 PortConnectorTypeMiniCentronicsType26 = 0x1E,\r
1157 PortConnectorTypeHeadPhoneMiniJack = 0x1F,\r
1158 PortConnectorTypeBNC = 0x20,\r
1159 PortConnectorType1394 = 0x21,\r
119c1688 1160 PortConnectorTypeSasSata = 0x22,\r
cfcca3c2 1161 PortConnectorTypeUsbTypeC = 0x23,\r
98cb9ae8 1162 PortConnectorTypePC98 = 0xA0,\r
1163 PortConnectorTypePC98Hireso = 0xA1,\r
1164 PortConnectorTypePCH98 = 0xA2,\r
1165 PortConnectorTypePC98Note = 0xA3,\r
1166 PortConnectorTypePC98Full = 0xA4,\r
1167 PortConnectorTypeOther = 0xFF\r
1168} MISC_PORT_CONNECTOR_TYPE;\r
1169\r
1170///\r
9095d37b 1171/// Port Connector Information - Port Types\r
98cb9ae8 1172///\r
1173typedef enum {\r
1174 PortTypeNone = 0x00,\r
1175 PortTypeParallelXtAtCompatible = 0x01,\r
1176 PortTypeParallelPortPs2 = 0x02,\r
1177 PortTypeParallelPortEcp = 0x03,\r
1178 PortTypeParallelPortEpp = 0x04,\r
1179 PortTypeParallelPortEcpEpp = 0x05,\r
1180 PortTypeSerialXtAtCompatible = 0x06,\r
1181 PortTypeSerial16450Compatible = 0x07,\r
1182 PortTypeSerial16550Compatible = 0x08,\r
1183 PortTypeSerial16550ACompatible = 0x09,\r
1184 PortTypeScsi = 0x0A,\r
1185 PortTypeMidi = 0x0B,\r
1186 PortTypeJoyStick = 0x0C,\r
1187 PortTypeKeyboard = 0x0D,\r
1188 PortTypeMouse = 0x0E,\r
1189 PortTypeSsaScsi = 0x0F,\r
1190 PortTypeUsb = 0x10,\r
1191 PortTypeFireWire = 0x11,\r
1192 PortTypePcmciaTypeI = 0x12,\r
1193 PortTypePcmciaTypeII = 0x13,\r
1194 PortTypePcmciaTypeIII = 0x14,\r
1195 PortTypeCardBus = 0x15,\r
1196 PortTypeAccessBusPort = 0x16,\r
1197 PortTypeScsiII = 0x17,\r
1198 PortTypeScsiWide = 0x18,\r
1199 PortTypePC98 = 0x19,\r
1200 PortTypePC98Hireso = 0x1A,\r
1201 PortTypePCH98 = 0x1B,\r
1202 PortTypeVideoPort = 0x1C,\r
1203 PortTypeAudioPort = 0x1D,\r
1204 PortTypeModemPort = 0x1E,\r
1205 PortTypeNetworkPort = 0x1F,\r
23df19a7
SEHM
1206 PortTypeSata = 0x20,\r
1207 PortTypeSas = 0x21,\r
cfcca3c2
SZ
1208 PortTypeMfdp = 0x22, ///< Multi-Function Display Port\r
1209 PortTypeThunderbolt = 0x23,\r
98cb9ae8 1210 PortType8251Compatible = 0xA0,\r
1211 PortType8251FifoCompatible = 0xA1,\r
1212 PortTypeOther = 0xFF\r
1213} MISC_PORT_TYPE;\r
1214\r
4135253b 1215///\r
af2dc6a7 1216/// Port Connector Information (Type 8).\r
4135253b 1217///\r
9095d37b
LG
1218/// The information in this structure defines the attributes of a system port connector,\r
1219/// e.g. parallel, serial, keyboard, or mouse ports. The port's type and connector information\r
98cb9ae8 1220/// are provided. One structure is present for each port provided by the system.\r
1221///\r
61ce5861 1222typedef struct {\r
98cb9ae8 1223 SMBIOS_STRUCTURE Hdr;\r
1224 SMBIOS_TABLE_STRING InternalReferenceDesignator;\r
af2dc6a7 1225 UINT8 InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.\r
98cb9ae8 1226 SMBIOS_TABLE_STRING ExternalReferenceDesignator;\r
af2dc6a7 1227 UINT8 ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.\r
1228 UINT8 PortType; ///< The enumeration value from MISC_PORT_TYPE.\r
61ce5861 1229} SMBIOS_TABLE_TYPE8;\r
1230\r
98cb9ae8 1231///\r
1232/// System Slots - Slot Type\r
1233///\r
1234typedef enum {\r
1235 SlotTypeOther = 0x01,\r
1236 SlotTypeUnknown = 0x02,\r
1237 SlotTypeIsa = 0x03,\r
1238 SlotTypeMca = 0x04,\r
1239 SlotTypeEisa = 0x05,\r
1240 SlotTypePci = 0x06,\r
1241 SlotTypePcmcia = 0x07,\r
1242 SlotTypeVlVesa = 0x08,\r
1243 SlotTypeProprietary = 0x09,\r
1244 SlotTypeProcessorCardSlot = 0x0A,\r
1245 SlotTypeProprietaryMemoryCardSlot = 0x0B,\r
1246 SlotTypeIORiserCardSlot = 0x0C,\r
1247 SlotTypeNuBus = 0x0D,\r
1248 SlotTypePci66MhzCapable = 0x0E,\r
1249 SlotTypeAgp = 0x0F,\r
1250 SlotTypeApg2X = 0x10,\r
1251 SlotTypeAgp4X = 0x11,\r
1252 SlotTypePciX = 0x12,\r
0c8cd067 1253 SlotTypeAgp8X = 0x13,\r
6cd35c62
EL
1254 SlotTypeM2Socket1_DP = 0x14,\r
1255 SlotTypeM2Socket1_SD = 0x15,\r
1256 SlotTypeM2Socket2 = 0x16,\r
1257 SlotTypeM2Socket3 = 0x17,\r
1258 SlotTypeMxmTypeI = 0x18,\r
1259 SlotTypeMxmTypeII = 0x19,\r
1260 SlotTypeMxmTypeIIIStandard = 0x1A,\r
1261 SlotTypeMxmTypeIIIHe = 0x1B,\r
1262 SlotTypeMxmTypeIV = 0x1C,\r
1263 SlotTypeMxm30TypeA = 0x1D,\r
1264 SlotTypeMxm30TypeB = 0x1E,\r
1265 SlotTypePciExpressGen2Sff_8639 = 0x1F,\r
1266 SlotTypePciExpressGen3Sff_8639 = 0x20,\r
ff6a1f32
SZ
1267 SlotTypePciExpressMini52pinWithBSKO = 0x21, ///< PCI Express Mini 52-pin (CEM spec. 2.0) with bottom-side keep-outs.\r
1268 SlotTypePciExpressMini52pinWithoutBSKO = 0x22, ///< PCI Express Mini 52-pin (CEM spec. 2.0) without bottom-side keep-outs.\r
1269 SlotTypePciExpressMini76pin = 0x23, ///< PCI Express Mini 76-pin (CEM spec. 2.0) Corresponds to Display-Mini card.\r
98cb9ae8 1270 SlotTypePC98C20 = 0xA0,\r
1271 SlotTypePC98C24 = 0xA1,\r
1272 SlotTypePC98E = 0xA2,\r
1273 SlotTypePC98LocalBus = 0xA3,\r
1274 SlotTypePC98Card = 0xA4,\r
1275 SlotTypePciExpress = 0xA5,\r
1276 SlotTypePciExpressX1 = 0xA6,\r
1277 SlotTypePciExpressX2 = 0xA7,\r
1278 SlotTypePciExpressX4 = 0xA8,\r
1279 SlotTypePciExpressX8 = 0xA9,\r
3507ab19 1280 SlotTypePciExpressX16 = 0xAA,\r
1281 SlotTypePciExpressGen2 = 0xAB,\r
1282 SlotTypePciExpressGen2X1 = 0xAC,\r
1283 SlotTypePciExpressGen2X2 = 0xAD,\r
1284 SlotTypePciExpressGen2X4 = 0xAE,\r
1285 SlotTypePciExpressGen2X8 = 0xAF,\r
7ddba202
SZ
1286 SlotTypePciExpressGen2X16 = 0xB0,\r
1287 SlotTypePciExpressGen3 = 0xB1,\r
1288 SlotTypePciExpressGen3X1 = 0xB2,\r
1289 SlotTypePciExpressGen3X2 = 0xB3,\r
1290 SlotTypePciExpressGen3X4 = 0xB4,\r
1291 SlotTypePciExpressGen3X8 = 0xB5,\r
1292 SlotTypePciExpressGen3X16 = 0xB6\r
98cb9ae8 1293} MISC_SLOT_TYPE;\r
1294\r
1295///\r
af2dc6a7 1296/// System Slots - Slot Data Bus Width.\r
98cb9ae8 1297///\r
1298typedef enum {\r
1299 SlotDataBusWidthOther = 0x01,\r
1300 SlotDataBusWidthUnknown = 0x02,\r
1301 SlotDataBusWidth8Bit = 0x03,\r
1302 SlotDataBusWidth16Bit = 0x04,\r
1303 SlotDataBusWidth32Bit = 0x05,\r
1304 SlotDataBusWidth64Bit = 0x06,\r
1305 SlotDataBusWidth128Bit = 0x07,\r
6800ac83 1306 SlotDataBusWidth1X = 0x08, ///< Or X1\r
1307 SlotDataBusWidth2X = 0x09, ///< Or X2\r
1308 SlotDataBusWidth4X = 0x0A, ///< Or X4\r
1309 SlotDataBusWidth8X = 0x0B, ///< Or X8\r
1310 SlotDataBusWidth12X = 0x0C, ///< Or X12\r
1311 SlotDataBusWidth16X = 0x0D, ///< Or X16\r
1312 SlotDataBusWidth32X = 0x0E ///< Or X32\r
98cb9ae8 1313} MISC_SLOT_DATA_BUS_WIDTH;\r
1314\r
1315///\r
af2dc6a7 1316/// System Slots - Current Usage.\r
98cb9ae8 1317///\r
1318typedef enum {\r
cfcca3c2
SZ
1319 SlotUsageOther = 0x01,\r
1320 SlotUsageUnknown = 0x02,\r
1321 SlotUsageAvailable = 0x03,\r
1322 SlotUsageInUse = 0x04,\r
1323 SlotUsageUnavailable = 0x05\r
98cb9ae8 1324} MISC_SLOT_USAGE;\r
1325\r
1326///\r
9095d37b 1327/// System Slots - Slot Length.\r
98cb9ae8 1328///\r
1329typedef enum {\r
1330 SlotLengthOther = 0x01,\r
1331 SlotLengthUnknown = 0x02,\r
1332 SlotLengthShort = 0x03,\r
1333 SlotLengthLong = 0x04\r
1334} MISC_SLOT_LENGTH;\r
1335\r
1336///\r
9095d37b 1337/// System Slots - Slot Characteristics 1.\r
98cb9ae8 1338///\r
1339typedef struct {\r
1340 UINT8 CharacteristicsUnknown :1;\r
1341 UINT8 Provides50Volts :1;\r
1342 UINT8 Provides33Volts :1;\r
1343 UINT8 SharedSlot :1;\r
1344 UINT8 PcCard16Supported :1;\r
1345 UINT8 CardBusSupported :1;\r
1346 UINT8 ZoomVideoSupported :1;\r
1347 UINT8 ModemRingResumeSupported:1;\r
1348} MISC_SLOT_CHARACTERISTICS1;\r
1349///\r
9095d37b 1350/// System Slots - Slot Characteristics 2.\r
98cb9ae8 1351///\r
1352typedef struct {\r
1353 UINT8 PmeSignalSupported :1;\r
1354 UINT8 HotPlugDevicesSupported :1;\r
1355 UINT8 SmbusSignalSupported :1;\r
cfcca3c2
SZ
1356 UINT8 BifurcationSupported :1;\r
1357 UINT8 Reserved :4; ///< Set to 0.\r
98cb9ae8 1358} MISC_SLOT_CHARACTERISTICS2;\r
1359\r
cfcca3c2
SZ
1360///\r
1361/// System Slots - Peer Segment/Bus/Device/Function/Width Groups\r
1362///\r
1363typedef struct {\r
1364 UINT16 SegmentGroupNum;\r
1365 UINT8 BusNum;\r
1366 UINT8 DevFuncNum;\r
1367 UINT8 DataBusWidth;\r
1368} MISC_SLOT_PEER_GROUP;\r
1369\r
4135253b 1370///\r
1371/// System Slots (Type 9)\r
1372///\r
9095d37b 1373/// The information in this structure defines the attributes of a system slot.\r
98cb9ae8 1374/// One structure is provided for each slot in the system.\r
1375///\r
1376///\r
61ce5861 1377typedef struct {\r
98cb9ae8 1378 SMBIOS_STRUCTURE Hdr;\r
1379 SMBIOS_TABLE_STRING SlotDesignation;\r
af2dc6a7 1380 UINT8 SlotType; ///< The enumeration value from MISC_SLOT_TYPE.\r
1381 UINT8 SlotDataBusWidth; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.\r
1382 UINT8 CurrentUsage; ///< The enumeration value from MISC_SLOT_USAGE.\r
1383 UINT8 SlotLength; ///< The enumeration value from MISC_SLOT_LENGTH.\r
98cb9ae8 1384 UINT16 SlotID;\r
1385 MISC_SLOT_CHARACTERISTICS1 SlotCharacteristics1;\r
1386 MISC_SLOT_CHARACTERISTICS2 SlotCharacteristics2;\r
61ce5861 1387 //\r
1388 // Add for smbios 2.6\r
1389 //\r
98cb9ae8 1390 UINT16 SegmentGroupNum;\r
1391 UINT8 BusNum;\r
1392 UINT8 DevFuncNum;\r
cfcca3c2
SZ
1393 //\r
1394 // Add for smbios 3.2\r
1395 //\r
1396 UINT8 DataBusWidth;\r
1397 UINT8 PeerGroupingCount;\r
1398 MISC_SLOT_PEER_GROUP PeerGroups[1];\r
61ce5861 1399} SMBIOS_TABLE_TYPE9;\r
1400\r
98cb9ae8 1401///\r
9095d37b 1402/// On Board Devices Information - Device Types.\r
98cb9ae8 1403///\r
1404typedef enum {\r
1405 OnBoardDeviceTypeOther = 0x01,\r
1406 OnBoardDeviceTypeUnknown = 0x02,\r
1407 OnBoardDeviceTypeVideo = 0x03,\r
1408 OnBoardDeviceTypeScsiController = 0x04,\r
1409 OnBoardDeviceTypeEthernet = 0x05,\r
1410 OnBoardDeviceTypeTokenRing = 0x06,\r
119c1688
SZ
1411 OnBoardDeviceTypeSound = 0x07,\r
1412 OnBoardDeviceTypePATAController = 0x08,\r
1413 OnBoardDeviceTypeSATAController = 0x09,\r
1414 OnBoardDeviceTypeSASController = 0x0A\r
98cb9ae8 1415} MISC_ONBOARD_DEVICE_TYPE;\r
1416\r
bf7ea009 1417///\r
1418/// Device Item Entry\r
1419///\r
61ce5861 1420typedef struct {\r
af2dc6a7 1421 UINT8 DeviceType; ///< Bit [6:0] - enumeration type of device from MISC_ONBOARD_DEVICE_TYPE.\r
1422 ///< Bit 7 - 1 : device enabled, 0 : device disabled.\r
98cb9ae8 1423 SMBIOS_TABLE_STRING DescriptionString;\r
61ce5861 1424} DEVICE_STRUCT;\r
1425\r
4135253b 1426///\r
af2dc6a7 1427/// On Board Devices Information (Type 10, obsolete).\r
4135253b 1428///\r
9095d37b
LG
1429/// Note: This structure is obsolete starting with version 2.6 specification; the Onboard Devices Extended\r
1430/// Information (Type 41) structure should be used instead . BIOS providers can choose to implement both\r
1431/// types to allow existing SMBIOS browsers to properly display the system's onboard devices information.\r
1432/// The information in this structure defines the attributes of devices that are onboard (soldered onto)\r
98cb9ae8 1433/// a system element, usually the baseboard. In general, an entry in this table implies that the BIOS\r
1434/// has some level of control over the enabling of the associated device for use by the system.\r
1435///\r
61ce5861 1436typedef struct {\r
1437 SMBIOS_STRUCTURE Hdr;\r
1438 DEVICE_STRUCT Device[1];\r
1439} SMBIOS_TABLE_TYPE10;\r
1440\r
4135253b 1441///\r
af2dc6a7 1442/// OEM Strings (Type 11).\r
9095d37b
LG
1443/// This structure contains free form strings defined by the OEM. Examples of this are:\r
1444/// Part Numbers for Reference Documents for the system, contact information for the manufacturer, etc.\r
4135253b 1445///\r
61ce5861 1446typedef struct {\r
1447 SMBIOS_STRUCTURE Hdr;\r
1448 UINT8 StringCount;\r
1449} SMBIOS_TABLE_TYPE11;\r
1450\r
4135253b 1451///\r
af2dc6a7 1452/// System Configuration Options (Type 12).\r
4135253b 1453///\r
9095d37b 1454/// This structure contains information required to configure the base board's Jumpers and Switches.\r
98cb9ae8 1455///\r
61ce5861 1456typedef struct {\r
1457 SMBIOS_STRUCTURE Hdr;\r
1458 UINT8 StringCount;\r
1459} SMBIOS_TABLE_TYPE12;\r
1460\r
98cb9ae8 1461\r
4135253b 1462///\r
af2dc6a7 1463/// BIOS Language Information (Type 13).\r
4135253b 1464///\r
9095d37b
LG
1465/// The information in this structure defines the installable language attributes of the BIOS.\r
1466///\r
61ce5861 1467typedef struct {\r
1468 SMBIOS_STRUCTURE Hdr;\r
1469 UINT8 InstallableLanguages;\r
1470 UINT8 Flags;\r
fbfa4a1d 1471 UINT8 Reserved[15];\r
61ce5861 1472 SMBIOS_TABLE_STRING CurrentLanguages;\r
1473} SMBIOS_TABLE_TYPE13;\r
1474\r
119c1688
SZ
1475///\r
1476/// Group Item Entry\r
1477///\r
1478typedef struct {\r
1479 UINT8 ItemType;\r
1480 UINT16 ItemHandle;\r
1481} GROUP_STRUCT;\r
1482\r
1483///\r
1484/// Group Associations (Type 14).\r
1485///\r
9095d37b
LG
1486/// The Group Associations structure is provided for OEMs who want to specify\r
1487/// the arrangement or hierarchy of certain components (including other Group Associations)\r
1488/// within the system.\r
119c1688
SZ
1489///\r
1490typedef struct {\r
1491 SMBIOS_STRUCTURE Hdr;\r
1492 SMBIOS_TABLE_STRING GroupName;\r
1493 GROUP_STRUCT Group[1];\r
1494} SMBIOS_TABLE_TYPE14;\r
1495\r
98cb9ae8 1496///\r
af2dc6a7 1497/// System Event Log - Event Log Types.\r
9095d37b 1498///\r
98cb9ae8 1499typedef enum {\r
1500 EventLogTypeReserved = 0x00,\r
1501 EventLogTypeSingleBitECC = 0x01,\r
1502 EventLogTypeMultiBitECC = 0x02,\r
1503 EventLogTypeParityMemErr = 0x03,\r
1504 EventLogTypeBusTimeOut = 0x04,\r
1505 EventLogTypeIOChannelCheck = 0x05,\r
1506 EventLogTypeSoftwareNMI = 0x06,\r
1507 EventLogTypePOSTMemResize = 0x07,\r
1508 EventLogTypePOSTErr = 0x08,\r
1509 EventLogTypePCIParityErr = 0x09,\r
1510 EventLogTypePCISystemErr = 0x0A,\r
1511 EventLogTypeCPUFailure = 0x0B,\r
1512 EventLogTypeEISATimeOut = 0x0C,\r
1513 EventLogTypeMemLogDisabled = 0x0D,\r
1514 EventLogTypeLoggingDisabled = 0x0E,\r
1515 EventLogTypeSysLimitExce = 0x10,\r
1516 EventLogTypeAsyncHWTimer = 0x11,\r
1517 EventLogTypeSysConfigInfo = 0x12,\r
1518 EventLogTypeHDInfo = 0x13,\r
1519 EventLogTypeSysReconfig = 0x14,\r
1520 EventLogTypeUncorrectCPUErr = 0x15,\r
1521 EventLogTypeAreaResetAndClr = 0x16,\r
1522 EventLogTypeSystemBoot = 0x17,\r
6800ac83 1523 EventLogTypeUnused = 0x18, ///< 0x18 - 0x7F\r
1524 EventLogTypeAvailForSys = 0x80, ///< 0x80 - 0xFE\r
98cb9ae8 1525 EventLogTypeEndOfLog = 0xFF\r
1526} EVENT_LOG_TYPE_DATA;\r
1527\r
1528///\r
9095d37b
LG
1529/// System Event Log - Variable Data Format Types.\r
1530///\r
98cb9ae8 1531typedef enum {\r
1532 EventLogVariableNone = 0x00,\r
1533 EventLogVariableHandle = 0x01,\r
1534 EventLogVariableMutilEvent = 0x02,\r
1535 EventLogVariableMutilEventHandle = 0x03,\r
1536 EventLogVariablePOSTResultBitmap = 0x04,\r
1537 EventLogVariableSysManagementType = 0x05,\r
9095d37b 1538 EventLogVariableMutliEventSysManagmentType = 0x06,\r
98cb9ae8 1539 EventLogVariableUnused = 0x07,\r
1540 EventLogVariableOEMAssigned = 0x80\r
55deb978 1541} EVENT_LOG_VARIABLE_DATA;\r
98cb9ae8 1542\r
98cb9ae8 1543///\r
1544/// Event Log Type Descriptors\r
1545///\r
1546typedef struct {\r
af2dc6a7 1547 UINT8 LogType; ///< The enumeration value from EVENT_LOG_TYPE_DATA.\r
98cb9ae8 1548 UINT8 DataFormatType;\r
1549} EVENT_LOG_TYPE;\r
1550\r
4135253b 1551///\r
af2dc6a7 1552/// System Event Log (Type 15).\r
4135253b 1553///\r
9095d37b
LG
1554/// The presence of this structure within the SMBIOS data returned for a system indicates\r
1555/// that the system supports an event log. An event log is a fixed-length area within a\r
1556/// non-volatile storage element, starting with a fixed-length (and vendor-specific) header\r
1557/// record, followed by one or more variable-length log records.\r
98cb9ae8 1558///\r
61ce5861 1559typedef struct {\r
1560 SMBIOS_STRUCTURE Hdr;\r
1561 UINT16 LogAreaLength;\r
1562 UINT16 LogHeaderStartOffset;\r
1563 UINT16 LogDataStartOffset;\r
1564 UINT8 AccessMethod;\r
1565 UINT8 LogStatus;\r
1566 UINT32 LogChangeToken;\r
1567 UINT32 AccessMethodAddress;\r
1568 UINT8 LogHeaderFormat;\r
1569 UINT8 NumberOfSupportedLogTypeDescriptors;\r
1570 UINT8 LengthOfLogTypeDescriptor;\r
1571 EVENT_LOG_TYPE EventLogTypeDescriptors[1];\r
1572} SMBIOS_TABLE_TYPE15;\r
1573\r
98cb9ae8 1574///\r
af2dc6a7 1575/// Physical Memory Array - Location.\r
98cb9ae8 1576///\r
1577typedef enum {\r
1578 MemoryArrayLocationOther = 0x01,\r
1579 MemoryArrayLocationUnknown = 0x02,\r
1580 MemoryArrayLocationSystemBoard = 0x03,\r
1581 MemoryArrayLocationIsaAddonCard = 0x04,\r
1582 MemoryArrayLocationEisaAddonCard = 0x05,\r
1583 MemoryArrayLocationPciAddonCard = 0x06,\r
1584 MemoryArrayLocationMcaAddonCard = 0x07,\r
1585 MemoryArrayLocationPcmciaAddonCard = 0x08,\r
1586 MemoryArrayLocationProprietaryAddonCard = 0x09,\r
1587 MemoryArrayLocationNuBus = 0x0A,\r
1588 MemoryArrayLocationPc98C20AddonCard = 0xA0,\r
1589 MemoryArrayLocationPc98C24AddonCard = 0xA1,\r
1590 MemoryArrayLocationPc98EAddonCard = 0xA2,\r
1591 MemoryArrayLocationPc98LocalBusAddonCard = 0xA3\r
1592} MEMORY_ARRAY_LOCATION;\r
1593\r
1594///\r
af2dc6a7 1595/// Physical Memory Array - Use.\r
98cb9ae8 1596///\r
1597typedef enum {\r
1598 MemoryArrayUseOther = 0x01,\r
1599 MemoryArrayUseUnknown = 0x02,\r
1600 MemoryArrayUseSystemMemory = 0x03,\r
1601 MemoryArrayUseVideoMemory = 0x04,\r
1602 MemoryArrayUseFlashMemory = 0x05,\r
1603 MemoryArrayUseNonVolatileRam = 0x06,\r
1604 MemoryArrayUseCacheMemory = 0x07\r
1605} MEMORY_ARRAY_USE;\r
1606\r
1607///\r
9095d37b 1608/// Physical Memory Array - Error Correction Types.\r
98cb9ae8 1609///\r
1610typedef enum {\r
1611 MemoryErrorCorrectionOther = 0x01,\r
1612 MemoryErrorCorrectionUnknown = 0x02,\r
1613 MemoryErrorCorrectionNone = 0x03,\r
1614 MemoryErrorCorrectionParity = 0x04,\r
1615 MemoryErrorCorrectionSingleBitEcc = 0x05,\r
1616 MemoryErrorCorrectionMultiBitEcc = 0x06,\r
1617 MemoryErrorCorrectionCrc = 0x07\r
1618} MEMORY_ERROR_CORRECTION;\r
1619\r
4135253b 1620///\r
af2dc6a7 1621/// Physical Memory Array (Type 16).\r
4135253b 1622///\r
9095d37b
LG
1623/// This structure describes a collection of memory devices that operate\r
1624/// together to form a memory address space.\r
98cb9ae8 1625///\r
61ce5861 1626typedef struct {\r
98cb9ae8 1627 SMBIOS_STRUCTURE Hdr;\r
af2dc6a7 1628 UINT8 Location; ///< The enumeration value from MEMORY_ARRAY_LOCATION.\r
1629 UINT8 Use; ///< The enumeration value from MEMORY_ARRAY_USE.\r
1630 UINT8 MemoryErrorCorrection; ///< The enumeration value from MEMORY_ERROR_CORRECTION.\r
98cb9ae8 1631 UINT32 MaximumCapacity;\r
1632 UINT16 MemoryErrorInformationHandle;\r
1633 UINT16 NumberOfMemoryDevices;\r
7ddba202
SZ
1634 //\r
1635 // Add for smbios 2.7\r
1636 //\r
1637 UINT64 ExtendedMaximumCapacity;\r
61ce5861 1638} SMBIOS_TABLE_TYPE16;\r
1639\r
98cb9ae8 1640///\r
af2dc6a7 1641/// Memory Device - Form Factor.\r
98cb9ae8 1642///\r
1643typedef enum {\r
1644 MemoryFormFactorOther = 0x01,\r
1645 MemoryFormFactorUnknown = 0x02,\r
1646 MemoryFormFactorSimm = 0x03,\r
1647 MemoryFormFactorSip = 0x04,\r
1648 MemoryFormFactorChip = 0x05,\r
1649 MemoryFormFactorDip = 0x06,\r
1650 MemoryFormFactorZip = 0x07,\r
1651 MemoryFormFactorProprietaryCard = 0x08,\r
1652 MemoryFormFactorDimm = 0x09,\r
1653 MemoryFormFactorTsop = 0x0A,\r
1654 MemoryFormFactorRowOfChips = 0x0B,\r
1655 MemoryFormFactorRimm = 0x0C,\r
1656 MemoryFormFactorSodimm = 0x0D,\r
1657 MemoryFormFactorSrimm = 0x0E,\r
1658 MemoryFormFactorFbDimm = 0x0F\r
1659} MEMORY_FORM_FACTOR;\r
1660\r
1661///\r
1662/// Memory Device - Type\r
1663///\r
1664typedef enum {\r
1665 MemoryTypeOther = 0x01,\r
1666 MemoryTypeUnknown = 0x02,\r
1667 MemoryTypeDram = 0x03,\r
1668 MemoryTypeEdram = 0x04,\r
1669 MemoryTypeVram = 0x05,\r
1670 MemoryTypeSram = 0x06,\r
1671 MemoryTypeRam = 0x07,\r
1672 MemoryTypeRom = 0x08,\r
1673 MemoryTypeFlash = 0x09,\r
1674 MemoryTypeEeprom = 0x0A,\r
1675 MemoryTypeFeprom = 0x0B,\r
1676 MemoryTypeEprom = 0x0C,\r
1677 MemoryTypeCdram = 0x0D,\r
1678 MemoryType3Dram = 0x0E,\r
1679 MemoryTypeSdram = 0x0F,\r
1680 MemoryTypeSgram = 0x10,\r
1681 MemoryTypeRdram = 0x11,\r
1682 MemoryTypeDdr = 0x12,\r
1683 MemoryTypeDdr2 = 0x13,\r
3507ab19 1684 MemoryTypeDdr2FbDimm = 0x14,\r
1685 MemoryTypeDdr3 = 0x18,\r
6cd35c62
EL
1686 MemoryTypeFbd2 = 0x19,\r
1687 MemoryTypeDdr4 = 0x1A,\r
1688 MemoryTypeLpddr = 0x1B,\r
1689 MemoryTypeLpddr2 = 0x1C,\r
1690 MemoryTypeLpddr3 = 0x1D,\r
cfcca3c2
SZ
1691 MemoryTypeLpddr4 = 0x1E,\r
1692 MemoryTypeLogicalNonVolatileDevice = 0x1F\r
98cb9ae8 1693} MEMORY_DEVICE_TYPE;\r
1694\r
cfcca3c2
SZ
1695///\r
1696/// Memory Device - Type Detail\r
1697///\r
98cb9ae8 1698typedef struct {\r
1699 UINT16 Reserved :1;\r
1700 UINT16 Other :1;\r
1701 UINT16 Unknown :1;\r
1702 UINT16 FastPaged :1;\r
1703 UINT16 StaticColumn :1;\r
1704 UINT16 PseudoStatic :1;\r
1705 UINT16 Rambus :1;\r
1706 UINT16 Synchronous :1;\r
1707 UINT16 Cmos :1;\r
1708 UINT16 Edo :1;\r
1709 UINT16 WindowDram :1;\r
1710 UINT16 CacheDram :1;\r
1711 UINT16 Nonvolatile :1;\r
7ddba202
SZ
1712 UINT16 Registered :1;\r
1713 UINT16 Unbuffered :1;\r
4a228334 1714 UINT16 LrDimm :1;\r
98cb9ae8 1715} MEMORY_DEVICE_TYPE_DETAIL;\r
1716\r
cfcca3c2
SZ
1717///\r
1718/// Memory Device - Memory Technology\r
1719///\r
1720typedef enum {\r
1721 MemoryTechnologyOther = 0x01,\r
1722 MemoryTechnologyUnknown = 0x02,\r
1723 MemoryTechnologyDram = 0x03,\r
1724 MemoryTechnologyNvdimmN = 0x04,\r
1725 MemoryTechnologyNvdimmF = 0x05,\r
1726 MemoryTechnologyNvdimmP = 0x06,\r
1727 MemoryTechnologyIntelPersistentMemory = 0x07\r
1728} MEMORY_DEVICE_TECHNOLOGY;\r
1729\r
1730///\r
1731/// Memory Device - Memory Operating Mode Capability\r
1732///\r
1733typedef union {\r
1734 ///\r
1735 /// Individual bit fields\r
1736 ///\r
1737 struct {\r
1738 UINT16 Reserved :1; ///< Set to 0.\r
1739 UINT16 Other :1;\r
1740 UINT16 Unknown :1;\r
1741 UINT16 VolatileMemory :1;\r
1742 UINT16 ByteAccessiblePersistentMemory :1;\r
1743 UINT16 BlockAccessiblePersistentMemory :1;\r
1744 UINT16 Reserved2 :10; ///< Set to 0.\r
1745 } Bits;\r
1746 ///\r
1747 /// All bit fields as a 16-bit value\r
1748 ///\r
1749 UINT16 Uint16;\r
1750} MEMORY_DEVICE_OPERATING_MODE_CAPABILITY;\r
1751\r
4135253b 1752///\r
af2dc6a7 1753/// Memory Device (Type 17).\r
4135253b 1754///\r
9095d37b 1755/// This structure describes a single memory device that is part of\r
98cb9ae8 1756/// a larger Physical Memory Array (Type 16).\r
9095d37b
LG
1757/// Note: If a system includes memory-device sockets, the SMBIOS implementation\r
1758/// includes a Memory Device structure instance for each slot, whether or not the\r
98cb9ae8 1759/// socket is currently populated.\r
1760///\r
61ce5861 1761typedef struct {\r
cfcca3c2
SZ
1762 SMBIOS_STRUCTURE Hdr;\r
1763 UINT16 MemoryArrayHandle;\r
1764 UINT16 MemoryErrorInformationHandle;\r
1765 UINT16 TotalWidth;\r
1766 UINT16 DataWidth;\r
1767 UINT16 Size;\r
1768 UINT8 FormFactor; ///< The enumeration value from MEMORY_FORM_FACTOR.\r
1769 UINT8 DeviceSet;\r
1770 SMBIOS_TABLE_STRING DeviceLocator;\r
1771 SMBIOS_TABLE_STRING BankLocator;\r
1772 UINT8 MemoryType; ///< The enumeration value from MEMORY_DEVICE_TYPE.\r
1773 MEMORY_DEVICE_TYPE_DETAIL TypeDetail;\r
1774 UINT16 Speed;\r
1775 SMBIOS_TABLE_STRING Manufacturer;\r
1776 SMBIOS_TABLE_STRING SerialNumber;\r
1777 SMBIOS_TABLE_STRING AssetTag;\r
1778 SMBIOS_TABLE_STRING PartNumber;\r
61ce5861 1779 //\r
1780 // Add for smbios 2.6\r
9095d37b 1781 //\r
cfcca3c2 1782 UINT8 Attributes;\r
7ddba202
SZ
1783 //\r
1784 // Add for smbios 2.7\r
1785 //\r
cfcca3c2
SZ
1786 UINT32 ExtendedSize;\r
1787 //\r
1788 // Keep using name "ConfiguredMemoryClockSpeed" for compatibility\r
1789 // although this field is renamed from "Configured Memory Clock Speed"\r
1790 // to "Configured Memory Speed" in smbios 3.2.0.\r
1791 //\r
1792 UINT16 ConfiguredMemoryClockSpeed;\r
4a228334
EL
1793 //\r
1794 // Add for smbios 2.8.0\r
1795 //\r
cfcca3c2
SZ
1796 UINT16 MinimumVoltage;\r
1797 UINT16 MaximumVoltage;\r
1798 UINT16 ConfiguredVoltage;\r
1799 //\r
1800 // Add for smbios 3.2.0\r
1801 //\r
1802 UINT8 MemoryTechnology; ///< The enumeration value from MEMORY_DEVICE_TECHNOLOGY\r
1803 MEMORY_DEVICE_OPERATING_MODE_CAPABILITY MemoryOperatingModeCapability;\r
1804 SMBIOS_TABLE_STRING FirwareVersion;\r
1805 UINT16 ModuleManufacturerID;\r
1806 UINT16 ModuleProductID;\r
1807 UINT16 MemorySubsystemControllerManufacturerID;\r
1808 UINT16 MemorySubsystemControllerProductID;\r
1809 UINT64 NonVolatileSize;\r
1810 UINT64 VolatileSize;\r
1811 UINT64 CacheSize;\r
1812 UINT64 LogicalSize;\r
61ce5861 1813} SMBIOS_TABLE_TYPE17;\r
1814\r
98cb9ae8 1815///\r
9095d37b 1816/// 32-bit Memory Error Information - Error Type.\r
98cb9ae8 1817///\r
9095d37b 1818typedef enum {\r
98cb9ae8 1819 MemoryErrorOther = 0x01,\r
1820 MemoryErrorUnknown = 0x02,\r
1821 MemoryErrorOk = 0x03,\r
1822 MemoryErrorBadRead = 0x04,\r
1823 MemoryErrorParity = 0x05,\r
1824 MemoryErrorSigleBit = 0x06,\r
1825 MemoryErrorDoubleBit = 0x07,\r
1826 MemoryErrorMultiBit = 0x08,\r
1827 MemoryErrorNibble = 0x09,\r
1828 MemoryErrorChecksum = 0x0A,\r
1829 MemoryErrorCrc = 0x0B,\r
1830 MemoryErrorCorrectSingleBit = 0x0C,\r
1831 MemoryErrorCorrected = 0x0D,\r
1832 MemoryErrorUnCorrectable = 0x0E\r
1833} MEMORY_ERROR_TYPE;\r
1834\r
1835///\r
9095d37b 1836/// 32-bit Memory Error Information - Error Granularity.\r
98cb9ae8 1837///\r
9095d37b 1838typedef enum {\r
98cb9ae8 1839 MemoryGranularityOther = 0x01,\r
1840 MemoryGranularityOtherUnknown = 0x02,\r
1841 MemoryGranularityDeviceLevel = 0x03,\r
1842 MemoryGranularityMemPartitionLevel = 0x04\r
1843} MEMORY_ERROR_GRANULARITY;\r
1844\r
1845///\r
9095d37b 1846/// 32-bit Memory Error Information - Error Operation.\r
98cb9ae8 1847///\r
9095d37b 1848typedef enum {\r
98cb9ae8 1849 MemoryErrorOperationOther = 0x01,\r
1850 MemoryErrorOperationUnknown = 0x02,\r
1851 MemoryErrorOperationRead = 0x03,\r
1852 MemoryErrorOperationWrite = 0x04,\r
1853 MemoryErrorOperationPartialWrite = 0x05\r
1854} MEMORY_ERROR_OPERATION;\r
1855\r
4135253b 1856///\r
af2dc6a7 1857/// 32-bit Memory Error Information (Type 18).\r
9095d37b
LG
1858///\r
1859/// This structure identifies the specifics of an error that might be detected\r
98cb9ae8 1860/// within a Physical Memory Array.\r
4135253b 1861///\r
61ce5861 1862typedef struct {\r
98cb9ae8 1863 SMBIOS_STRUCTURE Hdr;\r
af2dc6a7 1864 UINT8 ErrorType; ///< The enumeration value from MEMORY_ERROR_TYPE.\r
1865 UINT8 ErrorGranularity; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.\r
1866 UINT8 ErrorOperation; ///< The enumeration value from MEMORY_ERROR_OPERATION.\r
98cb9ae8 1867 UINT32 VendorSyndrome;\r
1868 UINT32 MemoryArrayErrorAddress;\r
1869 UINT32 DeviceErrorAddress;\r
1870 UINT32 ErrorResolution;\r
61ce5861 1871} SMBIOS_TABLE_TYPE18;\r
1872\r
4135253b 1873///\r
af2dc6a7 1874/// Memory Array Mapped Address (Type 19).\r
4135253b 1875///\r
9095d37b 1876/// This structure provides the address mapping for a Physical Memory Array.\r
98cb9ae8 1877/// One structure is present for each contiguous address range described.\r
1878///\r
61ce5861 1879typedef struct {\r
1880 SMBIOS_STRUCTURE Hdr;\r
1881 UINT32 StartingAddress;\r
1882 UINT32 EndingAddress;\r
1883 UINT16 MemoryArrayHandle;\r
1884 UINT8 PartitionWidth;\r
7ddba202
SZ
1885 //\r
1886 // Add for smbios 2.7\r
1887 //\r
1888 UINT64 ExtendedStartingAddress;\r
1889 UINT64 ExtendedEndingAddress;\r
61ce5861 1890} SMBIOS_TABLE_TYPE19;\r
1891\r
4135253b 1892///\r
af2dc6a7 1893/// Memory Device Mapped Address (Type 20).\r
4135253b 1894///\r
9095d37b
LG
1895/// This structure maps memory address space usually to a device-level granularity.\r
1896/// One structure is present for each contiguous address range described.\r
98cb9ae8 1897///\r
61ce5861 1898typedef struct {\r
1899 SMBIOS_STRUCTURE Hdr;\r
1900 UINT32 StartingAddress;\r
1901 UINT32 EndingAddress;\r
1902 UINT16 MemoryDeviceHandle;\r
1903 UINT16 MemoryArrayMappedAddressHandle;\r
1904 UINT8 PartitionRowPosition;\r
1905 UINT8 InterleavePosition;\r
1906 UINT8 InterleavedDataDepth;\r
7ddba202
SZ
1907 //\r
1908 // Add for smbios 2.7\r
1909 //\r
1910 UINT64 ExtendedStartingAddress;\r
1911 UINT64 ExtendedEndingAddress;\r
61ce5861 1912} SMBIOS_TABLE_TYPE20;\r
1913\r
98cb9ae8 1914///\r
1915/// Built-in Pointing Device - Type\r
1916///\r
1917typedef enum {\r
1918 PointingDeviceTypeOther = 0x01,\r
1919 PointingDeviceTypeUnknown = 0x02,\r
1920 PointingDeviceTypeMouse = 0x03,\r
1921 PointingDeviceTypeTrackBall = 0x04,\r
1922 PointingDeviceTypeTrackPoint = 0x05,\r
1923 PointingDeviceTypeGlidePoint = 0x06,\r
1924 PointingDeviceTouchPad = 0x07,\r
1925 PointingDeviceTouchScreen = 0x08,\r
1926 PointingDeviceOpticalSensor = 0x09\r
1927} BUILTIN_POINTING_DEVICE_TYPE;\r
1928\r
1929///\r
af2dc6a7 1930/// Built-in Pointing Device - Interface.\r
98cb9ae8 1931///\r
1932typedef enum {\r
1933 PointingDeviceInterfaceOther = 0x01,\r
1934 PointingDeviceInterfaceUnknown = 0x02,\r
1935 PointingDeviceInterfaceSerial = 0x03,\r
1936 PointingDeviceInterfacePs2 = 0x04,\r
1937 PointingDeviceInterfaceInfrared = 0x05,\r
1938 PointingDeviceInterfaceHpHil = 0x06,\r
1939 PointingDeviceInterfaceBusMouse = 0x07,\r
1940 PointingDeviceInterfaceADB = 0x08,\r
1941 PointingDeviceInterfaceBusMouseDB9 = 0xA0,\r
1942 PointingDeviceInterfaceBusMouseMicroDin = 0xA1,\r
1943 PointingDeviceInterfaceUsb = 0xA2\r
1944} BUILTIN_POINTING_DEVICE_INTERFACE;\r
1945\r
4135253b 1946///\r
af2dc6a7 1947/// Built-in Pointing Device (Type 21).\r
4135253b 1948///\r
9095d37b 1949/// This structure describes the attributes of the built-in pointing device for the\r
af2dc6a7 1950/// system. The presence of this structure does not imply that the built-in\r
9095d37b 1951/// pointing device is active for the system's use!\r
98cb9ae8 1952///\r
61ce5861 1953typedef struct {\r
98cb9ae8 1954 SMBIOS_STRUCTURE Hdr;\r
af2dc6a7 1955 UINT8 Type; ///< The enumeration value from BUILTIN_POINTING_DEVICE_TYPE.\r
1956 UINT8 Interface; ///< The enumeration value from BUILTIN_POINTING_DEVICE_INTERFACE.\r
98cb9ae8 1957 UINT8 NumberOfButtons;\r
61ce5861 1958} SMBIOS_TABLE_TYPE21;\r
1959\r
98cb9ae8 1960///\r
1961/// Portable Battery - Device Chemistry\r
1962///\r
9095d37b 1963typedef enum {\r
98cb9ae8 1964 PortableBatteryDeviceChemistryOther = 0x01,\r
1965 PortableBatteryDeviceChemistryUnknown = 0x02,\r
1966 PortableBatteryDeviceChemistryLeadAcid = 0x03,\r
1967 PortableBatteryDeviceChemistryNickelCadmium = 0x04,\r
1968 PortableBatteryDeviceChemistryNickelMetalHydride = 0x05,\r
1969 PortableBatteryDeviceChemistryLithiumIon = 0x06,\r
1970 PortableBatteryDeviceChemistryZincAir = 0x07,\r
1971 PortableBatteryDeviceChemistryLithiumPolymer = 0x08\r
1972} PORTABLE_BATTERY_DEVICE_CHEMISTRY;\r
1973\r
4135253b 1974///\r
af2dc6a7 1975/// Portable Battery (Type 22).\r
4135253b 1976///\r
9095d37b
LG
1977/// This structure describes the attributes of the portable battery(s) for the system.\r
1978/// The structure contains the static attributes for the group. Each structure describes\r
1f9f8414 1979/// a single battery pack's attributes.\r
98cb9ae8 1980///\r
61ce5861 1981typedef struct {\r
98cb9ae8 1982 SMBIOS_STRUCTURE Hdr;\r
1983 SMBIOS_TABLE_STRING Location;\r
1984 SMBIOS_TABLE_STRING Manufacturer;\r
1985 SMBIOS_TABLE_STRING ManufactureDate;\r
1986 SMBIOS_TABLE_STRING SerialNumber;\r
1987 SMBIOS_TABLE_STRING DeviceName;\r
af2dc6a7 1988 UINT8 DeviceChemistry; ///< The enumeration value from PORTABLE_BATTERY_DEVICE_CHEMISTRY.\r
98cb9ae8 1989 UINT16 DeviceCapacity;\r
1990 UINT16 DesignVoltage;\r
1991 SMBIOS_TABLE_STRING SBDSVersionNumber;\r
1992 UINT8 MaximumErrorInBatteryData;\r
1993 UINT16 SBDSSerialNumber;\r
1994 UINT16 SBDSManufactureDate;\r
1995 SMBIOS_TABLE_STRING SBDSDeviceChemistry;\r
1996 UINT8 DesignCapacityMultiplier;\r
1997 UINT32 OEMSpecific;\r
61ce5861 1998} SMBIOS_TABLE_TYPE22;\r
1999\r
4135253b 2000///\r
2001/// System Reset (Type 23)\r
2002///\r
9095d37b 2003/// This structure describes whether Automatic System Reset functions enabled (Status).\r
98cb9ae8 2004/// If the system has a watchdog Timer and the timer is not reset (Timer Reset)\r
9095d37b
LG
2005/// before the Interval elapses, an automatic system reset will occur. The system will re-boot\r
2006/// according to the Boot Option. This function may repeat until the Limit is reached, at which time\r
2007/// the system will re-boot according to the Boot Option at Limit.\r
98cb9ae8 2008///\r
61ce5861 2009typedef struct {\r
2010 SMBIOS_STRUCTURE Hdr;\r
2011 UINT8 Capabilities;\r
2012 UINT16 ResetCount;\r
2013 UINT16 ResetLimit;\r
2014 UINT16 TimerInterval;\r
2015 UINT16 Timeout;\r
2016} SMBIOS_TABLE_TYPE23;\r
2017\r
4135253b 2018///\r
af2dc6a7 2019/// Hardware Security (Type 24).\r
4135253b 2020///\r
9095d37b 2021/// This structure describes the system-wide hardware security settings.\r
98cb9ae8 2022///\r
61ce5861 2023typedef struct {\r
2024 SMBIOS_STRUCTURE Hdr;\r
2025 UINT8 HardwareSecuritySettings;\r
2026} SMBIOS_TABLE_TYPE24;\r
2027\r
4135253b 2028///\r
af2dc6a7 2029/// System Power Controls (Type 25).\r
4135253b 2030///\r
9095d37b
LG
2031/// This structure describes the attributes for controlling the main power supply to the system.\r
2032/// Software that interprets this structure uses the month, day, hour, minute, and second values\r
2033/// to determine the number of seconds until the next power-on of the system. The presence of\r
2034/// this structure implies that a timed power-on facility is available for the system.\r
98cb9ae8 2035///\r
61ce5861 2036typedef struct {\r
2037 SMBIOS_STRUCTURE Hdr;\r
2038 UINT8 NextScheduledPowerOnMonth;\r
2039 UINT8 NextScheduledPowerOnDayOfMonth;\r
2040 UINT8 NextScheduledPowerOnHour;\r
2041 UINT8 NextScheduledPowerOnMinute;\r
2042 UINT8 NextScheduledPowerOnSecond;\r
2043} SMBIOS_TABLE_TYPE25;\r
2044\r
98cb9ae8 2045///\r
af2dc6a7 2046/// Voltage Probe - Location and Status.\r
98cb9ae8 2047///\r
2048typedef struct {\r
2049 UINT8 VoltageProbeSite :5;\r
2050 UINT8 VoltageProbeStatus :3;\r
2051} MISC_VOLTAGE_PROBE_LOCATION;\r
2052\r
4135253b 2053///\r
2054/// Voltage Probe (Type 26)\r
2055///\r
9095d37b 2056/// This describes the attributes for a voltage probe in the system.\r
98cb9ae8 2057/// Each structure describes a single voltage probe.\r
2058///\r
61ce5861 2059typedef struct {\r
98cb9ae8 2060 SMBIOS_STRUCTURE Hdr;\r
2061 SMBIOS_TABLE_STRING Description;\r
2062 MISC_VOLTAGE_PROBE_LOCATION LocationAndStatus;\r
2063 UINT16 MaximumValue;\r
2064 UINT16 MinimumValue;\r
2065 UINT16 Resolution;\r
2066 UINT16 Tolerance;\r
2067 UINT16 Accuracy;\r
2068 UINT32 OEMDefined;\r
2069 UINT16 NominalValue;\r
61ce5861 2070} SMBIOS_TABLE_TYPE26;\r
2071\r
98cb9ae8 2072///\r
af2dc6a7 2073/// Cooling Device - Device Type and Status.\r
98cb9ae8 2074///\r
2075typedef struct {\r
2076 UINT8 CoolingDevice :5;\r
2077 UINT8 CoolingDeviceStatus :3;\r
2078} MISC_COOLING_DEVICE_TYPE;\r
2079\r
4135253b 2080///\r
2081/// Cooling Device (Type 27)\r
2082///\r
9095d37b
LG
2083/// This structure describes the attributes for a cooling device in the system.\r
2084/// Each structure describes a single cooling device.\r
2085///\r
61ce5861 2086typedef struct {\r
98cb9ae8 2087 SMBIOS_STRUCTURE Hdr;\r
2088 UINT16 TemperatureProbeHandle;\r
2089 MISC_COOLING_DEVICE_TYPE DeviceTypeAndStatus;\r
2090 UINT8 CoolingUnitGroup;\r
2091 UINT32 OEMDefined;\r
2092 UINT16 NominalSpeed;\r
7ddba202
SZ
2093 //\r
2094 // Add for smbios 2.7\r
2095 //\r
2096 SMBIOS_TABLE_STRING Description;\r
61ce5861 2097} SMBIOS_TABLE_TYPE27;\r
2098\r
98cb9ae8 2099///\r
af2dc6a7 2100/// Temperature Probe - Location and Status.\r
98cb9ae8 2101///\r
2102typedef struct {\r
2103 UINT8 TemperatureProbeSite :5;\r
2104 UINT8 TemperatureProbeStatus :3;\r
2105} MISC_TEMPERATURE_PROBE_LOCATION;\r
2106\r
4135253b 2107///\r
af2dc6a7 2108/// Temperature Probe (Type 28).\r
4135253b 2109///\r
9095d37b
LG
2110/// This structure describes the attributes for a temperature probe in the system.\r
2111/// Each structure describes a single temperature probe.\r
98cb9ae8 2112///\r
61ce5861 2113typedef struct {\r
98cb9ae8 2114 SMBIOS_STRUCTURE Hdr;\r
2115 SMBIOS_TABLE_STRING Description;\r
2116 MISC_TEMPERATURE_PROBE_LOCATION LocationAndStatus;\r
2117 UINT16 MaximumValue;\r
2118 UINT16 MinimumValue;\r
2119 UINT16 Resolution;\r
2120 UINT16 Tolerance;\r
2121 UINT16 Accuracy;\r
2122 UINT32 OEMDefined;\r
2123 UINT16 NominalValue;\r
61ce5861 2124} SMBIOS_TABLE_TYPE28;\r
2125\r
98cb9ae8 2126///\r
af2dc6a7 2127/// Electrical Current Probe - Location and Status.\r
98cb9ae8 2128///\r
2129typedef struct {\r
2130 UINT8 ElectricalCurrentProbeSite :5;\r
2131 UINT8 ElectricalCurrentProbeStatus :3;\r
2132} MISC_ELECTRICAL_CURRENT_PROBE_LOCATION;\r
2133\r
4135253b 2134///\r
af2dc6a7 2135/// Electrical Current Probe (Type 29).\r
4135253b 2136///\r
98cb9ae8 2137/// This structure describes the attributes for an electrical current probe in the system.\r
9095d37b 2138/// Each structure describes a single electrical current probe.\r
98cb9ae8 2139///\r
61ce5861 2140typedef struct {\r
98cb9ae8 2141 SMBIOS_STRUCTURE Hdr;\r
2142 SMBIOS_TABLE_STRING Description;\r
2143 MISC_ELECTRICAL_CURRENT_PROBE_LOCATION LocationAndStatus;\r
2144 UINT16 MaximumValue;\r
2145 UINT16 MinimumValue;\r
2146 UINT16 Resolution;\r
2147 UINT16 Tolerance;\r
2148 UINT16 Accuracy;\r
2149 UINT32 OEMDefined;\r
2150 UINT16 NominalValue;\r
61ce5861 2151} SMBIOS_TABLE_TYPE29;\r
2152\r
4135253b 2153///\r
af2dc6a7 2154/// Out-of-Band Remote Access (Type 30).\r
4135253b 2155///\r
9095d37b
LG
2156/// This structure describes the attributes and policy settings of a hardware facility\r
2157/// that may be used to gain remote access to a hardware system when the operating system\r
2158/// is not available due to power-down status, hardware failures, or boot failures.\r
98cb9ae8 2159///\r
61ce5861 2160typedef struct {\r
2161 SMBIOS_STRUCTURE Hdr;\r
2162 SMBIOS_TABLE_STRING ManufacturerName;\r
2163 UINT8 Connections;\r
2164} SMBIOS_TABLE_TYPE30;\r
2165\r
4135253b 2166///\r
af2dc6a7 2167/// Boot Integrity Services (BIS) Entry Point (Type 31).\r
4135253b 2168///\r
9095d37b
LG
2169/// Structure type 31 (decimal) is reserved for use by the Boot Integrity Services (BIS).\r
2170///\r
61ce5861 2171typedef struct {\r
2172 SMBIOS_STRUCTURE Hdr;\r
2173 UINT8 Checksum;\r
2174 UINT8 Reserved1;\r
2175 UINT16 Reserved2;\r
2176 UINT32 BisEntry16;\r
2177 UINT32 BisEntry32;\r
2178 UINT64 Reserved3;\r
2179 UINT32 Reserved4;\r
2180} SMBIOS_TABLE_TYPE31;\r
2181\r
98cb9ae8 2182///\r
af2dc6a7 2183/// System Boot Information - System Boot Status.\r
98cb9ae8 2184///\r
2185typedef enum {\r
2186 BootInformationStatusNoError = 0x00,\r
2187 BootInformationStatusNoBootableMedia = 0x01,\r
2188 BootInformationStatusNormalOSFailedLoading = 0x02,\r
2189 BootInformationStatusFirmwareDetectedFailure = 0x03,\r
2190 BootInformationStatusOSDetectedFailure = 0x04,\r
2191 BootInformationStatusUserRequestedBoot = 0x05,\r
2192 BootInformationStatusSystemSecurityViolation = 0x06,\r
2193 BootInformationStatusPreviousRequestedImage = 0x07,\r
2194 BootInformationStatusWatchdogTimerExpired = 0x08,\r
2195 BootInformationStatusStartReserved = 0x09,\r
2196 BootInformationStatusStartOemSpecific = 0x80,\r
2197 BootInformationStatusStartProductSpecific = 0xC0\r
2198} MISC_BOOT_INFORMATION_STATUS_DATA_TYPE;\r
2199\r
4135253b 2200///\r
af2dc6a7 2201/// System Boot Information (Type 32).\r
4135253b 2202///\r
9095d37b
LG
2203/// The client system firmware, e.g. BIOS, communicates the System Boot Status to the\r
2204/// client's Pre-boot Execution Environment (PXE) boot image or OS-present management\r
2205/// application via this structure. When used in the PXE environment, for example,\r
2206/// this code identifies the reason the PXE was initiated and can be used by boot-image\r
2207/// software to further automate an enterprise's PXE sessions. For example, an enterprise\r
2208/// could choose to automatically download a hardware-diagnostic image to a client whose\r
98cb9ae8 2209/// reason code indicated either a firmware- or operating system-detected hardware failure.\r
2210///\r
61ce5861 2211typedef struct {\r
98cb9ae8 2212 SMBIOS_STRUCTURE Hdr;\r
2213 UINT8 Reserved[6];\r
af2dc6a7 2214 UINT8 BootStatus; ///< The enumeration value from MISC_BOOT_INFORMATION_STATUS_DATA_TYPE.\r
61ce5861 2215} SMBIOS_TABLE_TYPE32;\r
2216\r
4135253b 2217///\r
af2dc6a7 2218/// 64-bit Memory Error Information (Type 33).\r
4135253b 2219///\r
9095d37b 2220/// This structure describes an error within a Physical Memory Array,\r
98cb9ae8 2221/// when the error address is above 4G (0xFFFFFFFF).\r
9095d37b 2222///\r
61ce5861 2223typedef struct {\r
98cb9ae8 2224 SMBIOS_STRUCTURE Hdr;\r
af2dc6a7 2225 UINT8 ErrorType; ///< The enumeration value from MEMORY_ERROR_TYPE.\r
2226 UINT8 ErrorGranularity; ///< The enumeration value from MEMORY_ERROR_GRANULARITY.\r
2227 UINT8 ErrorOperation; ///< The enumeration value from MEMORY_ERROR_OPERATION.\r
98cb9ae8 2228 UINT32 VendorSyndrome;\r
2229 UINT64 MemoryArrayErrorAddress;\r
2230 UINT64 DeviceErrorAddress;\r
2231 UINT32 ErrorResolution;\r
61ce5861 2232} SMBIOS_TABLE_TYPE33;\r
2233\r
98cb9ae8 2234///\r
9095d37b 2235/// Management Device - Type.\r
98cb9ae8 2236///\r
2237typedef enum {\r
2238 ManagementDeviceTypeOther = 0x01,\r
2239 ManagementDeviceTypeUnknown = 0x02,\r
2240 ManagementDeviceTypeLm75 = 0x03,\r
2241 ManagementDeviceTypeLm78 = 0x04,\r
2242 ManagementDeviceTypeLm79 = 0x05,\r
2243 ManagementDeviceTypeLm80 = 0x06,\r
2244 ManagementDeviceTypeLm81 = 0x07,\r
2245 ManagementDeviceTypeAdm9240 = 0x08,\r
2246 ManagementDeviceTypeDs1780 = 0x09,\r
2247 ManagementDeviceTypeMaxim1617 = 0x0A,\r
2248 ManagementDeviceTypeGl518Sm = 0x0B,\r
2249 ManagementDeviceTypeW83781D = 0x0C,\r
2250 ManagementDeviceTypeHt82H791 = 0x0D\r
2251} MISC_MANAGEMENT_DEVICE_TYPE;\r
2252\r
2253///\r
9095d37b 2254/// Management Device - Address Type.\r
98cb9ae8 2255///\r
2256typedef enum {\r
2257 ManagementDeviceAddressTypeOther = 0x01,\r
2258 ManagementDeviceAddressTypeUnknown = 0x02,\r
2259 ManagementDeviceAddressTypeIOPort = 0x03,\r
2260 ManagementDeviceAddressTypeMemory = 0x04,\r
2261 ManagementDeviceAddressTypeSmbus = 0x05\r
2262} MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE;\r
2263\r
4135253b 2264///\r
af2dc6a7 2265/// Management Device (Type 34).\r
4135253b 2266///\r
9095d37b 2267/// The information in this structure defines the attributes of a Management Device.\r
98cb9ae8 2268/// A Management Device might control one or more fans or voltage, current, or temperature\r
2269/// probes as defined by one or more Management Device Component structures.\r
2270///\r
61ce5861 2271typedef struct {\r
98cb9ae8 2272 SMBIOS_STRUCTURE Hdr;\r
2273 SMBIOS_TABLE_STRING Description;\r
af2dc6a7 2274 UINT8 Type; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_TYPE.\r
98cb9ae8 2275 UINT32 Address;\r
af2dc6a7 2276 UINT8 AddressType; ///< The enumeration value from MISC_MANAGEMENT_DEVICE_ADDRESS_TYPE.\r
61ce5861 2277} SMBIOS_TABLE_TYPE34;\r
2278\r
4135253b 2279///\r
2280/// Management Device Component (Type 35)\r
2281///\r
9095d37b
LG
2282/// This structure associates a cooling device or environmental probe with structures\r
2283/// that define the controlling hardware device and (optionally) the component's thresholds.\r
98cb9ae8 2284///\r
61ce5861 2285typedef struct {\r
2286 SMBIOS_STRUCTURE Hdr;\r
2287 SMBIOS_TABLE_STRING Description;\r
2288 UINT16 ManagementDeviceHandle;\r
2289 UINT16 ComponentHandle;\r
2290 UINT16 ThresholdHandle;\r
2291} SMBIOS_TABLE_TYPE35;\r
2292\r
4135253b 2293///\r
af2dc6a7 2294/// Management Device Threshold Data (Type 36).\r
4135253b 2295///\r
9095d37b
LG
2296/// The information in this structure defines threshold information for\r
2297/// a component (probe or cooling-unit) contained within a Management Device.\r
98cb9ae8 2298///\r
61ce5861 2299typedef struct {\r
2300 SMBIOS_STRUCTURE Hdr;\r
2301 UINT16 LowerThresholdNonCritical;\r
2302 UINT16 UpperThresholdNonCritical;\r
2303 UINT16 LowerThresholdCritical;\r
2304 UINT16 UpperThresholdCritical;\r
2305 UINT16 LowerThresholdNonRecoverable;\r
2306 UINT16 UpperThresholdNonRecoverable;\r
2307} SMBIOS_TABLE_TYPE36;\r
2308\r
bf7ea009 2309///\r
af2dc6a7 2310/// Memory Channel Entry.\r
bf7ea009 2311///\r
61ce5861 2312typedef struct {\r
2313 UINT8 DeviceLoad;\r
2314 UINT16 DeviceHandle;\r
2315} MEMORY_DEVICE;\r
2316\r
98cb9ae8 2317///\r
af2dc6a7 2318/// Memory Channel - Channel Type.\r
98cb9ae8 2319///\r
2320typedef enum {\r
2321 MemoryChannelTypeOther = 0x01,\r
2322 MemoryChannelTypeUnknown = 0x02,\r
2323 MemoryChannelTypeRambus = 0x03,\r
2324 MemoryChannelTypeSyncLink = 0x04\r
2325} MEMORY_CHANNEL_TYPE;\r
2326\r
4135253b 2327///\r
2328/// Memory Channel (Type 37)\r
2329///\r
98cb9ae8 2330/// The information in this structure provides the correlation between a Memory Channel\r
9095d37b 2331/// and its associated Memory Devices. Each device presents one or more loads to the channel.\r
af2dc6a7 2332/// The sum of all device loads cannot exceed the channel's defined maximum.\r
98cb9ae8 2333///\r
61ce5861 2334typedef struct {\r
2335 SMBIOS_STRUCTURE Hdr;\r
2336 UINT8 ChannelType;\r
2337 UINT8 MaximumChannelLoad;\r
2338 UINT8 MemoryDeviceCount;\r
2339 MEMORY_DEVICE MemoryDevice[1];\r
2340} SMBIOS_TABLE_TYPE37;\r
2341\r
98cb9ae8 2342///\r
2343/// IPMI Device Information - BMC Interface Type\r
2344///\r
2345typedef enum {\r
2346 IPMIDeviceInfoInterfaceTypeUnknown = 0x00,\r
af2dc6a7 2347 IPMIDeviceInfoInterfaceTypeKCS = 0x01, ///< The Keyboard Controller Style.\r
2348 IPMIDeviceInfoInterfaceTypeSMIC = 0x02, ///< The Server Management Interface Chip.\r
2349 IPMIDeviceInfoInterfaceTypeBT = 0x03, ///< The Block Transfer\r
cfcca3c2 2350 IPMIDeviceInfoInterfaceTypeSSIF = 0x04 ///< SMBus System Interface\r
98cb9ae8 2351} BMC_INTERFACE_TYPE;\r
2352\r
4135253b 2353///\r
af2dc6a7 2354/// IPMI Device Information (Type 38).\r
4135253b 2355///\r
7ddba202 2356/// The information in this structure defines the attributes of an\r
98cb9ae8 2357/// Intelligent Platform Management Interface (IPMI) Baseboard Management Controller (BMC).\r
7ddba202
SZ
2358///\r
2359/// The Type 42 structure can also be used to describe a physical management controller\r
2360/// host interface and one or more protocols that share that interface. If IPMI is not\r
2361/// shared with other protocols, either the Type 38 or Type 42 structures can be used.\r
2362/// Providing Type 38 is recommended for backward compatibility.\r
2363///\r
61ce5861 2364typedef struct {\r
2365 SMBIOS_STRUCTURE Hdr;\r
af2dc6a7 2366 UINT8 InterfaceType; ///< The enumeration value from BMC_INTERFACE_TYPE.\r
61ce5861 2367 UINT8 IPMISpecificationRevision;\r
2368 UINT8 I2CSlaveAddress;\r
2369 UINT8 NVStorageDeviceAddress;\r
2370 UINT64 BaseAddress;\r
2371 UINT8 BaseAddressModifier_InterruptInfo;\r
2372 UINT8 InterruptNumber;\r
2373} SMBIOS_TABLE_TYPE38;\r
2374\r
98cb9ae8 2375///\r
af2dc6a7 2376/// System Power Supply - Power Supply Characteristics.\r
98cb9ae8 2377///\r
2378typedef struct {\r
2379 UINT16 PowerSupplyHotReplaceable:1;\r
2380 UINT16 PowerSupplyPresent :1;\r
2381 UINT16 PowerSupplyUnplugged :1;\r
2382 UINT16 InputVoltageRangeSwitch :4;\r
2383 UINT16 PowerSupplyStatus :3;\r
2384 UINT16 PowerSupplyType :4;\r
2385 UINT16 Reserved :2;\r
2386} SYS_POWER_SUPPLY_CHARACTERISTICS;\r
2387\r
4135253b 2388///\r
af2dc6a7 2389/// System Power Supply (Type 39).\r
4135253b 2390///\r
7ddba202
SZ
2391/// This structure identifies attributes of a system power supply. One instance\r
2392/// of this record is present for each possible power supply in a system.\r
98cb9ae8 2393///\r
61ce5861 2394typedef struct {\r
98cb9ae8 2395 SMBIOS_STRUCTURE Hdr;\r
2396 UINT8 PowerUnitGroup;\r
2397 SMBIOS_TABLE_STRING Location;\r
2398 SMBIOS_TABLE_STRING DeviceName;\r
2399 SMBIOS_TABLE_STRING Manufacturer;\r
2400 SMBIOS_TABLE_STRING SerialNumber;\r
2401 SMBIOS_TABLE_STRING AssetTagNumber;\r
2402 SMBIOS_TABLE_STRING ModelPartNumber;\r
2403 SMBIOS_TABLE_STRING RevisionLevel;\r
2404 UINT16 MaxPowerCapacity;\r
2405 SYS_POWER_SUPPLY_CHARACTERISTICS PowerSupplyCharacteristics;\r
2406 UINT16 InputVoltageProbeHandle;\r
2407 UINT16 CoolingDeviceHandle;\r
2408 UINT16 InputCurrentProbeHandle;\r
61ce5861 2409} SMBIOS_TABLE_TYPE39;\r
2410\r
bf7ea009 2411///\r
9095d37b 2412/// Additional Information Entry Format.\r
bf7ea009 2413///\r
9095d37b
LG
2414typedef struct {\r
2415 UINT8 EntryLength;\r
61ce5861 2416 UINT16 ReferencedHandle;\r
2417 UINT8 ReferencedOffset;\r
2418 SMBIOS_TABLE_STRING EntryString;\r
2419 UINT8 Value[1];\r
cfcca3c2 2420} ADDITIONAL_INFORMATION_ENTRY;\r
61ce5861 2421\r
4135253b 2422///\r
af2dc6a7 2423/// Additional Information (Type 40).\r
4135253b 2424///\r
9095d37b
LG
2425/// This structure is intended to provide additional information for handling unspecified\r
2426/// enumerated values and interim field updates in another structure.\r
98cb9ae8 2427///\r
61ce5861 2428typedef struct {\r
2429 SMBIOS_STRUCTURE Hdr;\r
2430 UINT8 NumberOfAdditionalInformationEntries;\r
9095d37b 2431 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries[1];\r
61ce5861 2432} SMBIOS_TABLE_TYPE40;\r
2433\r
98cb9ae8 2434///\r
af2dc6a7 2435/// Onboard Devices Extended Information - Onboard Device Types.\r
98cb9ae8 2436///\r
2437typedef enum{\r
2438 OnBoardDeviceExtendedTypeOther = 0x01,\r
2439 OnBoardDeviceExtendedTypeUnknown = 0x02,\r
2440 OnBoardDeviceExtendedTypeVideo = 0x03,\r
2441 OnBoardDeviceExtendedTypeScsiController = 0x04,\r
2442 OnBoardDeviceExtendedTypeEthernet = 0x05,\r
2443 OnBoardDeviceExtendedTypeTokenRing = 0x06,\r
2444 OnBoardDeviceExtendedTypeSound = 0x07,\r
2445 OnBoardDeviceExtendedTypePATAController = 0x08,\r
2446 OnBoardDeviceExtendedTypeSATAController = 0x09,\r
2447 OnBoardDeviceExtendedTypeSASController = 0x0A\r
2448} ONBOARD_DEVICE_EXTENDED_INFO_TYPE;\r
2449\r
4135253b 2450///\r
af2dc6a7 2451/// Onboard Devices Extended Information (Type 41).\r
4135253b 2452///\r
9095d37b
LG
2453/// The information in this structure defines the attributes of devices that\r
2454/// are onboard (soldered onto) a system element, usually the baseboard.\r
2455/// In general, an entry in this table implies that the BIOS has some level of\r
2456/// control over the enabling of the associated device for use by the system.\r
98cb9ae8 2457///\r
61ce5861 2458typedef struct {\r
98cb9ae8 2459 SMBIOS_STRUCTURE Hdr;\r
2460 SMBIOS_TABLE_STRING ReferenceDesignation;\r
af2dc6a7 2461 UINT8 DeviceType; ///< The enumeration value from ONBOARD_DEVICE_EXTENDED_INFO_TYPE\r
98cb9ae8 2462 UINT8 DeviceTypeInstance;\r
2463 UINT16 SegmentGroupNum;\r
2464 UINT8 BusNum;\r
7ddba202 2465 UINT8 DevFuncNum;\r
61ce5861 2466} SMBIOS_TABLE_TYPE41;\r
2467\r
043026ac
SZ
2468///\r
2469/// Management Controller Host Interface - Interface Types.\r
2470/// 00h - 3Fh: MCTP Host Interfaces\r
2471///\r
2472typedef enum{\r
2473 MCHostInterfaceTypeNetworkHostInterface = 0x40,\r
2474 MCHostInterfaceTypeOemDefined = 0xF0\r
2475} MC_HOST_INTERFACE_TYPE;\r
2476\r
2477///\r
2478/// Management Controller Host Interface - Protocol Types.\r
2479///\r
2480typedef enum{\r
2481 MCHostInterfaceProtocolTypeIPMI = 0x02,\r
2482 MCHostInterfaceProtocolTypeMCTP = 0x03,\r
2483 MCHostInterfaceProtocolTypeRedfishOverIP = 0x04,\r
2484 MCHostInterfaceProtocolTypeOemDefined = 0xF0\r
2485} MC_HOST_INTERFACE_PROTOCOL_TYPE;\r
2486\r
7ddba202
SZ
2487///\r
2488/// Management Controller Host Interface (Type 42).\r
2489///\r
2490/// The information in this structure defines the attributes of a Management\r
2491/// Controller Host Interface that is not discoverable by "Plug and Play" mechanisms.\r
2492///\r
2493/// Type 42 should be used for management controller host interfaces that use protocols\r
2494/// other than IPMI or that use multiple protocols on a single host interface type.\r
2495///\r
2496/// This structure should also be provided if IPMI is shared with other protocols\r
2497/// over the same interface hardware. If IPMI is not shared with other protocols,\r
2498/// either the Type 38 or Type 42 structures can be used. Providing Type 38 is\r
2499/// recommended for backward compatibility. The structures are not required to\r
2500/// be mutually exclusive. Type 38 and Type 42 structures may be implemented\r
2501/// simultaneously to provide backward compatibility with IPMI applications or drivers\r
2502/// that do not yet recognize the Type 42 structure.\r
2503///\r
2504typedef struct {\r
2505 SMBIOS_STRUCTURE Hdr;\r
cfcca3c2
SZ
2506 UINT8 InterfaceType; ///< The enumeration value from MC_HOST_INTERFACE_TYPE\r
2507 UINT8 InterfaceTypeSpecificDataLength;\r
2508 UINT8 InterfaceTypeSpecificData[4]; ///< This field has a minimum of four bytes\r
7ddba202
SZ
2509} SMBIOS_TABLE_TYPE42;\r
2510\r
713e4b00
LA
2511///\r
2512/// TPM Device (Type 43).\r
2513///\r
2514typedef struct {\r
2515 SMBIOS_STRUCTURE Hdr;\r
2516 UINT8 VendorID[4];\r
2517 UINT8 MajorSpecVersion;\r
2518 UINT8 MinorSpecVersion;\r
2519 UINT32 FirmwareVersion1;\r
2520 UINT32 FirmwareVersion2;\r
2521 SMBIOS_TABLE_STRING Description;\r
2522 UINT64 Characteristics;\r
2523 UINT32 OemDefined;\r
2524} SMBIOS_TABLE_TYPE43;\r
2525\r
4135253b 2526///\r
2527/// Inactive (Type 126)\r
2528///\r
61ce5861 2529typedef struct {\r
2530 SMBIOS_STRUCTURE Hdr;\r
2531} SMBIOS_TABLE_TYPE126;\r
2532\r
4135253b 2533///\r
2534/// End-of-Table (Type 127)\r
2535///\r
61ce5861 2536typedef struct {\r
2537 SMBIOS_STRUCTURE Hdr;\r
2538} SMBIOS_TABLE_TYPE127;\r
2539\r
4135253b 2540///\r
af2dc6a7 2541/// Union of all the possible SMBIOS record types.\r
4135253b 2542///\r
61ce5861 2543typedef union {\r
2544 SMBIOS_STRUCTURE *Hdr;\r
2545 SMBIOS_TABLE_TYPE0 *Type0;\r
2546 SMBIOS_TABLE_TYPE1 *Type1;\r
2547 SMBIOS_TABLE_TYPE2 *Type2;\r
2548 SMBIOS_TABLE_TYPE3 *Type3;\r
2549 SMBIOS_TABLE_TYPE4 *Type4;\r
2550 SMBIOS_TABLE_TYPE5 *Type5;\r
2551 SMBIOS_TABLE_TYPE6 *Type6;\r
2552 SMBIOS_TABLE_TYPE7 *Type7;\r
2553 SMBIOS_TABLE_TYPE8 *Type8;\r
2554 SMBIOS_TABLE_TYPE9 *Type9;\r
2555 SMBIOS_TABLE_TYPE10 *Type10;\r
2556 SMBIOS_TABLE_TYPE11 *Type11;\r
2557 SMBIOS_TABLE_TYPE12 *Type12;\r
2558 SMBIOS_TABLE_TYPE13 *Type13;\r
2559 SMBIOS_TABLE_TYPE14 *Type14;\r
2560 SMBIOS_TABLE_TYPE15 *Type15;\r
2561 SMBIOS_TABLE_TYPE16 *Type16;\r
2562 SMBIOS_TABLE_TYPE17 *Type17;\r
2563 SMBIOS_TABLE_TYPE18 *Type18;\r
2564 SMBIOS_TABLE_TYPE19 *Type19;\r
2565 SMBIOS_TABLE_TYPE20 *Type20;\r
2566 SMBIOS_TABLE_TYPE21 *Type21;\r
2567 SMBIOS_TABLE_TYPE22 *Type22;\r
2568 SMBIOS_TABLE_TYPE23 *Type23;\r
2569 SMBIOS_TABLE_TYPE24 *Type24;\r
2570 SMBIOS_TABLE_TYPE25 *Type25;\r
2571 SMBIOS_TABLE_TYPE26 *Type26;\r
2572 SMBIOS_TABLE_TYPE27 *Type27;\r
2573 SMBIOS_TABLE_TYPE28 *Type28;\r
2574 SMBIOS_TABLE_TYPE29 *Type29;\r
2575 SMBIOS_TABLE_TYPE30 *Type30;\r
2576 SMBIOS_TABLE_TYPE31 *Type31;\r
2577 SMBIOS_TABLE_TYPE32 *Type32;\r
2578 SMBIOS_TABLE_TYPE33 *Type33;\r
2579 SMBIOS_TABLE_TYPE34 *Type34;\r
2580 SMBIOS_TABLE_TYPE35 *Type35;\r
2581 SMBIOS_TABLE_TYPE36 *Type36;\r
2582 SMBIOS_TABLE_TYPE37 *Type37;\r
2583 SMBIOS_TABLE_TYPE38 *Type38;\r
2584 SMBIOS_TABLE_TYPE39 *Type39;\r
2585 SMBIOS_TABLE_TYPE40 *Type40;\r
2586 SMBIOS_TABLE_TYPE41 *Type41;\r
884f9295 2587 SMBIOS_TABLE_TYPE42 *Type42;\r
713e4b00 2588 SMBIOS_TABLE_TYPE43 *Type43;\r
61ce5861 2589 SMBIOS_TABLE_TYPE126 *Type126;\r
2590 SMBIOS_TABLE_TYPE127 *Type127;\r
2591 UINT8 *Raw;\r
2592} SMBIOS_STRUCTURE_POINTER;\r
2593\r
766f4bc1 2594#pragma pack()\r
2595\r
a7ed1e2e 2596#endif\r