Adding ISDIMM support

Added ISDIMM support for Bonnell machine

Change-Id: Ifdb2fc9e2d38267c8eb6cd5848d30102ab48efd1
Signed-off-by: jinuthomas <jinu.joy.thomas@in.ibm.com>
diff --git a/ibm_vpd_utils.cpp b/ibm_vpd_utils.cpp
index ef9f058..388d869 100644
--- a/ibm_vpd_utils.cpp
+++ b/ibm_vpd_utils.cpp
@@ -371,10 +371,29 @@
         // KEYWORD VPD FORMAT
         return vpdType::KEYWORD_VPD;
     }
-    else if (is11SFormat.compare(MEMORY_VPD_START_TAG) == 0)
+    else if (((vpdVector[SPD_BYTE_3] & SPD_BYTE_BIT_0_3_MASK) ==
+              SPD_MODULE_TYPE_DDIMM) &&
+             (is11SFormat.compare(MEMORY_VPD_START_TAG)))
     {
-        // Memory VPD format
-        return vpdType::MEMORY_VPD;
+        // DDIMM Memory VPD format
+        if ((vpdVector[SPD_BYTE_2] & SPD_BYTE_MASK) == SPD_DRAM_TYPE_DDR5)
+        {
+            return vpdType::DDR5_DDIMM_MEMORY_VPD;
+        }
+        else if ((vpdVector[SPD_BYTE_2] & SPD_BYTE_MASK) == SPD_DRAM_TYPE_DDR4)
+        {
+            return vpdType::DDR4_DDIMM_MEMORY_VPD;
+        }
+    }
+    else if ((vpdVector[SPD_BYTE_2] & SPD_BYTE_MASK) == SPD_DRAM_TYPE_DDR5)
+    {
+        // ISDIMM Memory VPD format
+        return vpdType::DDR5_ISDIMM_MEMORY_VPD;
+    }
+    else if ((vpdVector[SPD_BYTE_2] & SPD_BYTE_MASK) == SPD_DRAM_TYPE_DDR4)
+    {
+        // ISDIMM Memory VPD format
+        return vpdType::DDR4_ISDIMM_MEMORY_VPD;
     }
 
     // INVALID VPD FORMAT