]> git.proxmox.com Git - mirror_edk2.git/blame - EmulatorPkg/PlatformSmbiosDxe/SmbiosTable.c
EmulatorPkg/PlatformSmbiosDxe: Fix build issue with UNIXGCC
[mirror_edk2.git] / EmulatorPkg / PlatformSmbiosDxe / SmbiosTable.c
CommitLineData
63f9b9b9 1/** @file
2 Static SMBIOS Table for platform
3
4 Note SMBIOS 2.7.1 Required structures:
5 BIOS Information (Type 0)
6 System Information (Type 1)
7 System Enclosure (Type 3)
8 Processor Information (Type 4) - CPU Driver
9 Cache Information (Type 7) - For cache that is external to processor
10 System Slots (Type 9) - If system has slots
11 Physical Memory Array (Type 16)
12 Memory Device (Type 17) - For each socketed system-memory Device
13 Memory Array Mapped Address (Type 19) - One per contiguous block per Physical Memroy Array
14 System Boot Information (Type 32)
15
16 Copyright (c) 2012, Apple Inc. All rights reserved.<BR>
17 This program and the accompanying materials
18 are licensed and made available under the terms and conditions of the BSD License
19 which accompanies this distribution. The full text of the license may be found at
20 http://opensource.org/licenses/bsd-license.php
21
22 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
23 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
24
25**/
26
27#include <PiDxe.h>
66c44008 28#include <IndustryStandard/SmBios.h>
63f9b9b9 29#include <Protocol/Smbios.h>
30#include <Library/SmbiosLib.h>
31
32
33SMBIOS_TABLE_TYPE0 gSmbiosType0Template = {
34 { EFI_SMBIOS_TYPE_BIOS_INFORMATION, sizeof (SMBIOS_TABLE_TYPE0), 0 },
35 1, // Vendor String
36 2, // BiosVersion String
37 0xE000, // BiosSegment
38 3, // BiosReleaseDate String
39 0x7F, // BiosSize
40 { // BiosCharacteristics
41 0, // Reserved :2; ///< Bits 0-1.
42 0, // Unknown :1;
43 0, // BiosCharacteristicsNotSupported :1;
44 0, // IsaIsSupported :1;
45 0, // McaIsSupported :1;
46 0, // EisaIsSupported :1;
47 1, // PciIsSupported :1;
48 0, // PcmciaIsSupported :1;
49 0, // PlugAndPlayIsSupported :1;
50 0, // ApmIsSupported :1;
51 1, // BiosIsUpgradable :1;
52 1, // BiosShadowingAllowed :1;
53 0, // VlVesaIsSupported :1;
54 0, // EscdSupportIsAvailable :1;
55 0, // BootFromCdIsSupported :1;
56 1, // SelectableBootIsSupported :1;
57 0, // RomBiosIsSocketed :1;
58 0, // BootFromPcmciaIsSupported :1;
59 0, // EDDSpecificationIsSupported :1;
60 0, // JapaneseNecFloppyIsSupported :1;
61 0, // JapaneseToshibaFloppyIsSupported :1;
62 0, // Floppy525_360IsSupported :1;
63 0, // Floppy525_12IsSupported :1;
64 0, // Floppy35_720IsSupported :1;
65 0, // Floppy35_288IsSupported :1;
66 0, // PrintScreenIsSupported :1;
67 0, // Keyboard8042IsSupported :1;
68 0, // SerialIsSupported :1;
69 0, // PrinterIsSupported :1;
70 0, // CgaMonoIsSupported :1;
71 0, // NecPc98 :1;
72 0 // ReservedForVendor :32; ///< Bits 32-63. Bits 32-47 reserved for BIOS vendor
73 ///< and bits 48-63 reserved for System Vendor.
74 },
75 { // BIOSCharacteristicsExtensionBytes[]
76 0x81, // AcpiIsSupported :1;
77 // UsbLegacyIsSupported :1;
78 // AgpIsSupported :1;
79 // I2OBootIsSupported :1;
80 // Ls120BootIsSupported :1;
81 // AtapiZipDriveBootIsSupported :1;
82 // Boot1394IsSupported :1;
83 // SmartBatteryIsSupported :1;
84 // BIOSCharacteristicsExtensionBytes[1]
85 0x0a, // BiosBootSpecIsSupported :1;
86 // FunctionKeyNetworkBootIsSupported :1;
87 // TargetContentDistributionEnabled :1;
88 // UefiSpecificationSupported :1;
89 // VirtualMachineSupported :1;
90 // ExtensionByte2Reserved :3;
91 },
92 0x00, // SystemBiosMajorRelease
93 0x01, // SystemBiosMinorRelease
94 0xFF, // EmbeddedControllerFirmwareMajorRelease
95 0xFF, // EmbeddedControllerFirmwareMinorRelease
96};
97CHAR8 *gSmbiosType0Strings[] = {
98 "edk2.sourceforge.net", // Vendor String
99 __TIME__, // BiosVersion String
100 __DATE__, // BiosReleaseDate String
101 NULL
102};
103
104SMBIOS_TABLE_TYPE1 gSmbiosType1Template = {
105 { EFI_SMBIOS_TYPE_SYSTEM_INFORMATION, sizeof (SMBIOS_TABLE_TYPE1), 0 },
106 1, // Manufacturer String
107 2, // ProductName String
108 3, // Version String
109 4, // SerialNumber String
110 { 0x25EF0280, 0xEC82, 0x42B0, { 0x8F, 0xB6, 0x10, 0xAD, 0xCC, 0xC6, 0x7C, 0x02 } },
111 SystemWakeupTypePowerSwitch,
112 5, // SKUNumber String
113 6, // Family String
114};
115CHAR8 *gSmbiosType1Strings[] = {
116 "edk2.sourceforge.net",
117 "EmulatorPkg",
118 "1.0",
119 "System Serial#",
120 "System SKU#",
121 "edk2",
122 NULL
123};
124
125SMBIOS_TABLE_TYPE2 gSmbiosType2Template = {
126 { EFI_SMBIOS_TYPE_BASEBOARD_INFORMATION, sizeof (SMBIOS_TABLE_TYPE2), 0 },
127 1, // Manufacturer String
128 2, // ProductName String
129 3, // Version String
130 4, // SerialNumber String
131 5, // AssetTag String
132 { // FeatureFlag
133 1, // Motherboard :1;
134 0, // RequiresDaughterCard :1;
135 0, // Removable :1;
136 0, // Replaceable :1;
137 0, // HotSwappable :1;
138 0, // Reserved :3;
139 },
140 6, // LocationInChassis String
141 0, // ChassisHandle;
142 BaseBoardTypeMotherBoard, // BoardType;
143 0, // NumberOfContainedObjectHandles;
144 { 0 } // ContainedObjectHandles[1];
145};
146CHAR8 *gSmbiosType2Strings[] = {
147 "edk2.sourceforge.net",
148 "EmulatorPkg",
149 "1.0",
150 "Base Board Serial#",
151 "Base Board Asset Tag#",
152 "Part Component",
153 NULL
154};
155
156SMBIOS_TABLE_TYPE3 gSmbiosType3Template = {
157 { EFI_SMBIOS_TYPE_SYSTEM_ENCLOSURE, sizeof (SMBIOS_TABLE_TYPE3), 0 },
158 1, // Manufacturer String
159 MiscChassisTypeLapTop, // Type;
160 2, // Version String
161 3, // SerialNumber String
162 4, // AssetTag String
163 ChassisStateSafe, // BootupState;
164 ChassisStateSafe, // PowerSupplyState;
165 ChassisStateSafe, // ThermalState;
166 ChassisSecurityStatusNone,// SecurityStatus;
167 { 0, 0, 0, 0 }, // OemDefined[4];
168 0, // Height;
169 0, // NumberofPowerCords;
170 0, // ContainedElementCount;
171 0, // ContainedElementRecordLength;
172 { 0 }, // ContainedElements[1];
173};
174CHAR8 *gSmbiosType3Strings[] = {
175 "edk2.sourceforge.net",
176 "EmulatorPkg",
177 "Chassis Board Serial#",
178 "Chassis Board Asset Tag#",
179 NULL
180};
181
182SMBIOS_TABLE_TYPE8 gSmbiosType8Template1 = {
183 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
184 0, // InternalReferenceDesignator String
185 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
186 1, // ExternalReferenceDesignator String
187 PortConnectorTypeNone, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
188 PortTypeOther, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
189};
190CHAR8 *gSmbiosType8Strings1[] = {
191 "Mini DisplayPort",
192 NULL
193};
194
195SMBIOS_TABLE_TYPE8 gSmbiosType8Template2 = {
196 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
197 0, // InternalReferenceDesignator String
198 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
199 1, // ExternalReferenceDesignator String
200 PortConnectorTypeNone, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
201 PortTypeFireWire, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
202};
203CHAR8 *gSmbiosType8Strings2[] = {
204 "FireWire 800",
205 NULL
206};
207
208
209SMBIOS_TABLE_TYPE8 gSmbiosType8Template3 = {
210 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
211 0, // InternalReferenceDesignator String
212 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
213 1, // ExternalReferenceDesignator String
214 PortConnectorTypeRJ45, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
215 PortTypeNetworkPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
216};
217CHAR8 *gSmbiosType8Strings3[] = {
218 "Ethernet",
219 NULL
220};
221
222SMBIOS_TABLE_TYPE8 gSmbiosType8Template4 = {
223 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
224 0, // InternalReferenceDesignator String
225 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
226 1, // ExternalReferenceDesignator String
227 PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
228 PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
229};
230CHAR8 *gSmbiosType8Strings4[] = {
231 "USB0",
232 NULL
233};
234
235SMBIOS_TABLE_TYPE8 gSmbiosType8Template5 = {
236 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
237 0, // InternalReferenceDesignator String
238 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
239 1, // ExternalReferenceDesignator String
240 PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
241 PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
242};
243CHAR8 *gSmbiosType8Strings5[] = {
244 "USB1",
245 NULL
246};
247
248SMBIOS_TABLE_TYPE8 gSmbiosType8Template6 = {
249 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
250 0, // InternalReferenceDesignator String
251 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
252 1, // ExternalReferenceDesignator String
253 PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
254 PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
255};
256CHAR8 *gSmbiosType8Strings6[] = {
257 "USB2",
258 NULL
259};
260
261SMBIOS_TABLE_TYPE8 gSmbiosType8Template7 = {
262 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
263 0, // InternalReferenceDesignator String
264 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
265 1, // ExternalReferenceDesignator String
266 PortConnectorTypeUsb, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
267 PortTypeUsb, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
268};
269CHAR8 *gSmbiosType8Strings7[] = {
270 "USB3",
271 NULL
272};
273
274SMBIOS_TABLE_TYPE8 gSmbiosType8Template8 = {
275 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
276 0, // InternalReferenceDesignator String
277 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
278 1, // ExternalReferenceDesignator String
279 PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
280 PortTypeAudioPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
281};
282CHAR8 *gSmbiosType8Strings8[] = {
283 "Audio Line In",
284 NULL
285};
286
287SMBIOS_TABLE_TYPE8 gSmbiosType8Template9 = {
288 { EFI_SMBIOS_TYPE_PORT_CONNECTOR_INFORMATION, sizeof (SMBIOS_TABLE_TYPE8), 0 },
289 0, // InternalReferenceDesignator String
290 PortConnectorTypeNone, // InternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
291 1, // ExternalReferenceDesignator String
292 PortConnectorTypeHeadPhoneMiniJack, // ExternalConnectorType; ///< The enumeration value from MISC_PORT_CONNECTOR_TYPE.
293 PortTypeAudioPort, // PortType; ///< The enumeration value from MISC_PORT_TYPE.
294};
295CHAR8 *gSmbiosType8Strings9[] = {
296 "Audio Line Out",
297 NULL
298};
299
300SMBIOS_TABLE_TYPE9 gSmbiosType9Template = {
301 { EFI_SMBIOS_TYPE_SYSTEM_SLOTS, sizeof (SMBIOS_TABLE_TYPE9), 0 },
302 1, // SlotDesignation String
303 SlotTypeOther, // SlotType; ///< The enumeration value from MISC_SLOT_TYPE.
304 SlotDataBusWidthOther, // SlotDataBusWidth; ///< The enumeration value from MISC_SLOT_DATA_BUS_WIDTH.
305 SlotUsageAvailable, // CurrentUsage; ///< The enumeration value from MISC_SLOT_USAGE.
306 SlotLengthOther, // SlotLength; ///< The enumeration value from MISC_SLOT_LENGTH.
307 0, // SlotID;
308 { // SlotCharacteristics1;
309 1, // CharacteristicsUnknown :1;
310 0, // Provides50Volts :1;
311 0, // Provides33Volts :1;
312 0, // SharedSlot :1;
313 0, // PcCard16Supported :1;
314 0, // CardBusSupported :1;
315 0, // ZoomVideoSupported :1;
316 0, // ModemRingResumeSupported:1;
317 },
318 { // SlotCharacteristics2;
319 0, // PmeSignalSupported :1;
320 0, // HotPlugDevicesSupported :1;
321 0, // SmbusSignalSupported :1;
322 0, // Reserved :5; ///< Set to 0.
323 },
324 0, // SegmentGroupNum;
325 0, // BusNum;
326 0, // DevFuncNum;
327};
328CHAR8 *gSmbiosType9Strings[] = {
329 "SD Card",
330 NULL
331};
332
333SMBIOS_TABLE_TYPE11 gSmbiosType11Template = {
334 { EFI_SMBIOS_TYPE_OEM_STRINGS, sizeof (SMBIOS_TABLE_TYPE11), 0 },
335 1 // StringCount
336};
337CHAR8 *gSmbiosType11Strings[] = {
338 "https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EmulatorPkg/",
339 NULL
340};
341
342
343SMBIOS_TABLE_TYPE12 gSmbiosType12Template = {
344 { EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 },
345 1 // StringCount
346};
347CHAR8 *gSmbiosType12Strings[] = {
348 "https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2/EmulatorPkg/EmulatorPkg.dsc",
349 NULL
350};
351
352SMBIOS_TABLE_TYPE16 gSmbiosType16Template = {
353 { EFI_SMBIOS_TYPE_PHYSICAL_MEMORY_ARRAY, sizeof (SMBIOS_TABLE_TYPE16), 0 },
354 MemoryArrayLocationSystemBoard, // Location; ///< The enumeration value from MEMORY_ARRAY_LOCATION.
355 MemoryArrayUseSystemMemory, // Use; ///< The enumeration value from MEMORY_ARRAY_USE.
356 MemoryErrorCorrectionUnknown, // MemoryErrorCorrection; ///< The enumeration value from MEMORY_ERROR_CORRECTION.
357 0x80000000, // MaximumCapacity;
358 0xFFFE, // MemoryErrorInformationHandle;
359 1, // NumberOfMemoryDevices;
611db14a 360 0x3fffffffffffffffULL, // ExtendedMaximumCapacity;
63f9b9b9 361};
362
363SMBIOS_TABLE_TYPE17 gSmbiosType17Template = {
364 { EFI_SMBIOS_TYPE_MEMORY_DEVICE, sizeof (SMBIOS_TABLE_TYPE17), 0 },
365 0, // MemoryArrayHandle;
366 0xFFFE, // MemoryErrorInformationHandle;
367 0xFFFF, // TotalWidth;
368 0xFFFF, // DataWidth;
369 0xFFFF, // Size;
370 MemoryFormFactorUnknown, // FormFactor; ///< The enumeration value from MEMORY_FORM_FACTOR.
371 0xff, // DeviceSet;
372 1, // DeviceLocator String
373 2, // BankLocator String
374 MemoryTypeDram, // MemoryType; ///< The enumeration value from MEMORY_DEVICE_TYPE.
375 { // TypeDetail;
376 0, // Reserved :1;
377 0, // Other :1;
378 1, // Unknown :1;
379 0, // FastPaged :1;
380 0, // StaticColumn :1;
381 0, // PseudoStatic :1;
382 0, // Rambus :1;
383 0, // Synchronous :1;
384 0, // Cmos :1;
385 0, // Edo :1;
386 0, // WindowDram :1;
387 0, // CacheDram :1;
388 0, // Nonvolatile :1;
389 0, // Registered :1;
390 0, // Unbuffered :1;
391 0, // Reserved1 :1;
392 },
393 0, // Speed;
394 3, // Manufacturer String
395 0, // SerialNumber String
396 0, // AssetTag String
397 0, // PartNumber String
398 0, // Attributes;
399 0, // ExtendedSize;
400 0, // ConfiguredMemoryClockSpeed;
401};
402CHAR8 *gSmbiosType17Strings[] = {
403 "OS Virtual Memory",
404 "malloc",
405 "OSV",
406 NULL
407};
408
409SMBIOS_TABLE_TYPE23 gSmbiosType23Template = {
410 { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE23), 0 },
411 0, // Capabilities;
412 0, // ResetCount;
413 0, // ResetLimit;
414 0, // TimerInterval;
415 0 // Timeout;
416};
417
418SMBIOS_TABLE_TYPE32 gSmbiosType32Template = {
419 { EFI_SMBIOS_TYPE_SYSTEM_BOOT_INFORMATION, sizeof (SMBIOS_TABLE_TYPE32), 0 },
420 { 0, 0, 0, 0, 0, 0 }, // Reserved[6];
421 BootInformationStatusNoError // BootStatus
422};
423
424
425
426SMBIOS_TEMPLATE_ENTRY gSmbiosTemplate[] = {
427 { (SMBIOS_STRUCTURE *)&gSmbiosType0Template, gSmbiosType0Strings },
428 { (SMBIOS_STRUCTURE *)&gSmbiosType1Template, gSmbiosType1Strings },
429 { (SMBIOS_STRUCTURE *)&gSmbiosType2Template, gSmbiosType2Strings },
430 { (SMBIOS_STRUCTURE *)&gSmbiosType3Template, gSmbiosType3Strings },
431 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template1, gSmbiosType8Strings1 },
432 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template2, gSmbiosType8Strings2 },
433 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template3, gSmbiosType8Strings3 },
434 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template4, gSmbiosType8Strings4 },
435 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template5, gSmbiosType8Strings5 },
436 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template6, gSmbiosType8Strings6 },
437 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template7, gSmbiosType8Strings7 },
438 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template8, gSmbiosType8Strings8 },
439 { (SMBIOS_STRUCTURE *)&gSmbiosType8Template9, gSmbiosType8Strings9 },
440 { (SMBIOS_STRUCTURE *)&gSmbiosType9Template, gSmbiosType9Strings },
441 { (SMBIOS_STRUCTURE *)&gSmbiosType11Template, gSmbiosType11Strings },
442 { (SMBIOS_STRUCTURE *)&gSmbiosType12Template, gSmbiosType12Strings },
443 { (SMBIOS_STRUCTURE *)&gSmbiosType16Template, NULL },
444 { (SMBIOS_STRUCTURE *)&gSmbiosType17Template, gSmbiosType17Strings },
445 { (SMBIOS_STRUCTURE *)&gSmbiosType23Template, NULL },
446 { (SMBIOS_STRUCTURE *)&gSmbiosType32Template, NULL },
447 { NULL, NULL }
448};