summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524>2011-04-20 02:17:42 +0000
committerlzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524>2011-04-20 02:17:42 +0000
commit0ec4f1cb6f97913de807964695e6a0d3e9455341 (patch)
tree5171a0cd73de0172d0165d864d1edbe410434fb8
parent33d9d834394e646b1fc7d472703d21a18f4ab46d (diff)
downloadedk2-platforms-0ec4f1cb6f97913de807964695e6a0d3e9455341.tar.xz
Add missing Type 35 support and correct SmbiosFldMiscType13 implementation.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11571 6f19259b-4bc3-4df7-8a09-765794883524
-rw-r--r--EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/ConvTable.c22
-rw-r--r--EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/MiscConv.c95
-rw-r--r--EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h18
3 files changed, 130 insertions, 5 deletions
diff --git a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/ConvTable.c b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/ConvTable.c
index 9c29748b0e..61bc1e9b29 100644
--- a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/ConvTable.c
+++ b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/ConvTable.c
@@ -325,6 +325,15 @@ SMBIOS_TYPE_INFO_TABLE_ENTRY mTypeInfoTable[] = {
FALSE
},
//
+ // Type 35: Management Device Component
+ //
+ {
+ 35,
+ 0x0d,
+ FALSE,
+ FALSE
+ },
+ //
// Type 36: Management Device Threshold
//
{
@@ -1236,6 +1245,19 @@ SMBIOS_CONVERSION_TABLE_ENTRY mConversionTable[] = {
{
//
+ // Misc SubClass -- Record Type 0x1C: Management Device Component (SMBIOS Type 35)
+ //
+ EFI_MISC_SUBCLASS_GUID,
+ EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER, // 35,
+ 35,
+ BySubclassInstanceSubinstanceProducer,
+ ByFunction,
+ 0,
+ SmbiosFldMiscType35
+ },
+
+ {
+ //
// Misc SubClass -- Record Type 0x21: Management Device Threshold (SMBIOS Type 36)
//
EFI_MISC_SUBCLASS_GUID,
diff --git a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/MiscConv.c b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/MiscConv.c
index 5c62cc6b53..428dbf0238 100644
--- a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/MiscConv.c
+++ b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/MiscConv.c
@@ -913,12 +913,12 @@ SmbiosFldMiscType13 (
//
// Current Language Number
+ // It's the index of multiple languages. Languages are filled by SmbiosFldMiscType14.
//
- SmbiosFldString (
- StructureNode,
- OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),
- &(InstallableLanguage->CurrentLanguageNumber),
- 2 // 64 * sizeof(CHAR16)
+ CopyMem (
+ (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),
+ &InstallableLanguage->CurrentLanguageNumber,
+ 1
);
return EFI_SUCCESS;
@@ -2041,6 +2041,91 @@ SmbiosFldMiscType34 (
}
/**
+ Field Filling Function for Misc SubClass record type 35 -- Management Device Component.
+
+ @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
+ @param Offset Offset of SMBIOS record which RecordData will be filled.
+ @param RecordData RecordData buffer will be filled.
+ @param RecordDataSize The size of RecordData buffer.
+
+ @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
+**/
+EFI_STATUS
+SmbiosFldMiscType35 (
+ IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
+ IN UINT32 Offset,
+ IN VOID *RecordData,
+ IN UINT32 RecordDataSize
+ )
+{
+ EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION *ManagementDeviceComponent;
+ EFI_INTER_LINK_DATA ManagementDeviceLink;
+ EFI_INTER_LINK_DATA ManagementDeviceComponentLink;
+ EFI_INTER_LINK_DATA ManagementDeviceThresholdLink;
+
+ ManagementDeviceComponent = (EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION *)RecordData;
+ CopyMem (
+ &ManagementDeviceLink,
+ &ManagementDeviceComponent->ManagementDeviceLink,
+ sizeof (EFI_INTER_LINK_DATA)
+ );
+ CopyMem (
+ &ManagementDeviceComponentLink,
+ &ManagementDeviceComponent->ManagementDeviceComponentLink,
+ sizeof (EFI_INTER_LINK_DATA)
+ );
+ CopyMem (&ManagementDeviceThresholdLink,
+ &ManagementDeviceComponent->ManagementDeviceThresholdLink,
+ sizeof (EFI_INTER_LINK_DATA)
+ );
+
+ //
+ // ManagementDeviceComponentDescription
+ //
+ SmbiosFldString (
+ StructureNode,
+ OFFSET_OF (SMBIOS_TABLE_TYPE35, Description),
+ &ManagementDeviceComponent->ManagementDeviceComponentDescription,
+ 2 // 64 * sizeof(CHAR16)
+ );
+
+ //
+ // ManagementDeviceLink
+ //
+ SmbiosFldInterLink (
+ StructureNode,
+ (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ManagementDeviceHandle),
+ 34, // SMBIOS type 34 - Management Device
+ &ManagementDeviceLink,
+ &gEfiMiscSubClassGuid
+ );
+
+ //
+ // ManagementDeviceComponentLink
+ //
+ SmbiosFldInterLink (
+ StructureNode,
+ (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ComponentHandle),
+ ManagementDeviceComponent->ComponentType, // SMBIOS type, according to SMBIOS spec, it can be Type 26, 27, 28, 29
+ &ManagementDeviceComponentLink,
+ &gEfiMiscSubClassGuid
+ );
+
+ //
+ // ManagementDeviceThresholdLink
+ //
+ SmbiosFldInterLink (
+ StructureNode,
+ (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ThresholdHandle),
+ 36, // SMBIOS type 36 - Management Device Threshold Data
+ &ManagementDeviceThresholdLink,
+ &gEfiMiscSubClassGuid
+ );
+
+ return EFI_SUCCESS;
+}
+
+/**
Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.
@param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
diff --git a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h
index a2f477dafa..a7e569bfe9 100644
--- a/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h
+++ b/EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h
@@ -1258,6 +1258,24 @@ SmbiosFldMiscType34 (
);
/**
+ Field Filling Function for Misc SubClass record type 35 -- Management Device Component.
+
+ @param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.
+ @param Offset Offset of SMBIOS record which RecordData will be filled.
+ @param RecordData RecordData buffer will be filled.
+ @param RecordDataSize The size of RecordData buffer.
+
+ @retval EFI_SUCCESS Success fill RecordData into SMBIOS's record buffer.
+**/
+EFI_STATUS
+SmbiosFldMiscType35 (
+ IN OUT SMBIOS_STRUCTURE_NODE *StructureNode,
+ IN UINT32 Offset,
+ IN VOID *RecordData,
+ IN UINT32 RecordDataSize
+ );
+
+/**
Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.
@param StructureNode Pointer to SMBIOS_STRUCTURE_NODE which is current processed.