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