]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Include/IndustryStandard/Smbios.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Include / IndustryStandard / Smbios.h
1 /*++
2
3 Copyright (c) 2007, Intel Corporation
4 All rights reserved. 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
8
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.
11
12 Module Name:
13
14 Smbios.h
15
16 Abstract:
17
18 --*/
19
20 #ifndef _SMBIOS_TABLE_H_
21 #define _SMBIOS_TABLE_H_
22
23 #include "Tiano.h"
24
25 #pragma pack(1)
26
27 typedef UINT8 SMBIOS_TABLE_STRING;
28
29 typedef struct {
30 UINT8 AnchorString[4];
31 UINT8 EntryPointStructureChecksum;
32 UINT8 EntryPointLength;
33 UINT8 MajorVersion;
34 UINT8 MinorVersion;
35 UINT16 MaxStructureSize;
36 UINT8 EntryPointRevision;
37 UINT8 FormattedArea[5];
38 UINT8 IntermediateAnchorString[5];
39 UINT8 IntermediateChecksum;
40 UINT16 TableLength;
41 UINT32 TableAddress;
42 UINT16 NumberOfSmbiosStructures;
43 UINT8 SmbiosBcdRevision;
44 } SMBIOS_TABLE_STRUCTURE;
45
46 typedef struct {
47 UINT8 Type;
48 UINT8 Length;
49 UINT16 Handle;
50 } SMBIOS_TABLE_HEADER;
51
52 typedef struct {
53 SMBIOS_TABLE_HEADER Hdr;
54 SMBIOS_TABLE_STRING Vendor;
55 SMBIOS_TABLE_STRING BiosVersion;
56 UINT16 BiosSegment;
57 SMBIOS_TABLE_STRING BiosReleaseDate;
58 UINT8 BiosSize;
59 UINT64 BiosCharacteristics;
60 UINT8 BIOSCharacteristicsExtensionBytes[2];
61 UINT8 SystemBiosMajorRelease;
62 UINT8 SystemBiosMinorRelease;
63 UINT8 EmbeddedControllerFirmwareMajorRelease;
64 UINT8 EmbeddedControllerFirmwareMinorRelease;
65 } SMBIOS_TABLE_TYPE0;
66
67 typedef struct {
68 SMBIOS_TABLE_HEADER Hdr;
69 SMBIOS_TABLE_STRING Manufacturer;
70 SMBIOS_TABLE_STRING ProductName;
71 SMBIOS_TABLE_STRING Version;
72 SMBIOS_TABLE_STRING SerialNumber;
73 EFI_GUID Uuid;
74 UINT8 WakeUpType;
75 SMBIOS_TABLE_STRING SKUNumber;
76 SMBIOS_TABLE_STRING Family;
77 } SMBIOS_TABLE_TYPE1;
78
79 typedef struct {
80 SMBIOS_TABLE_HEADER Hdr;
81 SMBIOS_TABLE_STRING Manufacturer;
82 SMBIOS_TABLE_STRING ProductName;
83 SMBIOS_TABLE_STRING Version;
84 SMBIOS_TABLE_STRING SerialNumber;
85 SMBIOS_TABLE_STRING AssetTag;
86 UINT8 FeatureFlag;
87 SMBIOS_TABLE_STRING LocationInChassis;
88 UINT16 ChassisHandle;
89 UINT8 BoardType;
90 UINT8 NumberOfContainedObjectHandles;
91 UINT16 ContainedObjectHandles[1];
92 } SMBIOS_TABLE_TYPE2;
93
94 typedef struct {
95 UINT8 ContainedElementType;
96 UINT8 ContainedElementMinimum;
97 UINT8 ContainedElementMaximum;
98 } CONTAINED_ELEMENT;
99
100 typedef struct {
101 SMBIOS_TABLE_HEADER Hdr;
102 SMBIOS_TABLE_STRING Manufacturer;
103 UINT8 Type;
104 SMBIOS_TABLE_STRING Version;
105 SMBIOS_TABLE_STRING SerialNumber;
106 SMBIOS_TABLE_STRING AssetTag;
107 UINT8 BootupState;
108 UINT8 PowerSupplyState;
109 UINT8 ThermalState;
110 UINT8 SecurityStatus;
111 UINT8 OemDefined[4];
112 UINT8 Height;
113 UINT8 NumberofPowerCords;
114 UINT8 ContainedElementCount;
115 UINT8 ContainedElementRecordLength;
116 CONTAINED_ELEMENT ContainedElements[1];
117 } SMBIOS_TABLE_TYPE3;
118
119 typedef struct {
120 SMBIOS_TABLE_HEADER Hdr;
121 UINT8 Socket;
122 UINT8 ProcessorType;
123 UINT8 ProcessorFamily;
124 SMBIOS_TABLE_STRING ProcessorManufacture;
125 UINT8 ProcessorId[8];
126 SMBIOS_TABLE_STRING ProcessorVersion;
127 UINT8 Voltage;
128 UINT16 ExternalClock;
129 UINT16 MaxSpeed;
130 UINT16 CurrentSpeed;
131 UINT8 Status;
132 UINT8 ProcessorUpgrade;
133 UINT16 L1CacheHandle;
134 UINT16 L2CacheHandle;
135 UINT16 L3CacheHandle;
136 SMBIOS_TABLE_STRING SerialNumber;
137 SMBIOS_TABLE_STRING AssetTag;
138 SMBIOS_TABLE_STRING PartNumber;
139 } SMBIOS_TABLE_TYPE4;
140
141 typedef struct {
142 SMBIOS_TABLE_HEADER Hdr;
143 UINT8 ErrDetectMethod;
144 UINT8 ErrCorrectCapability;
145 UINT8 SupportInterleave;
146 UINT8 CurrentInterleave;
147 UINT8 MaxMemoryModuleSize;
148 UINT16 SupportSpeed;
149 UINT16 SupportMemoryType;
150 UINT8 MemoryModuleVoltage;
151 UINT8 AssociatedMemorySlotNum;
152 UINT16 MemoryModuleConfigHandles[1];
153 // UINT8 EnableErrCorrectCapabilities;
154 } SMBIOS_TABLE_TYPE5;
155
156 typedef struct {
157 SMBIOS_TABLE_HEADER Hdr;
158 SMBIOS_TABLE_STRING SocketDesignation;
159 UINT8 BankConnections;
160 UINT8 CurrentSpeed;
161 UINT16 CurrentMemoryType;
162 UINT8 InstalledSize;
163 UINT8 EnabledSize;
164 UINT8 ErrorStatus;
165 } SMBIOS_TABLE_TYPE6;
166
167 typedef struct {
168 SMBIOS_TABLE_HEADER Hdr;
169 SMBIOS_TABLE_STRING SocketDesignation;
170 UINT16 CacheConfiguration;
171 UINT16 MaximumCacheSize;
172 UINT16 InstalledSize;
173 UINT16 SupportedSRAMType;
174 UINT16 CurrentSRAMType;
175 UINT8 CacheSpeed;
176 UINT8 ErrorCorrectionType;
177 UINT8 SystemCacheType;
178 UINT8 Associativity;
179 } SMBIOS_TABLE_TYPE7;
180
181 typedef struct {
182 SMBIOS_TABLE_HEADER Hdr;
183 SMBIOS_TABLE_STRING InternalReferenceDesignator;
184 UINT8 InternalConnectorType;
185 SMBIOS_TABLE_STRING ExternalReferenceDesignator;
186 UINT8 ExternalConnectorType;
187 UINT8 PortType;
188 } SMBIOS_TABLE_TYPE8;
189
190 typedef struct {
191 SMBIOS_TABLE_HEADER Hdr;
192 SMBIOS_TABLE_STRING SlotDesignation;
193 UINT8 SlotType;
194 UINT8 SlotDataBusWidth;
195 UINT8 CurrentUsage;
196 UINT8 SlotLength;
197 UINT16 SlotID;
198 UINT8 SlotCharacteristics1;
199 UINT8 SlotCharacteristics2;
200 } SMBIOS_TABLE_TYPE9;
201
202 typedef struct {
203 UINT8 DeviceType;
204 SMBIOS_TABLE_STRING DescriptionString;
205 } DEVICE_STRUCT;
206
207 typedef struct {
208 SMBIOS_TABLE_HEADER Hdr;
209 DEVICE_STRUCT Device[1];
210 } SMBIOS_TABLE_TYPE10;
211
212 typedef struct {
213 SMBIOS_TABLE_HEADER Hdr;
214 UINT8 StringCount;
215 } SMBIOS_TABLE_TYPE11;
216
217 typedef struct {
218 SMBIOS_TABLE_HEADER Hdr;
219 UINT8 StringCount;
220 } SMBIOS_TABLE_TYPE12;
221
222 typedef struct {
223 SMBIOS_TABLE_HEADER Hdr;
224 UINT8 InstallableLanguages;
225 UINT8 Flags;
226 UINT8 reserved[15];
227 SMBIOS_TABLE_STRING CurrentLanguages;
228 } SMBIOS_TABLE_TYPE13;
229
230 typedef struct {
231 UINT8 ItemType;
232 UINT16 ItemHandle;
233 } GROUP_STRUCT;
234
235 typedef struct {
236 SMBIOS_TABLE_HEADER Hdr;
237 SMBIOS_TABLE_STRING GroupName;
238 GROUP_STRUCT Group[1];
239 } SMBIOS_TABLE_TYPE14;
240
241 typedef struct {
242 UINT8 LogType;
243 UINT8 DataFormatType;
244 } EVENT_LOG_TYPE;
245
246 typedef struct {
247 SMBIOS_TABLE_HEADER Hdr;
248 UINT16 LogAreaLength;
249 UINT16 LogHeaderStartOffset;
250 UINT16 LogDataStartOffset;
251 UINT8 AccessMethod;
252 UINT8 LogStatus;
253 UINT32 LogChangeToken;
254 UINT32 AccessMethodAddress;
255 UINT8 LogHeaderFormat;
256 UINT8 NumberOfSupportedLogTypeDescriptors;
257 UINT8 LengthOfLogTypeDescriptor;
258 EVENT_LOG_TYPE EventLogTypeDescriptors[1];
259 } SMBIOS_TABLE_TYPE15;
260
261 typedef struct {
262 SMBIOS_TABLE_HEADER Hdr;
263 UINT8 Location;
264 UINT8 Use;
265 UINT8 MemoryErrorCorrection;
266 UINT32 MaximumCapacity;
267 UINT16 MemoryErrorInformationHandle;
268 UINT16 NumberOfMemoryDevices;
269 } SMBIOS_TABLE_TYPE16;
270
271 typedef struct {
272 SMBIOS_TABLE_HEADER Hdr;
273 UINT16 MemoryArrayHandle;
274 UINT16 MemoryErrorInformationHandle;
275 UINT16 TotalWidth;
276 UINT16 DataWidth;
277 UINT16 Size;
278 UINT8 FormFactor;
279 UINT8 DeviceSet;
280 SMBIOS_TABLE_STRING DeviceLocator;
281 SMBIOS_TABLE_STRING BankLocator;
282 UINT8 MemoryType;
283 UINT16 TypeDetail;
284 UINT16 Speed;
285 SMBIOS_TABLE_STRING Manufacturer;
286 SMBIOS_TABLE_STRING SerialNumber;
287 SMBIOS_TABLE_STRING AssetTag;
288 SMBIOS_TABLE_STRING PartNumber;
289 } SMBIOS_TABLE_TYPE17;
290
291 typedef struct {
292 SMBIOS_TABLE_HEADER Hdr;
293 UINT8 ErrorType;
294 UINT8 ErrorGranularity;
295 UINT8 ErrorOperation;
296 UINT32 VendorSyndrome;
297 UINT32 MemoryArrayErrorAddress;
298 UINT32 DeviceErrorAddress;
299 UINT32 ErrorResolution;
300 } SMBIOS_TABLE_TYPE18;
301
302 typedef struct {
303 SMBIOS_TABLE_HEADER Hdr;
304 UINT32 StartingAddress;
305 UINT32 EndingAddress;
306 UINT16 MemoryArrayHandle;
307 UINT8 PartitionWidth;
308 } SMBIOS_TABLE_TYPE19;
309
310 typedef struct {
311 SMBIOS_TABLE_HEADER Hdr;
312 UINT32 StartingAddress;
313 UINT32 EndingAddress;
314 UINT16 MemoryDeviceHandle;
315 UINT16 MemoryArrayMappedAddressHandle;
316 UINT8 PartitionRowPosition;
317 UINT8 InterleavePosition;
318 UINT8 InterleavedDataDepth;
319 } SMBIOS_TABLE_TYPE20;
320
321 typedef struct {
322 SMBIOS_TABLE_HEADER Hdr;
323 UINT8 Type;
324 UINT8 Interface;
325 UINT8 NumberOfButtons;
326 } SMBIOS_TABLE_TYPE21;
327
328 typedef struct {
329 SMBIOS_TABLE_HEADER Hdr;
330 SMBIOS_TABLE_STRING Location;
331 SMBIOS_TABLE_STRING Manufacturer;
332 SMBIOS_TABLE_STRING ManufactureDate;
333 SMBIOS_TABLE_STRING SerialNumber;
334 SMBIOS_TABLE_STRING DeviceName;
335 UINT8 DeviceChemistry;
336 UINT16 DeviceCapacity;
337 UINT16 DesignVoltage;
338 SMBIOS_TABLE_STRING SBDSVersionNumber;
339 UINT8 MaximumErrorInBatteryData;
340 UINT16 SBDSSerialNumber;
341 UINT16 SBDSManufactureDate;
342 SMBIOS_TABLE_STRING SBDSDeviceChemistry;
343 UINT8 DesignCapacityMultiplier;
344 UINT32 OEMSpecific;
345 } SMBIOS_TABLE_TYPE22;
346
347 typedef struct {
348 SMBIOS_TABLE_HEADER Hdr;
349 UINT8 Capabilities;
350 UINT16 ResetCount;
351 UINT16 ResetLimit;
352 UINT16 TimerInterval;
353 UINT16 Timeout;
354 } SMBIOS_TABLE_TYPE23;
355
356 typedef struct {
357 SMBIOS_TABLE_HEADER Hdr;
358 UINT8 HardwareSecuritySettings;
359 } SMBIOS_TABLE_TYPE24;
360
361 typedef struct {
362 SMBIOS_TABLE_HEADER Hdr;
363 UINT8 NextScheduledPowerOnMonth;
364 UINT8 NextScheduledPowerOnDayOfMonth;
365 UINT8 NextScheduledPowerOnHour;
366 UINT8 NextScheduledPowerOnMinute;
367 UINT8 NextScheduledPowerOnSecond;
368 } SMBIOS_TABLE_TYPE25;
369
370 typedef struct {
371 SMBIOS_TABLE_HEADER Hdr;
372 SMBIOS_TABLE_STRING Description;
373 UINT8 LocationAndStatus;
374 UINT16 MaximumValue;
375 UINT16 MinimumValue;
376 UINT16 Resolution;
377 UINT16 Tolerance;
378 UINT16 Accuracy;
379 UINT32 OEMDefined;
380 UINT16 NominalValue;
381 } SMBIOS_TABLE_TYPE26;
382
383 typedef struct {
384 SMBIOS_TABLE_HEADER Hdr;
385 UINT16 TemperatureProbeHandle;
386 UINT8 DeviceTypeAndStatus;
387 UINT8 CoolingUnitGroup;
388 UINT32 OEMDefined;
389 UINT16 NominalSpeed;
390 } SMBIOS_TABLE_TYPE27;
391
392 typedef struct {
393 SMBIOS_TABLE_HEADER Hdr;
394 SMBIOS_TABLE_STRING Description;
395 UINT8 LocationAndStatus;
396 UINT16 MaximumValue;
397 UINT16 MinimumValue;
398 UINT16 Resolution;
399 UINT16 Tolerance;
400 UINT16 Accuracy;
401 UINT32 OEMDefined;
402 UINT16 NominalValue;
403 } SMBIOS_TABLE_TYPE28;
404
405 typedef struct {
406 SMBIOS_TABLE_HEADER Hdr;
407 SMBIOS_TABLE_STRING Description;
408 UINT8 LocationAndStatus;
409 UINT16 MaximumValue;
410 UINT16 MinimumValue;
411 UINT16 Resolution;
412 UINT16 Tolerance;
413 UINT16 Accuracy;
414 UINT32 OEMDefined;
415 UINT16 NominalValue;
416 } SMBIOS_TABLE_TYPE29;
417
418 typedef struct {
419 SMBIOS_TABLE_HEADER Hdr;
420 SMBIOS_TABLE_STRING ManufacturerName;
421 UINT8 Connections;
422 } SMBIOS_TABLE_TYPE30;
423
424 typedef struct {
425 SMBIOS_TABLE_HEADER Hdr;
426 UINT8 Checksum;
427 UINT8 Reserved1;
428 UINT16 Reserved2;
429 UINT32 BisEntry16;
430 UINT32 BisEntry32;
431 UINT64 Reserved3;
432 UINT32 Reserved4;
433 } SMBIOS_TABLE_TYPE31;
434
435 typedef struct {
436 SMBIOS_TABLE_HEADER Hdr;
437 UINT8 Reserved[6];
438 UINT8 BootStatus[1];
439 } SMBIOS_TABLE_TYPE32;
440
441 typedef struct {
442 SMBIOS_TABLE_HEADER Hdr;
443 UINT8 ErrorType;
444 UINT8 ErrorGranularity;
445 UINT8 ErrorOperation;
446 UINT32 VendorSyndrome;
447 UINT64 MemoryArrayErrorAddress;
448 UINT64 DeviceErrorAddress;
449 UINT32 ErrorResolution;
450 } SMBIOS_TABLE_TYPE33;
451
452 typedef struct {
453 SMBIOS_TABLE_HEADER Hdr;
454 SMBIOS_TABLE_STRING Description;
455 UINT8 Type;
456 UINT32 Address;
457 UINT8 AddressType;
458 } SMBIOS_TABLE_TYPE34;
459
460 typedef struct {
461 SMBIOS_TABLE_HEADER Hdr;
462 SMBIOS_TABLE_STRING Description;
463 UINT16 ManagementDeviceHandle;
464 UINT16 ComponentHandle;
465 UINT16 ThresholdHandle;
466 } SMBIOS_TABLE_TYPE35;
467
468 typedef struct {
469 SMBIOS_TABLE_HEADER Hdr;
470 UINT16 LowerThresholdNonCritical;
471 UINT16 UpperThresholdNonCritical;
472 UINT16 LowerThresholdCritical;
473 UINT16 UpperThresholdCritical;
474 UINT16 LowerThresholdNonRecoverable;
475 UINT16 UpperThresholdNonRecoverable;
476 } SMBIOS_TABLE_TYPE36;
477
478 typedef struct {
479 UINT8 DeviceLoad;
480 UINT16 DeviceHandle;
481 } MEMORY_DEVICE;
482
483 typedef struct {
484 SMBIOS_TABLE_HEADER Hdr;
485 UINT8 ChannelType;
486 UINT8 MaximumChannelLoad;
487 UINT8 MemoryDeviceCount;
488 MEMORY_DEVICE MemoryDevice[1];
489 } SMBIOS_TABLE_TYPE37;
490
491 typedef struct {
492 SMBIOS_TABLE_HEADER Hdr;
493 UINT8 InterfaceType;
494 UINT8 IPMISpecificationRevision;
495 UINT8 I2CSlaveAddress;
496 UINT8 NVStorageDeviceAddress;
497 UINT64 BaseAddress;
498 UINT8 BaseAddressModifier_InterruptInfo;
499 UINT8 InterruptNumber;
500 } SMBIOS_TABLE_TYPE38;
501
502 typedef struct {
503 SMBIOS_TABLE_HEADER Hdr;
504 UINT8 PowerUnitGroup;
505 SMBIOS_TABLE_STRING Location;
506 SMBIOS_TABLE_STRING DeviceName;
507 SMBIOS_TABLE_STRING Manufacturer;
508 SMBIOS_TABLE_STRING SerialNumber;
509 SMBIOS_TABLE_STRING AssetTagNumber;
510 SMBIOS_TABLE_STRING ModelPartNumber;
511 SMBIOS_TABLE_STRING RevisionLevel;
512 UINT16 MaxPowerCapacity;
513 UINT16 PowerSupplyCharacteristics;
514 UINT16 InputVoltageProbeHandle;
515 UINT16 CoolingDeviceHandle;
516 UINT16 InputCurrentProbeHandle;
517 } SMBIOS_TABLE_TYPE39;
518
519 typedef struct {
520 SMBIOS_TABLE_HEADER Hdr;
521 } SMBIOS_TABLE_TYPE126;
522
523 typedef struct {
524 SMBIOS_TABLE_HEADER Hdr;
525 } SMBIOS_TABLE_TYPE127;
526
527 typedef union {
528 SMBIOS_TABLE_HEADER *Hdr;
529 SMBIOS_TABLE_TYPE0 *Type0;
530 SMBIOS_TABLE_TYPE1 *Type1;
531 SMBIOS_TABLE_TYPE2 *Type2;
532 SMBIOS_TABLE_TYPE3 *Type3;
533 SMBIOS_TABLE_TYPE4 *Type4;
534 SMBIOS_TABLE_TYPE5 *Type5;
535 SMBIOS_TABLE_TYPE6 *Type6;
536 SMBIOS_TABLE_TYPE7 *Type7;
537 SMBIOS_TABLE_TYPE8 *Type8;
538 SMBIOS_TABLE_TYPE9 *Type9;
539 SMBIOS_TABLE_TYPE10 *Type10;
540 SMBIOS_TABLE_TYPE11 *Type11;
541 SMBIOS_TABLE_TYPE12 *Type12;
542 SMBIOS_TABLE_TYPE13 *Type13;
543 SMBIOS_TABLE_TYPE14 *Type14;
544 SMBIOS_TABLE_TYPE15 *Type15;
545 SMBIOS_TABLE_TYPE16 *Type16;
546 SMBIOS_TABLE_TYPE17 *Type17;
547 SMBIOS_TABLE_TYPE18 *Type18;
548 SMBIOS_TABLE_TYPE19 *Type19;
549 SMBIOS_TABLE_TYPE20 *Type20;
550 SMBIOS_TABLE_TYPE21 *Type21;
551 SMBIOS_TABLE_TYPE22 *Type22;
552 SMBIOS_TABLE_TYPE23 *Type23;
553 SMBIOS_TABLE_TYPE24 *Type24;
554 SMBIOS_TABLE_TYPE25 *Type25;
555 SMBIOS_TABLE_TYPE26 *Type26;
556 SMBIOS_TABLE_TYPE27 *Type27;
557 SMBIOS_TABLE_TYPE28 *Type28;
558 SMBIOS_TABLE_TYPE29 *Type29;
559 SMBIOS_TABLE_TYPE30 *Type30;
560 SMBIOS_TABLE_TYPE31 *Type31;
561 SMBIOS_TABLE_TYPE32 *Type32;
562 SMBIOS_TABLE_TYPE33 *Type33;
563 SMBIOS_TABLE_TYPE34 *Type34;
564 SMBIOS_TABLE_TYPE35 *Type35;
565 SMBIOS_TABLE_TYPE36 *Type36;
566 SMBIOS_TABLE_TYPE37 *Type37;
567 SMBIOS_TABLE_TYPE38 *Type38;
568 SMBIOS_TABLE_TYPE39 *Type39;
569 SMBIOS_TABLE_TYPE126 *Type126;
570 SMBIOS_TABLE_TYPE127 *Type127;
571 UINT8 *Raw;
572 } SMBIOS_STRUCTURE_POINTER;
573
574 #pragma pack()
575
576 #endif