diff --git a/libpldmresponder/bios_enum_attribute.cpp b/libpldmresponder/bios_enum_attribute.cpp
index ba8895e..dd37057 100644
--- a/libpldmresponder/bios_enum_attribute.cpp
+++ b/libpldmresponder/bios_enum_attribute.cpp
@@ -33,6 +33,12 @@
     {
         defaultValues.emplace_back(val);
     }
+
+    Json vdn = entry.at("value_names");
+    for (auto& val : vdn)
+    {
+        valueDisplayNames.emplace_back(val);
+    }
     assert(defaultValues.size() == 1);
     defaultValue = defaultValues[0];
     if (dBusMap.has_value())
@@ -189,6 +195,14 @@
     dbusHandler->setDbusProperty(*dBusMap, it->first);
 }
 
+void BIOSEnumAttribute::populateValueDisplayNamesMap(uint16_t attrHandle)
+{
+    for (auto& vdn : valueDisplayNames)
+    {
+        valueDisplayNamesMap[attrHandle].push_back(vdn);
+    }
+}
+
 void BIOSEnumAttribute::constructEntry(
     const BIOSStringTable& stringTable, Table& attrTable, Table& attrValueTable,
     std::optional<std::variant<int64_t, std::string>> optAttributeValue)
@@ -201,14 +215,15 @@
     pldm_bios_table_attr_entry_enum_info info = {
         stringTable.findHandle(name),         readOnly,
         (uint8_t)possibleValuesHandle.size(), possibleValuesHandle.data(),
-        (uint8_t)defaultIndices.size(),       defaultIndices.data(),
-    };
+        (uint8_t)defaultIndices.size(),       defaultIndices.data()};
 
     auto attrTableEntry = table::attribute::constructEnumEntry(attrTable,
                                                                &info);
     auto [attrHandle, attrType,
           _] = table::attribute::decodeHeader(attrTableEntry);
 
+    populateValueDisplayNamesMap(attrHandle);
+
     std::vector<uint8_t> currValueIndices(1, 0);
 
     if (optAttributeValue.has_value())
