]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add missing Type 35 support and correct SmbiosFldMiscType13 implementation.
authorlzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 20 Apr 2011 02:17:42 +0000 (02:17 +0000)
committerlzeng14 <lzeng14@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 20 Apr 2011 02:17:42 +0000 (02:17 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11571 6f19259b-4bc3-4df7-8a09-765794883524

EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/ConvTable.c
EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/MiscConv.c
EdkCompatibilityPkg/Compatibility/PiSmbiosRecordOnDataHubSmbiosRecordThunk/Thunk.h

index 9c29748b0eb9989d8daccc7d16a855a8b96ca872..61bc1e9b2990ba99f95d435276623246a5adb997 100644 (file)
@@ -325,6 +325,15 @@ SMBIOS_TYPE_INFO_TABLE_ENTRY  mTypeInfoTable[] = {
     FALSE\r
   },\r
   //\r
+  // Type 35: Management Device Component\r
+  //\r
+  {\r
+    35,\r
+    0x0d,\r
+    FALSE,\r
+    FALSE\r
+  },\r
+  //\r
   // Type 36: Management Device Threshold\r
   //\r
   {\r
@@ -1234,6 +1243,19 @@ SMBIOS_CONVERSION_TABLE_ENTRY mConversionTable[] = {
     SmbiosFldMiscType34\r
   },\r
 \r
+  {\r
+    //\r
+    // Misc SubClass -- Record Type 0x1C: Management Device Component (SMBIOS Type 35)\r
+    //\r
+    EFI_MISC_SUBCLASS_GUID,\r
+    EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION_RECORD_NUMBER, // 35,\r
+    35,\r
+    BySubclassInstanceSubinstanceProducer,\r
+    ByFunction,\r
+    0,\r
+    SmbiosFldMiscType35\r
+  },\r
+\r
   {\r
     //\r
     // Misc SubClass -- Record Type 0x21: Management Device Threshold (SMBIOS Type 36)\r
index 5c62cc6b537957b4da2426299ee220a19e44ddb9..428dbf02387ae2e87c496c9957e3e99d51afcd28 100644 (file)
@@ -913,12 +913,12 @@ SmbiosFldMiscType13 (
 \r
   //\r
   // Current Language Number\r
+  // It's the index of multiple languages. Languages are filled by SmbiosFldMiscType14.\r
   //\r
-  SmbiosFldString (\r
-    StructureNode,\r
-    OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),\r
-    &(InstallableLanguage->CurrentLanguageNumber),\r
-    2 // 64 * sizeof(CHAR16)\r
+  CopyMem (\r
+    (UINT8 *) (StructureNode->Structure) + OFFSET_OF (SMBIOS_TABLE_TYPE13, CurrentLanguages),\r
+    &InstallableLanguage->CurrentLanguageNumber,\r
+    1\r
     );\r
 \r
   return EFI_SUCCESS;\r
@@ -2040,6 +2040,91 @@ SmbiosFldMiscType34 (
   return EFI_SUCCESS;\r
 }\r
 \r
+/**\r
+  Field Filling Function for Misc SubClass record type 35 -- Management Device Component.\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
+SmbiosFldMiscType35 (\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_COMPONENT_DESCRIPTION  *ManagementDeviceComponent;\r
+  EFI_INTER_LINK_DATA                               ManagementDeviceLink;\r
+  EFI_INTER_LINK_DATA                               ManagementDeviceComponentLink;\r
+  EFI_INTER_LINK_DATA                               ManagementDeviceThresholdLink;\r
+  \r
+  ManagementDeviceComponent = (EFI_MISC_MANAGEMENT_DEVICE_COMPONENT_DESCRIPTION *)RecordData;\r
+  CopyMem (\r
+    &ManagementDeviceLink,\r
+    &ManagementDeviceComponent->ManagementDeviceLink,\r
+    sizeof (EFI_INTER_LINK_DATA)\r
+    );\r
+  CopyMem (\r
+    &ManagementDeviceComponentLink,\r
+    &ManagementDeviceComponent->ManagementDeviceComponentLink,\r
+    sizeof (EFI_INTER_LINK_DATA)\r
+    );\r
+  CopyMem (&ManagementDeviceThresholdLink,\r
+    &ManagementDeviceComponent->ManagementDeviceThresholdLink,\r
+    sizeof (EFI_INTER_LINK_DATA)\r
+    );\r
+\r
+  //\r
+  // ManagementDeviceComponentDescription\r
+  //\r
+  SmbiosFldString (\r
+    StructureNode,\r
+    OFFSET_OF (SMBIOS_TABLE_TYPE35, Description),\r
+    &ManagementDeviceComponent->ManagementDeviceComponentDescription,\r
+    2       // 64 * sizeof(CHAR16)\r
+    );\r
+\r
+  //\r
+  // ManagementDeviceLink\r
+  //\r
+  SmbiosFldInterLink (\r
+    StructureNode,\r
+    (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ManagementDeviceHandle),\r
+    34,     // SMBIOS type 34 - Management Device\r
+    &ManagementDeviceLink,\r
+    &gEfiMiscSubClassGuid\r
+    );\r
+\r
+  //\r
+  // ManagementDeviceComponentLink\r
+  //\r
+  SmbiosFldInterLink (\r
+    StructureNode,\r
+    (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ComponentHandle),\r
+    ManagementDeviceComponent->ComponentType,   // SMBIOS type, according to SMBIOS spec, it can be Type 26, 27, 28, 29\r
+    &ManagementDeviceComponentLink,\r
+    &gEfiMiscSubClassGuid\r
+    );\r
+\r
+  //\r
+  // ManagementDeviceThresholdLink\r
+  //\r
+  SmbiosFldInterLink (\r
+    StructureNode,\r
+    (UINT16) OFFSET_OF (SMBIOS_TABLE_TYPE35, ThresholdHandle),\r
+    36,     // SMBIOS type 36 - Management Device Threshold Data\r
+    &ManagementDeviceThresholdLink,\r
+    &gEfiMiscSubClassGuid\r
+    );\r
+\r
+  return EFI_SUCCESS;\r
+}\r
+\r
 /**\r
   Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.\r
   \r
index a2f477dafa86275a75021dc93861befadf590200..a7e569bfe9f686b4e60dd50ffe251ab8db4aa3f1 100644 (file)
@@ -1257,6 +1257,24 @@ SmbiosFldMiscType34 (
   IN      UINT32                    RecordDataSize\r
   );\r
 \r
+/**\r
+  Field Filling Function for Misc SubClass record type 35 -- Management Device Component.\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
+SmbiosFldMiscType35 (\r
+  IN OUT  SMBIOS_STRUCTURE_NODE     *StructureNode,\r
+  IN      UINT32                    Offset,\r
+  IN      VOID                      *RecordData,\r
+  IN      UINT32                    RecordDataSize\r
+  );\r
+\r
 /**\r
   Field Filling Function for Misc SubClass record type 36 -- Management Device Threshold.\r
   \r