3 Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
4 This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
20 #ifndef _SMBIOS_TABLE_H_
21 #define _SMBIOS_TABLE_H_
26 // Reference SMBIOS 2.6, chapter 3.1.2.
27 // For v2.1 and later, handle values in the range 0FF00h to 0FFFFh are reserved for
28 // use by this specification.
30 #define SMBIOS_HANDLE_RESERVED_BEGIN 0xFF00
33 // Reference SMBIOS 2.6, chapter 3.1.3
34 // Each text string is limited to 64 significant characters due to system MIF limitations
36 #define SMBIOS_STRING_MAX_LENGTH 64
39 // Inactive type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.43.
40 // Upper-level software that interprets the SMBIOS structure-table should bypass an
41 // Inactive structure just like a structure type that the software does not recognize.
43 #define SMBIOS_TYPE_INACTIVE 0x007E
46 // End-of-table type is added from SMBIOS 2.2. Reference SMBIOS 2.6, chapter 3.3.44.
47 // The end-of-table indicator is used in the last physical structure in a table
49 #define SMBIOS_TYPE_END_OF_TABLE 0x007F
53 typedef UINT8 SMBIOS_TABLE_STRING
;
56 UINT8 AnchorString
[4];
57 UINT8 EntryPointStructureChecksum
;
58 UINT8 EntryPointLength
;
61 UINT16 MaxStructureSize
;
62 UINT8 EntryPointRevision
;
63 UINT8 FormattedArea
[5];
64 UINT8 IntermediateAnchorString
[5];
65 UINT8 IntermediateChecksum
;
68 UINT16 NumberOfSmbiosStructures
;
69 UINT8 SmbiosBcdRevision
;
70 } SMBIOS_TABLE_STRUCTURE
;
76 } SMBIOS_TABLE_HEADER
;
79 SMBIOS_TABLE_HEADER Hdr
;
80 SMBIOS_TABLE_STRING Vendor
;
81 SMBIOS_TABLE_STRING BiosVersion
;
83 SMBIOS_TABLE_STRING BiosReleaseDate
;
85 UINT64 BiosCharacteristics
;
86 UINT8 BIOSCharacteristicsExtensionBytes
[2];
87 UINT8 SystemBiosMajorRelease
;
88 UINT8 SystemBiosMinorRelease
;
89 UINT8 EmbeddedControllerFirmwareMajorRelease
;
90 UINT8 EmbeddedControllerFirmwareMinorRelease
;
94 SMBIOS_TABLE_HEADER Hdr
;
95 SMBIOS_TABLE_STRING Manufacturer
;
96 SMBIOS_TABLE_STRING ProductName
;
97 SMBIOS_TABLE_STRING Version
;
98 SMBIOS_TABLE_STRING SerialNumber
;
101 SMBIOS_TABLE_STRING SKUNumber
;
102 SMBIOS_TABLE_STRING Family
;
103 } SMBIOS_TABLE_TYPE1
;
106 SMBIOS_TABLE_HEADER Hdr
;
107 SMBIOS_TABLE_STRING Manufacturer
;
108 SMBIOS_TABLE_STRING ProductName
;
109 SMBIOS_TABLE_STRING Version
;
110 SMBIOS_TABLE_STRING SerialNumber
;
111 SMBIOS_TABLE_STRING AssetTag
;
113 SMBIOS_TABLE_STRING LocationInChassis
;
114 UINT16 ChassisHandle
;
116 UINT8 NumberOfContainedObjectHandles
;
117 UINT16 ContainedObjectHandles
[1];
118 } SMBIOS_TABLE_TYPE2
;
121 UINT8 ContainedElementType
;
122 UINT8 ContainedElementMinimum
;
123 UINT8 ContainedElementMaximum
;
127 SMBIOS_TABLE_HEADER Hdr
;
128 SMBIOS_TABLE_STRING Manufacturer
;
130 SMBIOS_TABLE_STRING Version
;
131 SMBIOS_TABLE_STRING SerialNumber
;
132 SMBIOS_TABLE_STRING AssetTag
;
134 UINT8 PowerSupplyState
;
136 UINT8 SecurityStatus
;
139 UINT8 NumberofPowerCords
;
140 UINT8 ContainedElementCount
;
141 UINT8 ContainedElementRecordLength
;
142 CONTAINED_ELEMENT ContainedElements
[1];
143 } SMBIOS_TABLE_TYPE3
;
146 SMBIOS_TABLE_HEADER Hdr
;
149 UINT8 ProcessorFamily
;
150 SMBIOS_TABLE_STRING ProcessorManufacture
;
151 UINT8 ProcessorId
[8];
152 SMBIOS_TABLE_STRING ProcessorVersion
;
154 UINT16 ExternalClock
;
158 UINT8 ProcessorUpgrade
;
159 UINT16 L1CacheHandle
;
160 UINT16 L2CacheHandle
;
161 UINT16 L3CacheHandle
;
162 SMBIOS_TABLE_STRING SerialNumber
;
163 SMBIOS_TABLE_STRING AssetTag
;
164 SMBIOS_TABLE_STRING PartNumber
;
166 // Add for smbios 2.5
169 UINT8 EnabledCoreCount
;
171 UINT16 ProcessorCharacteristics
;
173 // Add for smbios 2.6
175 UINT16 ProcessorFamily2
;
176 } SMBIOS_TABLE_TYPE4
;
179 SMBIOS_TABLE_HEADER Hdr
;
180 UINT8 ErrDetectMethod
;
181 UINT8 ErrCorrectCapability
;
182 UINT8 SupportInterleave
;
183 UINT8 CurrentInterleave
;
184 UINT8 MaxMemoryModuleSize
;
186 UINT16 SupportMemoryType
;
187 UINT8 MemoryModuleVoltage
;
188 UINT8 AssociatedMemorySlotNum
;
189 UINT16 MemoryModuleConfigHandles
[1];
190 // UINT8 EnableErrCorrectCapabilities;
191 } SMBIOS_TABLE_TYPE5
;
194 SMBIOS_TABLE_HEADER Hdr
;
195 SMBIOS_TABLE_STRING SocketDesignation
;
196 UINT8 BankConnections
;
198 UINT16 CurrentMemoryType
;
202 } SMBIOS_TABLE_TYPE6
;
205 SMBIOS_TABLE_HEADER Hdr
;
206 SMBIOS_TABLE_STRING SocketDesignation
;
207 UINT16 CacheConfiguration
;
208 UINT16 MaximumCacheSize
;
209 UINT16 InstalledSize
;
210 UINT16 SupportedSRAMType
;
211 UINT16 CurrentSRAMType
;
213 UINT8 ErrorCorrectionType
;
214 UINT8 SystemCacheType
;
216 } SMBIOS_TABLE_TYPE7
;
219 SMBIOS_TABLE_HEADER Hdr
;
220 SMBIOS_TABLE_STRING InternalReferenceDesignator
;
221 UINT8 InternalConnectorType
;
222 SMBIOS_TABLE_STRING ExternalReferenceDesignator
;
223 UINT8 ExternalConnectorType
;
225 } SMBIOS_TABLE_TYPE8
;
228 SMBIOS_TABLE_HEADER Hdr
;
229 SMBIOS_TABLE_STRING SlotDesignation
;
231 UINT8 SlotDataBusWidth
;
235 UINT8 SlotCharacteristics1
;
236 UINT8 SlotCharacteristics2
;
238 // Add for smbios 2.6
240 UINT16 SegmentGroupNum
;
243 } SMBIOS_TABLE_TYPE9
;
247 SMBIOS_TABLE_STRING DescriptionString
;
251 SMBIOS_TABLE_HEADER Hdr
;
252 DEVICE_STRUCT Device
[1];
253 } SMBIOS_TABLE_TYPE10
;
256 SMBIOS_TABLE_HEADER Hdr
;
258 } SMBIOS_TABLE_TYPE11
;
261 SMBIOS_TABLE_HEADER Hdr
;
263 } SMBIOS_TABLE_TYPE12
;
266 SMBIOS_TABLE_HEADER Hdr
;
267 UINT8 InstallableLanguages
;
270 SMBIOS_TABLE_STRING CurrentLanguages
;
271 } SMBIOS_TABLE_TYPE13
;
279 SMBIOS_TABLE_HEADER Hdr
;
280 SMBIOS_TABLE_STRING GroupName
;
281 GROUP_STRUCT Group
[1];
282 } SMBIOS_TABLE_TYPE14
;
286 UINT8 DataFormatType
;
290 SMBIOS_TABLE_HEADER Hdr
;
291 UINT16 LogAreaLength
;
292 UINT16 LogHeaderStartOffset
;
293 UINT16 LogDataStartOffset
;
296 UINT32 LogChangeToken
;
297 UINT32 AccessMethodAddress
;
298 UINT8 LogHeaderFormat
;
299 UINT8 NumberOfSupportedLogTypeDescriptors
;
300 UINT8 LengthOfLogTypeDescriptor
;
301 EVENT_LOG_TYPE EventLogTypeDescriptors
[1];
302 } SMBIOS_TABLE_TYPE15
;
305 SMBIOS_TABLE_HEADER Hdr
;
308 UINT8 MemoryErrorCorrection
;
309 UINT32 MaximumCapacity
;
310 UINT16 MemoryErrorInformationHandle
;
311 UINT16 NumberOfMemoryDevices
;
312 } SMBIOS_TABLE_TYPE16
;
315 SMBIOS_TABLE_HEADER Hdr
;
316 UINT16 MemoryArrayHandle
;
317 UINT16 MemoryErrorInformationHandle
;
323 SMBIOS_TABLE_STRING DeviceLocator
;
324 SMBIOS_TABLE_STRING BankLocator
;
328 SMBIOS_TABLE_STRING Manufacturer
;
329 SMBIOS_TABLE_STRING SerialNumber
;
330 SMBIOS_TABLE_STRING AssetTag
;
331 SMBIOS_TABLE_STRING PartNumber
;
333 // Add for smbios 2.6
336 } SMBIOS_TABLE_TYPE17
;
339 SMBIOS_TABLE_HEADER Hdr
;
341 UINT8 ErrorGranularity
;
342 UINT8 ErrorOperation
;
343 UINT32 VendorSyndrome
;
344 UINT32 MemoryArrayErrorAddress
;
345 UINT32 DeviceErrorAddress
;
346 UINT32 ErrorResolution
;
347 } SMBIOS_TABLE_TYPE18
;
350 SMBIOS_TABLE_HEADER Hdr
;
351 UINT32 StartingAddress
;
352 UINT32 EndingAddress
;
353 UINT16 MemoryArrayHandle
;
354 UINT8 PartitionWidth
;
355 } SMBIOS_TABLE_TYPE19
;
358 SMBIOS_TABLE_HEADER Hdr
;
359 UINT32 StartingAddress
;
360 UINT32 EndingAddress
;
361 UINT16 MemoryDeviceHandle
;
362 UINT16 MemoryArrayMappedAddressHandle
;
363 UINT8 PartitionRowPosition
;
364 UINT8 InterleavePosition
;
365 UINT8 InterleavedDataDepth
;
366 } SMBIOS_TABLE_TYPE20
;
369 SMBIOS_TABLE_HEADER Hdr
;
372 UINT8 NumberOfButtons
;
373 } SMBIOS_TABLE_TYPE21
;
376 SMBIOS_TABLE_HEADER Hdr
;
377 SMBIOS_TABLE_STRING Location
;
378 SMBIOS_TABLE_STRING Manufacturer
;
379 SMBIOS_TABLE_STRING ManufactureDate
;
380 SMBIOS_TABLE_STRING SerialNumber
;
381 SMBIOS_TABLE_STRING DeviceName
;
382 UINT8 DeviceChemistry
;
383 UINT16 DeviceCapacity
;
384 UINT16 DesignVoltage
;
385 SMBIOS_TABLE_STRING SBDSVersionNumber
;
386 UINT8 MaximumErrorInBatteryData
;
387 UINT16 SBDSSerialNumber
;
388 UINT16 SBDSManufactureDate
;
389 SMBIOS_TABLE_STRING SBDSDeviceChemistry
;
390 UINT8 DesignCapacityMultiplier
;
392 } SMBIOS_TABLE_TYPE22
;
395 SMBIOS_TABLE_HEADER Hdr
;
399 UINT16 TimerInterval
;
401 } SMBIOS_TABLE_TYPE23
;
404 SMBIOS_TABLE_HEADER Hdr
;
405 UINT8 HardwareSecuritySettings
;
406 } SMBIOS_TABLE_TYPE24
;
409 SMBIOS_TABLE_HEADER Hdr
;
410 UINT8 NextScheduledPowerOnMonth
;
411 UINT8 NextScheduledPowerOnDayOfMonth
;
412 UINT8 NextScheduledPowerOnHour
;
413 UINT8 NextScheduledPowerOnMinute
;
414 UINT8 NextScheduledPowerOnSecond
;
415 } SMBIOS_TABLE_TYPE25
;
418 SMBIOS_TABLE_HEADER Hdr
;
419 SMBIOS_TABLE_STRING Description
;
420 UINT8 LocationAndStatus
;
428 } SMBIOS_TABLE_TYPE26
;
431 SMBIOS_TABLE_HEADER Hdr
;
432 UINT16 TemperatureProbeHandle
;
433 UINT8 DeviceTypeAndStatus
;
434 UINT8 CoolingUnitGroup
;
437 } SMBIOS_TABLE_TYPE27
;
440 SMBIOS_TABLE_HEADER Hdr
;
441 SMBIOS_TABLE_STRING Description
;
442 UINT8 LocationAndStatus
;
450 } SMBIOS_TABLE_TYPE28
;
453 SMBIOS_TABLE_HEADER Hdr
;
454 SMBIOS_TABLE_STRING Description
;
455 UINT8 LocationAndStatus
;
463 } SMBIOS_TABLE_TYPE29
;
466 SMBIOS_TABLE_HEADER Hdr
;
467 SMBIOS_TABLE_STRING ManufacturerName
;
469 } SMBIOS_TABLE_TYPE30
;
472 SMBIOS_TABLE_HEADER Hdr
;
480 } SMBIOS_TABLE_TYPE31
;
483 SMBIOS_TABLE_HEADER Hdr
;
486 } SMBIOS_TABLE_TYPE32
;
489 SMBIOS_TABLE_HEADER Hdr
;
491 UINT8 ErrorGranularity
;
492 UINT8 ErrorOperation
;
493 UINT32 VendorSyndrome
;
494 UINT64 MemoryArrayErrorAddress
;
495 UINT64 DeviceErrorAddress
;
496 UINT32 ErrorResolution
;
497 } SMBIOS_TABLE_TYPE33
;
500 SMBIOS_TABLE_HEADER Hdr
;
501 SMBIOS_TABLE_STRING Description
;
505 } SMBIOS_TABLE_TYPE34
;
508 SMBIOS_TABLE_HEADER Hdr
;
509 SMBIOS_TABLE_STRING Description
;
510 UINT16 ManagementDeviceHandle
;
511 UINT16 ComponentHandle
;
512 UINT16 ThresholdHandle
;
513 } SMBIOS_TABLE_TYPE35
;
516 SMBIOS_TABLE_HEADER Hdr
;
517 UINT16 LowerThresholdNonCritical
;
518 UINT16 UpperThresholdNonCritical
;
519 UINT16 LowerThresholdCritical
;
520 UINT16 UpperThresholdCritical
;
521 UINT16 LowerThresholdNonRecoverable
;
522 UINT16 UpperThresholdNonRecoverable
;
523 } SMBIOS_TABLE_TYPE36
;
531 SMBIOS_TABLE_HEADER Hdr
;
533 UINT8 MaximumChannelLoad
;
534 UINT8 MemoryDeviceCount
;
535 MEMORY_DEVICE MemoryDevice
[1];
536 } SMBIOS_TABLE_TYPE37
;
539 SMBIOS_TABLE_HEADER Hdr
;
541 UINT8 IPMISpecificationRevision
;
542 UINT8 I2CSlaveAddress
;
543 UINT8 NVStorageDeviceAddress
;
545 UINT8 BaseAddressModifier_InterruptInfo
;
546 UINT8 InterruptNumber
;
547 } SMBIOS_TABLE_TYPE38
;
550 SMBIOS_TABLE_HEADER Hdr
;
551 UINT8 PowerUnitGroup
;
552 SMBIOS_TABLE_STRING Location
;
553 SMBIOS_TABLE_STRING DeviceName
;
554 SMBIOS_TABLE_STRING Manufacturer
;
555 SMBIOS_TABLE_STRING SerialNumber
;
556 SMBIOS_TABLE_STRING AssetTagNumber
;
557 SMBIOS_TABLE_STRING ModelPartNumber
;
558 SMBIOS_TABLE_STRING RevisionLevel
;
559 UINT16 MaxPowerCapacity
;
560 UINT16 PowerSupplyCharacteristics
;
561 UINT16 InputVoltageProbeHandle
;
562 UINT16 CoolingDeviceHandle
;
563 UINT16 InputCurrentProbeHandle
;
564 } SMBIOS_TABLE_TYPE39
;
567 // Add type 40 and type 41 for smbios 2.6
571 UINT16 ReferencedHandle
;
572 UINT8 ReferencedOffset
;
573 SMBIOS_TABLE_STRING EntryString
;
575 }ADDITIONAL_INFORMATION_ENTRY
;
578 SMBIOS_TABLE_HEADER Hdr
;
579 UINT8 NumberOfAdditionalInformationEntries
;
580 ADDITIONAL_INFORMATION_ENTRY AdditionalInfoEntries
[1];
581 } SMBIOS_TABLE_TYPE40
;
584 SMBIOS_TABLE_HEADER Hdr
;
585 SMBIOS_TABLE_STRING ReferenceDesignation
;
587 UINT8 DeviceTypeInstance
;
588 UINT16 SegmentGroupNum
;
591 } SMBIOS_TABLE_TYPE41
;
594 SMBIOS_TABLE_HEADER Hdr
;
595 } SMBIOS_TABLE_TYPE126
;
598 SMBIOS_TABLE_HEADER Hdr
;
599 } SMBIOS_TABLE_TYPE127
;
602 SMBIOS_TABLE_HEADER
*Hdr
;
603 SMBIOS_TABLE_TYPE0
*Type0
;
604 SMBIOS_TABLE_TYPE1
*Type1
;
605 SMBIOS_TABLE_TYPE2
*Type2
;
606 SMBIOS_TABLE_TYPE3
*Type3
;
607 SMBIOS_TABLE_TYPE4
*Type4
;
608 SMBIOS_TABLE_TYPE5
*Type5
;
609 SMBIOS_TABLE_TYPE6
*Type6
;
610 SMBIOS_TABLE_TYPE7
*Type7
;
611 SMBIOS_TABLE_TYPE8
*Type8
;
612 SMBIOS_TABLE_TYPE9
*Type9
;
613 SMBIOS_TABLE_TYPE10
*Type10
;
614 SMBIOS_TABLE_TYPE11
*Type11
;
615 SMBIOS_TABLE_TYPE12
*Type12
;
616 SMBIOS_TABLE_TYPE13
*Type13
;
617 SMBIOS_TABLE_TYPE14
*Type14
;
618 SMBIOS_TABLE_TYPE15
*Type15
;
619 SMBIOS_TABLE_TYPE16
*Type16
;
620 SMBIOS_TABLE_TYPE17
*Type17
;
621 SMBIOS_TABLE_TYPE18
*Type18
;
622 SMBIOS_TABLE_TYPE19
*Type19
;
623 SMBIOS_TABLE_TYPE20
*Type20
;
624 SMBIOS_TABLE_TYPE21
*Type21
;
625 SMBIOS_TABLE_TYPE22
*Type22
;
626 SMBIOS_TABLE_TYPE23
*Type23
;
627 SMBIOS_TABLE_TYPE24
*Type24
;
628 SMBIOS_TABLE_TYPE25
*Type25
;
629 SMBIOS_TABLE_TYPE26
*Type26
;
630 SMBIOS_TABLE_TYPE27
*Type27
;
631 SMBIOS_TABLE_TYPE28
*Type28
;
632 SMBIOS_TABLE_TYPE29
*Type29
;
633 SMBIOS_TABLE_TYPE30
*Type30
;
634 SMBIOS_TABLE_TYPE31
*Type31
;
635 SMBIOS_TABLE_TYPE32
*Type32
;
636 SMBIOS_TABLE_TYPE33
*Type33
;
637 SMBIOS_TABLE_TYPE34
*Type34
;
638 SMBIOS_TABLE_TYPE35
*Type35
;
639 SMBIOS_TABLE_TYPE36
*Type36
;
640 SMBIOS_TABLE_TYPE37
*Type37
;
641 SMBIOS_TABLE_TYPE38
*Type38
;
642 SMBIOS_TABLE_TYPE39
*Type39
;
643 SMBIOS_TABLE_TYPE40
*Type40
;
644 SMBIOS_TABLE_TYPE41
*Type41
;
645 SMBIOS_TABLE_TYPE126
*Type126
;
646 SMBIOS_TABLE_TYPE127
*Type127
;
648 } SMBIOS_STRUCTURE_POINTER
;