-/** @file\r
- Routines that support Misc SubClass data records translation.\r
- \r
-Copyright (c) 2009, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#include "Thunk.h"\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 0 -- Bios Information.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType0 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_BIOS_VENDOR_DATA *BiosInfo;\r
-\r
- Status = EFI_SUCCESS;\r
- BiosInfo = NULL;\r
-\r
- BiosInfo = (EFI_MISC_BIOS_VENDOR_DATA *) RecordData;\r
-\r
- //\r
- // Bios Vendor\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE0, Vendor),\r
- &(BiosInfo->BiosVendor),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Bios Version\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE0, BiosVersion),\r
- &(BiosInfo->BiosVersion),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Bios Release Date\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE0, BiosReleaseDate),\r
- &(BiosInfo->BiosReleaseDate),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Bios Starting Address Segment\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, BiosSegment),\r
- &BiosInfo->BiosStartingAddress,\r
- 2\r
- );\r
-\r
- //\r
- // Bios Physical device size\r
- //\r
- SmbiosFldBase2ToByteWith64K (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE0, BiosSize),\r
- &BiosInfo->BiosPhysicalDeviceSize,\r
- sizeof (EFI_EXP_BASE2_DATA)\r
- );\r
- (*(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, BiosSize)))--;\r
-\r
- //\r
- // Bios Characteristics\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, BiosCharacteristics),\r
- &BiosInfo->BiosCharacteristics1,\r
- 4\r
- );\r
- \r
- //\r
- // Bios Characteristics higher four bytes\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, BiosCharacteristics) + 4,\r
- &BiosInfo->BiosCharacteristics2,\r
- 4\r
- ); \r
-\r
- //\r
- // Bios Characteristics Extension1/2\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, BIOSCharacteristicsExtensionBytes),\r
- (UINT8 *) &BiosInfo->BiosCharacteristics1 + 4,\r
- 2\r
- );\r
-\r
- //\r
- // System BIOS Major Release\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, SystemBiosMajorRelease),\r
- (UINT8 *) &BiosInfo->BiosMajorRelease,\r
- 1\r
- );\r
-\r
- //\r
- // System BIOS Minor Release\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, SystemBiosMinorRelease),\r
- (UINT8 *) &BiosInfo->BiosMinorRelease,\r
- 1\r
- );\r
-\r
- //\r
- // Embedded Controller Firmware Major Release\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, EmbeddedControllerFirmwareMajorRelease),\r
- (UINT8 *) &BiosInfo->BiosEmbeddedFirmwareMajorRelease,\r
- 1\r
- );\r
-\r
- //\r
- // Embedded Controller Firmware Minor Release\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE0, EmbeddedControllerFirmwareMinorRelease),\r
- (UINT8 *) &BiosInfo->BiosEmbeddedFirmwareMinorRelease,\r
- 1\r
- );\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 1 -- System Information.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType1 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_SYSTEM_MANUFACTURER_DATA *SystemInfo;\r
-\r
- Status = EFI_SUCCESS;\r
- SystemInfo = NULL;\r
-\r
- SystemInfo = (EFI_MISC_SYSTEM_MANUFACTURER_DATA *) RecordData;\r
-\r
- //\r
- // System Manufacturer\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE1, Manufacturer),\r
- &(SystemInfo->SystemManufacturer),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // System Product Name\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE1, ProductName),\r
- &(SystemInfo->SystemProductName),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // System Version\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE1, Version),\r
- &(SystemInfo->SystemVersion),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // System Serial Number\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE1, SerialNumber),\r
- &(SystemInfo->SystemSerialNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Uuid\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE1, Uuid),\r
- &SystemInfo->SystemUuid,\r
- 16\r
- );\r
-\r
- //\r
- // Wakeup Type\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE1, WakeUpType),\r
- &SystemInfo->SystemWakeupType,\r
- 1\r
- );\r
-\r
- //\r
- // System SKU Number\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE1, SKUNumber),\r
- &(SystemInfo->SystemSKUNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // System Family\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE1, Family),\r
- &(SystemInfo->SystemFamily),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for record type 2 -- Base Board Manufacture.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType2 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_BASE_BOARD_MANUFACTURER_DATA *Bbm;\r
- Status = EFI_SUCCESS;\r
- Bbm = (EFI_MISC_BASE_BOARD_MANUFACTURER_DATA *) RecordData;\r
-\r
- //\r
- // Manufacturer\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE2, Manufacturer),\r
- &(Bbm->BaseBoardManufacturer),\r
- 2\r
- );\r
-\r
- //\r
- // Product\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE2, ProductName),\r
- &(Bbm->BaseBoardProductName),\r
- 2\r
- );\r
-\r
- //\r
- // Version\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE2, Version),\r
- &(Bbm->BaseBoardVersion),\r
- 2\r
- );\r
-\r
- //\r
- // Serial Number\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE2, SerialNumber),\r
- &(Bbm->BaseBoardSerialNumber),\r
- 2\r
- );\r
-\r
- //\r
- // Asset Tag\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE2, AssetTag),\r
- &(Bbm->BaseBoardAssetTag),\r
- 2\r
- );\r
-\r
- //\r
- // Location in Chassis\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE2, LocationInChassis),\r
- &(Bbm->BaseBoardChassisLocation),\r
- 2\r
- );\r
-\r
- //\r
- // Feature Flags\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE2, FeatureFlag),\r
- &Bbm->BaseBoardFeatureFlags,\r
- 1\r
- );\r
-\r
- //\r
- // Board Type\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE2, BoardType)) = (UINT8) Bbm->BaseBoardType;\r
-\r
- //\r
- // Chassis Handle\r
- //\r
- SmbiosFldInterLink (\r
- StructureNode,\r
- (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE2, ChassisHandle),\r
- 3, // SMBIOS type 3 - System Enclosure or Chassis\r
- &Bbm->BaseBoardChassisLink,\r
- &gEfiMiscSubClassGuid\r
- );\r
-\r
- //\r
- // Number of Contained Object Handles\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE2, NumberOfContainedObjectHandles)) = (UINT8) Bbm->BaseBoardNumberLinks;\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 3 -\r
- - System Enclosure or Chassis.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType3 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_CHASSIS_MANUFACTURER_DATA *Ec;\r
- EFI_MISC_ELEMENTS *Element;\r
- UINT16 Index;\r
- UINT8 ContainedElementType;\r
- Status = EFI_SUCCESS;\r
- Ec = (EFI_MISC_CHASSIS_MANUFACTURER_DATA *) RecordData;\r
-\r
- //\r
- // Chassis Type\r
- //\r
- *(UINT8*)((UINT8 *) (StructureNode->Structure) + \r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, Type)) \r
- = (UINT8) (Ec->ChassisType.ChassisType | Ec->ChassisType.ChassisLockPresent << 7);\r
-\r
-\r
- //\r
- // Chassis Bootup State\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE3, BootupState),\r
- &Ec->ChassisBootupState,\r
- 1\r
- );\r
-\r
- //\r
- // Chassis Power Supply State\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE3, PowerSupplyState),\r
- &Ec->ChassisPowerSupplyState,\r
- 1\r
- );\r
-\r
- //\r
- // Chassis Thermal State\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE3, ThermalState),\r
- &Ec->ChassisThermalState,\r
- 1\r
- );\r
-\r
- //\r
- // Chassis Security State\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE3, SecurityStatus),\r
- &Ec->ChassisSecurityState,\r
- 1\r
- );\r
-\r
- //\r
- // Chassis Oem Defined\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE3, OemDefined),\r
- &Ec->ChassisOemDefined,\r
- 4\r
- );\r
-\r
- //\r
- // Chassis Height\r
- //\r
- *(UINT8*)((UINT8*)(StructureNode->Structure) + \r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, Height)) \r
- = (UINT8)Ec->ChassisHeight;\r
-\r
- //\r
- // Chassis Number Power Cords\r
- //\r
- *(UINT8*)((UINT8*)(StructureNode->Structure) + \r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, NumberofPowerCords)) \r
- = (UINT8)Ec->ChassisNumberPowerCords;\r
- \r
- //\r
- // Chassis Element Count\r
- //\r
- *(UINT8*)((UINT8*)(StructureNode->Structure) + \r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, ContainedElementCount)) \r
- = (UINT8)Ec->ChassisElementCount;\r
-\r
- if( Ec->ChassisElementCount ) {\r
- //\r
- // Element Record Length\r
- // Current solution covers first 3 bytes; user can extend to meet its requirements.\r
- //\r
- *(UINT8*)((UINT8*)(StructureNode->Structure) + \r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, ContainedElementRecordLength)) \r
- = (UINT8)sizeof(CONTAINED_ELEMENT);\r
-\r
- //\r
- // Update the structure's length and StructureSize\r
- //\r
- StructureNode->Structure->Length = (UINT8)(StructureNode->Structure->Length + \r
- Ec->ChassisElementCount * sizeof(CONTAINED_ELEMENT));\r
- Status = SmbiosEnlargeStructureBuffer (\r
- StructureNode,\r
- StructureNode->Structure->Length,\r
- StructureNode->StructureSize,\r
- StructureNode->StructureSize + Ec->ChassisElementCount * sizeof(CONTAINED_ELEMENT)\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
- \r
- //\r
- // Contained Elements\r
- //\r
- for (Index=0, Element = &Ec->ChassisElements; \r
- Index < Ec->ChassisElementCount; \r
- Index += 1, Element ++) {\r
-\r
- //\r
- // ContainedElementType\r
- //\r
- ContainedElementType = (UINT8)((Element->ChassisElementType.RecordType == 1)\r
- ? (UINT8)(Element->ChassisElementType.RecordType << 7 | Element->ChassisElementType.Type)\r
- : (UINT8)(Element->ChassisBaseBoard));\r
- *(UINT8*)((UINT8*)(StructureNode->Structure) + \r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, ContainedElements) + \r
- Index * sizeof(CONTAINED_ELEMENT) + \r
- OFFSET_OF(CONTAINED_ELEMENT,ContainedElementType)) \r
- = ContainedElementType;\r
-\r
- //\r
- // ContainedElementMinimum\r
- //\r
- *(UINT8*)((UINT8*)(StructureNode->Structure) + \r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, ContainedElements) + \r
- Index * sizeof(CONTAINED_ELEMENT) + \r
- OFFSET_OF(CONTAINED_ELEMENT,ContainedElementMinimum))\r
- = (UINT8)Element->ChassisElementMinimum;\r
-\r
- //\r
- // ContainedElementMaximum\r
- //\r
- *(UINT8*)((UINT8*)(StructureNode->Structure) + \r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, ContainedElements) + \r
- Index * sizeof(CONTAINED_ELEMENT) + \r
- OFFSET_OF(CONTAINED_ELEMENT,ContainedElementMaximum)) \r
- = (UINT8)Element->ChassisElementMaximum;\r
- }\r
- }\r
-\r
- //\r
- // Move the filling of following four String fields after Contained Elements \r
- // because they would break SMBIOS table.\r
- // Chassis Manufacturer\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, Manufacturer),\r
- &(Ec->ChassisManufacturer),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Chassis Version\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, Version),\r
- &(Ec->ChassisVersion),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Chassis Serial Number\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, SerialNumber),\r
- &(Ec->ChassisSerialNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Chassis Asset Tag\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE3, AssetTag),\r
- &(Ec->ChassisAssetTag),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
- \r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 8 -- Port Connector.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType8 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *Picd;\r
-\r
- Status = EFI_SUCCESS;\r
- Picd = (EFI_MISC_PORT_INTERNAL_CONNECTOR_DESIGNATOR_DATA *) RecordData;\r
-\r
- //\r
- // Internal Connector Designator\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE8, InternalReferenceDesignator),\r
- &(Picd->PortInternalConnectorDesignator),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Internal Connector Type\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE8, InternalConnectorType)) = (UINT8) Picd->PortInternalConnectorType;\r
-\r
- //\r
- // External Connector Designator\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE8, ExternalReferenceDesignator),\r
- &(Picd->PortExternalConnectorDesignator),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Internal Connector Type\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE8, ExternalConnectorType)) = (UINT8) Picd->PortExternalConnectorType;\r
-\r
- //\r
- // Internal Connector Type\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE8, PortType)) = (UINT8) Picd->PortType;\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 9 -- System slot.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType9 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA *Slot;\r
-\r
- Status = EFI_SUCCESS;\r
- Slot = (EFI_MISC_SYSTEM_SLOT_DESIGNATION_DATA *) RecordData;\r
-\r
- //\r
- // Slot Designation\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE9, SlotDesignation),\r
- &(Slot->SlotDesignation),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Slot Type\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE9, SlotType),\r
- &Slot->SlotType,\r
- 1\r
- );\r
-\r
- //\r
- // Slot Data Bus Width\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE9, SlotDataBusWidth),\r
- &Slot->SlotDataBusWidth,\r
- 1\r
- );\r
-\r
- //\r
- // Slot Usage\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE9, CurrentUsage),\r
- &Slot->SlotUsage,\r
- 1\r
- );\r
-\r
- //\r
- // Slot Length\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE9, SlotLength),\r
- &Slot->SlotLength,\r
- 1\r
- );\r
-\r
- //\r
- // Slot Id\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE9, SlotID),\r
- &Slot->SlotId,\r
- 2\r
- );\r
-\r
- //\r
- // Slot Characteristics\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE9, SlotCharacteristics1),\r
- &Slot->SlotCharacteristics,\r
- 2\r
- );\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 10 - Onboard Device.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType10 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_ONBOARD_DEVICE_DATA *OnboardDevice;\r
- UINTN NumberOfDevices;\r
- UINTN Index;\r
- UINT8 StatusAndType;\r
-\r
- Status = EFI_SUCCESS;\r
- OnboardDevice = (EFI_MISC_ONBOARD_DEVICE_DATA *) RecordData;\r
-\r
- NumberOfDevices = (StructureNode->Structure->Length - 4) / 2;\r
- for (Index = 0; Index < NumberOfDevices; Index += 1) {\r
- //\r
- // OnBoard Device Description\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- (UINT32) (OFFSET_OF (SMBIOS_TABLE_TYPE10, Device) + 1 + (2 * Index)),\r
- &(OnboardDevice->OnBoardDeviceDescription),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Status & Type: Bit 7 Devicen Status, Bits 6:0 Type of Device\r
- //\r
- StatusAndType = (UINT8) OnboardDevice->OnBoardDeviceStatus.DeviceType;\r
- if (OnboardDevice->OnBoardDeviceStatus.DeviceEnabled != 0) {\r
- StatusAndType |= 0x80;\r
- } else {\r
- StatusAndType &= 0x7F;\r
- }\r
-\r
- * (UINT8 *) ((UINT8 *) (StructureNode->Structure) + (OFFSET_OF (SMBIOS_TABLE_TYPE10, Device) + (2 * Index))) = StatusAndType;\r
- }\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 11 - OEM Strings.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType11 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_OEM_STRING_DATA *OemString;\r
-\r
- OemString = (EFI_MISC_OEM_STRING_DATA *)RecordData;\r
- //\r
- // OEM String data\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE11, StringCount),\r
- &(OemString->OemStringRef[0]),\r
- 2\r
- );\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 12 - System Options.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType12 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_SYSTEM_OPTION_STRING_DATA *Sos;\r
- UINTN NumberOfInstallableLanguages;\r
- UINTN Index;\r
-\r
- Status = EFI_SUCCESS;\r
- Sos = (EFI_MISC_SYSTEM_OPTION_STRING_DATA *) RecordData;\r
-\r
- //\r
- // As MiscDataHub spec defines,\r
- // NumberOfInstallableLanguages should retrieve from Type 13.\r
- //\r
- NumberOfInstallableLanguages = (StructureNode->Structure->Length - 4);\r
- for (Index = 0; Index < NumberOfInstallableLanguages; Index += 1) {\r
- //\r
- // OnBoard Device Description\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- (UINT32) (OFFSET_OF (SMBIOS_TABLE_TYPE12, StringCount) + (Index)),\r
- &(Sos->SystemOptionStringRef[Index]),\r
- 2\r
- );\r
- }\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 13 - BIOS Language.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType13 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA *InstallableLanguage;\r
-\r
- InstallableLanguage = (EFI_MISC_NUMBER_OF_INSTALLABLE_LANGUAGES_DATA *) RecordData;\r
-\r
- //\r
- // Number Of Installable Languages\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE13, InstallableLanguages)) = (UINT8) (InstallableLanguage->NumberOfInstallableLanguages);\r
-\r
- //\r
- // Language Flags\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE13, Flags),\r
- &InstallableLanguage->LanguageFlags,\r
- 1\r
- );\r
-\r
- //\r
- // Current Language Number\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),\r
- &(InstallableLanguage->CurrentLanguageNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 14 - System Language String\r
- Current solution assumes that EFI_MISC_SYSTEM_LANGUAGE_STRINGs are logged with\r
- their LanguageId having ascending orders.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType14 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- UINT16 CurrentLanguageNumber;\r
- EFI_MISC_SYSTEM_LANGUAGE_STRING *LanguageString;\r
- \r
- LanguageString = (EFI_MISC_SYSTEM_LANGUAGE_STRING *) RecordData;\r
-\r
- //\r
- // Backup CurrentLanguage\r
- //\r
- CopyMem (\r
- &CurrentLanguageNumber,\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),\r
- 1\r
- );\r
-\r
- //\r
- // Clear the field so that SmbiosFldString can be reused\r
- //\r
- *(UINT8 *)((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages)) = 0;\r
- \r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),\r
- &(LanguageString->SystemLanguageString),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // Restore CurrentLanguage\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),\r
- &CurrentLanguageNumber,\r
- 1\r
- );\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 15 -- System Event Log.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType15 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_SYSTEM_EVENT_LOG_DATA *SystemEventLog;\r
-\r
- Status = EFI_SUCCESS;\r
- SystemEventLog = NULL;\r
-\r
- SystemEventLog = (EFI_MISC_SYSTEM_EVENT_LOG_DATA *) RecordData;\r
-\r
- //\r
- // Log Area Length\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, LogAreaLength),\r
- &(SystemEventLog->LogAreaLength),\r
- 2\r
- );\r
-\r
- //\r
- // Log Header Start Offset\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, LogHeaderStartOffset),\r
- &(SystemEventLog->LogHeaderStartOffset),\r
- 2\r
- );\r
-\r
- //\r
- // Log Data Start Offset\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, LogDataStartOffset),\r
- &(SystemEventLog->LogDataStartOffset),\r
- 2\r
- );\r
-\r
- //\r
- // Access Method\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, AccessMethod),\r
- &(SystemEventLog->AccessMethod),\r
- 1\r
- );\r
-\r
- //\r
- // Log Status\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, LogStatus),\r
- &(SystemEventLog->LogStatus),\r
- 1\r
- );\r
-\r
- //\r
- // Log Change Token\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, LogChangeToken),\r
- &(SystemEventLog->LogChangeToken),\r
- 4\r
- );\r
-\r
- //\r
- // Access Method Address\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, AccessMethodAddress),\r
- &(SystemEventLog->AccessMethodAddress),\r
- 4\r
- );\r
-\r
- //\r
- // Log Header Format\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, LogHeaderFormat),\r
- &(SystemEventLog->LogHeaderFormat),\r
- 1\r
- );\r
-\r
- //\r
- // Number of Supported Log Type Descriptors\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, NumberOfSupportedLogTypeDescriptors),\r
- &(SystemEventLog->NumberOfSupportedLogType),\r
- 1\r
- );\r
-\r
- //\r
- // Length of each Log Type Descriptor\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE15, LengthOfLogTypeDescriptor),\r
- &(SystemEventLog->LengthOfLogDescriptor),\r
- 1\r
- );\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 21 - Pointing Device.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType21 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_POINTING_DEVICE_TYPE_DATA *PointingDeviceData;\r
-\r
- PointingDeviceData = (EFI_MISC_POINTING_DEVICE_TYPE_DATA *) RecordData;\r
-\r
- //\r
- // Pointing Device Type\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE21, Type)) = (UINT8) (PointingDeviceData->PointingDeviceType);\r
-\r
- //\r
- // Pointing Device Interface\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE21, Interface)) = (UINT8) (PointingDeviceData->PointingDeviceInterface);\r
-\r
- //\r
- // Number Pointing Device Buttons\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE21, NumberOfButtons)) = (UINT8) (PointingDeviceData->NumberPointingDeviceButtons);\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 22 - Portable Battery.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType22 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_PORTABLE_BATTERY *PortableBattery;\r
- STRING_REF Chemistry;\r
- PortableBattery = (EFI_MISC_PORTABLE_BATTERY *)RecordData;\r
- \r
- //\r
- // Location\r
- // \r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE22, Location),\r
- &(PortableBattery->Location),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
- \r
- //\r
- // Manufacturer\r
- // \r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE22, Manufacturer),\r
- &(PortableBattery->Manufacturer),\r
- 2 \r
- ); \r
-\r
- //\r
- // ManufactureDate\r
- // \r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE22, ManufactureDate),\r
- &(PortableBattery->ManufactureDate),\r
- 2 \r
- ); \r
-\r
- //\r
- // SerialNumber\r
- // \r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE22, SerialNumber),\r
- &(PortableBattery->SerialNumber),\r
- 2 \r
- );\r
-\r
- //\r
- // DeviceName\r
- // \r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE22, DeviceName),\r
- &(PortableBattery->DeviceName),\r
- 2 \r
- ); \r
- \r
- //\r
- // DeviceChemistry\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE22, DeviceChemistry),\r
- &PortableBattery->DeviceChemistry,\r
- 1\r
- );\r
-\r
- //\r
- // DesignCapacity\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE22, DeviceCapacity),\r
- &PortableBattery->DesignCapacity,\r
- 2\r
- );\r
- \r
- //\r
- // DesignVoltage\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE22, DesignVoltage),\r
- &PortableBattery->DesignVoltage,\r
- 2\r
- ); \r
- \r
- //\r
- // SBDSVersionNumber\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE22, SBDSVersionNumber),\r
- &(PortableBattery->SBDSVersionNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
-\r
- //\r
- // MaximumError\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE22, MaximumErrorInBatteryData),\r
- &PortableBattery->MaximumError,\r
- 1\r
- ); \r
- \r
- //\r
- // SBDSSerialNumber\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE22, SBDSSerialNumber),\r
- &PortableBattery->SBDSSerialNumber,\r
- 2\r
- ); \r
-\r
- //\r
- // SBDSManufactureDate\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE22, SBDSManufactureDate),\r
- &PortableBattery->SBDSManufactureDate,\r
- 2\r
- );\r
-\r
- //\r
- // Avoid alignment issue on IPF\r
- //\r
- CopyMem (\r
- &Chemistry, \r
- &PortableBattery->SBDSDeviceChemistry,\r
- 2\r
- );\r
-\r
- //\r
- // SBDSDeviceChemistry\r
- // \r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE22, SBDSDeviceChemistry),\r
- &Chemistry,\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
- \r
- //\r
- // DesignCapacityMultiplier\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE22, DesignCapacityMultiplier),\r
- &PortableBattery->DesignCapacityMultiplier,\r
- 1\r
- ); \r
- \r
- //\r
- // OEMSpecific\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE22, OEMSpecific),\r
- &PortableBattery->OEMSpecific,\r
- 4\r
- );\r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 23 - System Reset.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType23 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_RESET_CAPABILITIES_DATA *SystemResetData;\r
-\r
- SystemResetData = (EFI_MISC_RESET_CAPABILITIES_DATA *) RecordData;\r
-\r
- //\r
- // Reset Capabilities\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE23, Capabilities),\r
- &(SystemResetData->ResetCapabilities),\r
- 1\r
- );\r
-\r
- //\r
- // Reset Count\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE23, ResetCount),\r
- &(SystemResetData->ResetCount),\r
- 2\r
- );\r
-\r
- //\r
- // Reset Limit\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE23, ResetLimit),\r
- &(SystemResetData->ResetLimit),\r
- 2\r
- );\r
-\r
- //\r
- // Reset Timer Interval\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE23, TimerInterval),\r
- &(SystemResetData->ResetTimerInterval),\r
- 2\r
- );\r
-\r
- //\r
- // Reset Timeout\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE23, Timeout),\r
- &(SystemResetData->ResetTimeout),\r
- 2\r
- );\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 24 - Hardware Security.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType24 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA *HardwareSecurity;\r
- \r
- HardwareSecurity = (EFI_MISC_HARDWARE_SECURITY_SETTINGS_DATA *)RecordData;\r
- \r
- //\r
- // Hardware Security Settings\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE24, HardwareSecuritySettings),\r
- &HardwareSecurity->HardwareSecuritySettings,\r
- 1\r
- );\r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 25 - System Power Controls.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType25 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_SCHEDULED_POWER_ON_MONTH *PowerOnMonth;\r
- \r
- PowerOnMonth = (EFI_MISC_SCHEDULED_POWER_ON_MONTH *)RecordData;\r
- \r
- //\r
- // ScheduledPoweronMonth\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE25, NextScheduledPowerOnMonth),\r
- &PowerOnMonth->ScheduledPoweronMonth,\r
- 1\r
- );\r
- \r
- //\r
- // ScheduledPoweronDayOfMonth\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE25, NextScheduledPowerOnDayOfMonth),\r
- &PowerOnMonth->ScheduledPoweronDayOfMonth,\r
- 1\r
- ); \r
-\r
- //\r
- // ScheduledPoweronHour\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE25, NextScheduledPowerOnHour),\r
- &PowerOnMonth->ScheduledPoweronHour,\r
- 1\r
- ); \r
-\r
- //\r
- // ScheduledPoweronMinute\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE25, NextScheduledPowerOnMinute),\r
- &PowerOnMonth->ScheduledPoweronMinute,\r
- 1\r
- ); \r
-\r
- //\r
- // ScheduledPoweronSecond\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE25, NextScheduledPowerOnSecond),\r
- &PowerOnMonth->ScheduledPoweronSecond,\r
- 1\r
- );\r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 26 - Voltage Probe.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType26 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_VOLTAGE_PROBE_DESCRIPTION *VoltageProbe;\r
- \r
- VoltageProbe = (EFI_MISC_VOLTAGE_PROBE_DESCRIPTION *)RecordData;\r
- \r
- //\r
- // VoltageProbe Description\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE26, Description),\r
- &(VoltageProbe->VoltageProbeDescription),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
- \r
- //\r
- // VoltageProbeLocation\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE26, LocationAndStatus),\r
- &VoltageProbe->VoltageProbeLocation,\r
- 1\r
- ); \r
- \r
- //\r
- // VoltageProbeMaximumValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE26, MaximumValue),\r
- &VoltageProbe->VoltageProbeMaximumValue,\r
- 2\r
- ); \r
- \r
- //\r
- // VoltageProbeMinimumValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE26, MinimumValue),\r
- &VoltageProbe->VoltageProbeMinimumValue,\r
- 2\r
- ); \r
-\r
- //\r
- // VoltageProbeResolution\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE26, Resolution),\r
- &VoltageProbe->VoltageProbeResolution,\r
- 2\r
- ); \r
-\r
- //\r
- // VoltageProbeTolerance\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE26, Tolerance),\r
- &VoltageProbe->VoltageProbeTolerance,\r
- 2\r
- ); \r
-\r
- //\r
- // VoltageProbeAccuracy\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE26, Accuracy),\r
- &VoltageProbe->VoltageProbeAccuracy,\r
- 2\r
- ); \r
- \r
- //\r
- // VoltageProbeNominalValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE26, NominalValue),\r
- &VoltageProbe->VoltageProbeNominalValue,\r
- 2\r
- ); \r
-\r
- //\r
- // VoltageProbeOemDefined\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE26, OEMDefined),\r
- &VoltageProbe->VoltageProbeOemDefined,\r
- 4\r
- );\r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 27 - Cooling Device.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType27 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_COOLING_DEVICE_TEMP_LINK *CoolingDevice;\r
- \r
- CoolingDevice = (EFI_MISC_COOLING_DEVICE_TEMP_LINK *)RecordData;\r
- \r
- //\r
- // Device Type\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE27, DeviceTypeAndStatus),\r
- &CoolingDevice->CoolingDeviceType,\r
- 1\r
- );\r
- \r
- //\r
- // Temperature Probe\r
- //\r
- SmbiosFldInterLink (\r
- StructureNode,\r
- (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE27, TemperatureProbeHandle),\r
- 28, // SMBIOS type 28 - Temperature Probe\r
- &CoolingDevice->CoolingDeviceTemperatureLink,\r
- &gEfiMiscSubClassGuid\r
- );\r
- \r
- //\r
- // CoolingDeviceUnitGroup\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE27, CoolingUnitGroup),\r
- &CoolingDevice->CoolingDeviceUnitGroup,\r
- 1\r
- );\r
-\r
- //\r
- // CoolingDeviceUnitGroup\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE27, OEMDefined),\r
- &CoolingDevice->CoolingDeviceOemDefined,\r
- 4\r
- );\r
-\r
- //\r
- // CoolingDeviceNominalSpeed\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE27, NominalSpeed),\r
- &CoolingDevice->CoolingDeviceNominalSpeed,\r
- 2\r
- );\r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 28 -- Temperature Probe.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType28 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION *TemperatureProbe;\r
- \r
- TemperatureProbe = (EFI_MISC_TEMPERATURE_PROBE_DESCRIPTION *)RecordData;\r
- \r
- //\r
- // TemperatureProbeDescription\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE28, Description),\r
- &(TemperatureProbe->TemperatureProbeDescription),\r
- 2\r
- );\r
- \r
- //\r
- // TemperatureProbeLocation\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE28, LocationAndStatus),\r
- &TemperatureProbe->TemperatureProbeLocation,\r
- 1\r
- ); \r
- \r
- //\r
- // TemperatureProbeMaximumValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE28, MaximumValue),\r
- &TemperatureProbe->TemperatureProbeMaximumValue,\r
- 2\r
- ); \r
-\r
- //\r
- // TemperatureProbeMinimumValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE28, MinimumValue),\r
- &TemperatureProbe->TemperatureProbeMinimumValue,\r
- 2\r
- ); \r
-\r
- //\r
- // TemperatureProbeResolution\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE28, Resolution),\r
- &TemperatureProbe->TemperatureProbeResolution,\r
- 2\r
- ); \r
- \r
-\r
- //\r
- // TemperatureProbeTolerance\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE28, Tolerance),\r
- &TemperatureProbe->TemperatureProbeTolerance,\r
- 2\r
- ); \r
-\r
- //\r
- // TemperatureProbeAccuracy\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE28, Accuracy),\r
- &TemperatureProbe->TemperatureProbeAccuracy,\r
- 2\r
- );\r
-\r
- //\r
- // TemperatureProbeNominalValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE28, NominalValue),\r
- &TemperatureProbe->TemperatureProbeNominalValue,\r
- 2\r
- );\r
-\r
- //\r
- // TemperatureProbeOemDefined\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE28, OEMDefined),\r
- &TemperatureProbe->TemperatureProbeOemDefined,\r
- 4\r
- );\r
- \r
- return EFI_SUCCESS;\r
-} \r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 29 -- Electrical Current Probe.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType29 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION *ElectricalProbe;\r
- \r
- ElectricalProbe = (EFI_MISC_ELECTRICAL_CURRENT_PROBE_DESCRIPTION *)RecordData;\r
- \r
- //\r
- // ElectricalCurrentProbeDescription\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE29, Description),\r
- &(ElectricalProbe->ElectricalCurrentProbeDescription),\r
- 2 // 64 * sizeof(CHAR16)\r
- );\r
- \r
- //\r
- // ElectricalCurrentProbeLocation\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE29, LocationAndStatus),\r
- &ElectricalProbe->ElectricalCurrentProbeLocation,\r
- 1\r
- );\r
- \r
- //\r
- // ElectricalCurrentProbeMaximumValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE29, MaximumValue),\r
- &ElectricalProbe->ElectricalCurrentProbeMaximumValue,\r
- 2\r
- ); \r
-\r
- //\r
- // ElectricalCurrentProbeMinimumValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE29, MinimumValue),\r
- &ElectricalProbe->ElectricalCurrentProbeMinimumValue,\r
- 2\r
- ); \r
-\r
- //\r
- // ElectricalCurrentProbeResolution\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE29, Resolution),\r
- &ElectricalProbe->ElectricalCurrentProbeResolution,\r
- 2\r
- ); \r
-\r
- //\r
- // ElectricalCurrentProbeTolerance\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE29, Tolerance),\r
- &ElectricalProbe->ElectricalCurrentProbeTolerance,\r
- 2\r
- ); \r
-\r
- //\r
- // ElectricalCurrentProbeAccuracy\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE29, Accuracy),\r
- &ElectricalProbe->ElectricalCurrentProbeAccuracy,\r
- 2\r
- ); \r
- //\r
- // ElectricalCurrentProbeNominalValue\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE29, NominalValue),\r
- &ElectricalProbe->ElectricalCurrentProbeNominalValue,\r
- 2\r
- ); \r
-\r
- //\r
- // ElectricalCurrentProbeOemDefined\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE29, OEMDefined),\r
- &ElectricalProbe->ElectricalCurrentProbeOemDefined,\r
- 4\r
- );\r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 30 -- Out-of-Band Remote Access.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType30 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION *RemoteData;\r
- \r
- RemoteData = (EFI_MISC_REMOTE_ACCESS_MANUFACTURER_DESCRIPTION *)RecordData;\r
- \r
- //\r
- // ManufacturerNameDescription\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE30, ManufacturerName),\r
- &(RemoteData->RemoteAccessManufacturerNameDescription),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
- \r
- //\r
- // RemoteAccessConnections\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE30, Connections),\r
- &RemoteData->RemoteAccessConnections,\r
- 1\r
- );\r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 32 -- System Boot Information.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType32 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- EFI_MISC_BOOT_INFORMATION_STATUS_DATA *BootInfo;\r
-\r
- Status = EFI_SUCCESS;\r
- BootInfo = (EFI_MISC_BOOT_INFORMATION_STATUS_DATA *) RecordData;\r
-\r
- //\r
- // Set reserved bytes\r
- //\r
- ZeroMem ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE32, Reserved), 6);\r
-\r
- //\r
- // Set BootInformation Status\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE32, BootStatus),\r
- &BootInfo->BootInformationStatus,\r
- 1\r
- );\r
-\r
- //\r
- // Set Additional Data\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE32, BootStatus) + 1,\r
- &BootInfo->BootInformationData,\r
- 9\r
- );\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 34 -- Management Device.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType34 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION *ManagementDevice;\r
- \r
- ManagementDevice = (EFI_MISC_MANAGEMENT_DEVICE_DESCRIPTION *)RecordData;\r
- \r
- //\r
- // ManagementDeviceDescription\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE34, Description),\r
- &(ManagementDevice->ManagementDeviceDescription),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
- \r
- //\r
- // ManagementDeviceType\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE34, Type),\r
- &ManagementDevice->ManagementDeviceType,\r
- 1\r
- ); \r
-\r
- //\r
- // ManagementDeviceAddress\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE34, Address),\r
- &ManagementDevice->ManagementDeviceAddress,\r
- 4\r
- ); \r
-\r
- //\r
- // ManagementDeviceAddressType\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE34, AddressType),\r
- &ManagementDevice->ManagementDeviceAddressType,\r
- 1\r
- ); \r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType36 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD *DeviceThreshold;\r
- \r
- DeviceThreshold = (EFI_MISC_MANAGEMENT_DEVICE_THRESHOLD *)RecordData;\r
-\r
- //\r
- // LowerThresNonCritical\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE36, LowerThresholdNonCritical),\r
- &DeviceThreshold->LowerThresNonCritical,\r
- 2\r
- ); \r
-\r
- //\r
- // UpperThresNonCritical\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE36, UpperThresholdNonCritical),\r
- &DeviceThreshold->UpperThresNonCritical,\r
- 2\r
- );\r
- \r
- //\r
- // LowerThresCritical\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE36, LowerThresholdCritical),\r
- &DeviceThreshold->LowerThresCritical,\r
- 2\r
- ); \r
-\r
- //\r
- // UpperThresCritical\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE36, UpperThresholdCritical),\r
- &DeviceThreshold->UpperThresCritical,\r
- 2\r
- ); \r
-\r
- //\r
- // LowerThresNonRecover\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE36, LowerThresholdNonRecoverable),\r
- &DeviceThreshold->LowerThresNonRecover,\r
- 2\r
- );\r
-\r
- //\r
- // UpperThresNonRecover\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE36, UpperThresholdNonRecoverable),\r
- &DeviceThreshold->UpperThresNonRecover,\r
- 2\r
- ); \r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 38 -- IPMI device info.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType38 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_IPMI_INTERFACE_TYPE_DATA *IpmiInfo;\r
-\r
- IpmiInfo = (EFI_MISC_IPMI_INTERFACE_TYPE_DATA *) RecordData;\r
-\r
- //\r
- // Interface Type\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE38, InterfaceType)) = (UINT8) (IpmiInfo->IpmiInterfaceType);\r
-\r
- //\r
- // IPMI specification revision\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE38, IPMISpecificationRevision)) = \r
- (UINT8) ((IpmiInfo->IpmiSpecificationRevision.IpmiSpecLeastSignificantDigit) + \\r
- (IpmiInfo->IpmiSpecificationRevision.IpmiSpecMostSignificantDigit << 4));\r
-\r
- //\r
- // I2C slave address\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE38, I2CSlaveAddress)) = (UINT8) (IpmiInfo->IpmiI2CSlaveAddress);\r
-\r
- //\r
- // NV storage device address\r
- //\r
- *(UINT8 *) ((UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE38, NVStorageDeviceAddress)) = (UINT8) (IpmiInfo->IpmiNvDeviceAddress);\r
-\r
- //\r
- // Base address\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE38, BaseAddress),\r
- &IpmiInfo->IpmiBaseAddress,\r
- 8\r
- );\r
-\r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 39 -- Power supply.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType39 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_MISC_SYSTEM_POWER_SUPPLY *PowerSupply;\r
- \r
- PowerSupply = (EFI_MISC_SYSTEM_POWER_SUPPLY *)RecordData;\r
- \r
- //\r
- // PowerUnitGroup\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE39, PowerUnitGroup),\r
- &PowerSupply->PowerUnitGroup,\r
- 1\r
- ); \r
- \r
- //\r
- // PowerSupplyLocation\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE39, Location),\r
- &(PowerSupply->PowerSupplyLocation),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
-\r
- //\r
- // PowerSupplyDeviceName\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE39, DeviceName),\r
- &(PowerSupply->PowerSupplyDeviceName),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
-\r
- //\r
- // PowerSupplyManufacturer\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE39, Manufacturer),\r
- &(PowerSupply->PowerSupplyManufacturer),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
-\r
- //\r
- // PowerSupplySerialNumber\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE39, SerialNumber),\r
- &(PowerSupply->PowerSupplySerialNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
- \r
- //\r
- // PowerSupplyAssetTagNumber\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE39, AssetTagNumber),\r
- &(PowerSupply->PowerSupplyAssetTagNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
-\r
- //\r
- // PowerSupplyModelPartNumber\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE39, ModelPartNumber),\r
- &(PowerSupply->PowerSupplyModelPartNumber),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
- \r
- //\r
- // PowerSupplyRevisionLevel\r
- //\r
- SmbiosFldString (\r
- StructureNode,\r
- OFFSET_OF (SMBIOS_TABLE_TYPE39, RevisionLevel),\r
- &(PowerSupply->PowerSupplyRevisionLevel),\r
- 2 // 64 * sizeof(CHAR16)\r
- ); \r
-\r
- //\r
- // PowerSupplyMaxPowerCapacity\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE39, MaxPowerCapacity),\r
- &PowerSupply->PowerSupplyMaxPowerCapacity,\r
- 2\r
- );\r
-\r
- //\r
- // PowerSupplyCharacteristics\r
- //\r
- CopyMem (\r
- (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE39, PowerSupplyCharacteristics),\r
- &PowerSupply->PowerSupplyCharacteristics,\r
- 2\r
- );\r
- \r
- //\r
- // PowerSupplyInputVoltageProbeLink\r
- //\r
- SmbiosFldInterLink (\r
- StructureNode,\r
- (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE39, InputVoltageProbeHandle),\r
- 26, // SMBIOS type 26 - Voltage Probe\r
- &PowerSupply->PowerSupplyInputVoltageProbeLink,\r
- &gEfiMiscSubClassGuid\r
- ); \r
-\r
- //\r
- // PowerSupplyCoolingDeviceLink\r
- //\r
- SmbiosFldInterLink (\r
- StructureNode,\r
- (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE39, CoolingDeviceHandle),\r
- 27, // SMBIOS type 27 - Cooling Device\r
- &PowerSupply->PowerSupplyCoolingDeviceLink,\r
- &gEfiMiscSubClassGuid\r
- ); \r
-\r
- //\r
- // PowerSupplyInputCurrentProbeLink\r
- //\r
- SmbiosFldInterLink (\r
- StructureNode,\r
- (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE39, InputCurrentProbeHandle),\r
- 29, // SMBIOS type 29 - Electrical Current Probe\r
- &PowerSupply->PowerSupplyInputCurrentProbeLink,\r
- &gEfiMiscSubClassGuid\r
- ); \r
- \r
- return EFI_SUCCESS;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 0x80-0xFF -- OEM.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscTypeOEM (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- EFI_STATUS Status;\r
- UINT8 *NewRecordData;\r
- UINT32 IncrementDataSize;\r
- UINT16 Handle;\r
- INT8 Result;\r
- UINT32 StructureSize;\r
- UINT8 CountOfString;\r
- \r
- Status = EFI_SUCCESS;\r
- NewRecordData = NULL;\r
-\r
- //\r
- // Check if OEM structure has included 2 trailing 0s in data record, if not, \r
- // we append them at the end to ensure OEM structure is always correct with 2 trailing 0s.\r
- //\r
- Result = SmbiosCheckTrailingZero (RecordData, RecordDataSize);\r
- \r
- if (Result != 0) {\r
- DEBUG ((EFI_D_ERROR, "OEM SMBIOS type %x is not valid!!\n", ((SMBIOS_STRUCTURE *) RecordData) -> Type));\r
- if (Result == -1) {\r
- //\r
- // No 2 trailing 0s exist\r
- //\r
- DEBUG ((EFI_D_ERROR, "OEM SMBIOS type has NO 2 trailing 0s!!\n"));\r
- IncrementDataSize = 2;\r
- } else {\r
- //\r
- // Only 1 trailing 0 exist at the end\r
- //\r
- DEBUG ((EFI_D_ERROR, "OEM SMBIOS type has only 1 trailing 0!!\n"));\r
- IncrementDataSize = 1;\r
- }\r
- NewRecordData = AllocateZeroPool (RecordDataSize + IncrementDataSize);\r
- ASSERT (NewRecordData != NULL);\r
- CopyMem (NewRecordData, RecordData, RecordDataSize);\r
- RecordData = NewRecordData;\r
- RecordDataSize += IncrementDataSize;\r
- }\r
- \r
- Status = GetSmbiosStructureSize (StructureNode->Structure, &StructureSize, &CountOfString);\r
- ASSERT_EFI_ERROR (Status);\r
- \r
- if (StructureSize < RecordDataSize) {\r
- Status = SmbiosEnlargeStructureBuffer (\r
- StructureNode,\r
- ((EFI_SMBIOS_TABLE_HEADER *)RecordData)->Length,\r
- StructureSize,\r
- RecordDataSize\r
- );\r
- if (EFI_ERROR (Status)) {\r
- return Status;\r
- }\r
- }\r
- \r
- //\r
- // Copy the entire data (including the Smbios structure header),\r
- // but preserve the handle that is already allocated.\r
- //\r
- Handle = StructureNode->Structure->Handle;\r
- CopyMem (\r
- StructureNode->Structure,\r
- RecordData,\r
- RecordDataSize\r
- );\r
- StructureNode->Structure->Handle = Handle;\r
- StructureNode->StructureSize = RecordDataSize;\r
- \r
- if (NewRecordData != NULL) {\r
- FreePool (NewRecordData);\r
- }\r
-\r
- return Status;\r
-}\r
-\r
-/**\r
- Field Filling Function for Misc SubClass record type 127 - End-of-Table.\r
- \r
- @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.\r
- @param Offset Offset of SMBIOS record which RecordData will be filled.\r
- @param RecordData RecordData buffer will be filled.\r
- @param RecordDataSize The size of RecordData buffer.\r
- \r
- @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.\r
-**/\r
-EFI_STATUS\r
-SmbiosFldMiscType127 (\r
- IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,\r
- IN UINT32 Offset,\r
- IN VOID *RecordData,\r
- IN UINT32 RecordDataSize\r
- )\r
-{\r
- return EFI_SUCCESS;\r
-}\r