diff --git a/libpfr/src/pfr.cpp b/libpfr/src/pfr.cpp
index 0b7fdc4..61c52f0 100644
--- a/libpfr/src/pfr.cpp
+++ b/libpfr/src/pfr.cpp
@@ -81,12 +81,6 @@
     "MAIN_PLD_MINOR_REV_BIT3", "MAIN_PLD_MINOR_REV_BIT2",
     "MAIN_PLD_MINOR_REV_BIT1", "MAIN_PLD_MINOR_REV_BIT0"};
 
-static const std::array<std::string, 8> pldGpioLines = {
-    "SGPIO_PLD_MAJOR_REV_BIT3", "SGPIO_PLD_MAJOR_REV_BIT2",
-    "SGPIO_PLD_MAJOR_REV_BIT1", "SGPIO_PLD_MAJOR_REV_BIT0",
-    "SGPIO_PLD_MINOR_REV_BIT3", "SGPIO_PLD_MINOR_REV_BIT2",
-    "SGPIO_PLD_MINOR_REV_BIT1", "SGPIO_PLD_MINOR_REV_BIT0"};
-
 bool exceptionFlag = true;
 
 void init(std::shared_ptr<sdbusplus::asio::connection> conn,
@@ -330,10 +324,8 @@
 {
     // CPLD SGPIO lines
     gpiod::line mainCPLDLine;
-    gpiod::line pldLine;
-    // read main pld and pld version
+    // read main pld version
     uint8_t mainCPLDVer = 0;
-    uint8_t pldVer = 0;
     // main CPLD
     for (const auto& gLine : mainCPLDGpioLines)
     {
@@ -353,25 +345,6 @@
         }
     }
 
-    // pld lines
-    for (const auto& gLine : pldGpioLines)
-    {
-        uint8_t value = 0;
-        if (getGPIOInput(gLine, pldLine, &value))
-        {
-            pldVer <<= 1;
-            pldVer = pldVer | value;
-        }
-        else
-        {
-            phosphor::logging::log<phosphor::logging::level::ERR>(
-                "Failed to read GPIO line: ",
-                phosphor::logging::entry("MSG=%s", gLine.c_str()));
-            pldVer = 0;
-            break;
-        }
-    }
-
     std::string svnRoTHash = "";
 
     // check if reg 0x00 read 0xde
@@ -405,14 +378,13 @@
 
     // CPLD version format:
     // When PFR CPLD is present
-    // <MainPLDMajorMinor.PLDMajorMinor>-<SVN.RoT>-<CPLD-Hash>
-    // Example: 2.7-1.1-<Hash string>
+    // <MainPLDMajorMinor>-<SVN.RoT>-<CPLD-Hash>
+    // Example: 2-1.1-<Hash string>
 
-    // When Non-PFR CPLD is present -> <MainPLDMajorMinor.PLDMajorMinor>
-    // Example: 2.7
+    // When Non-PFR CPLD is present -> <MainPLDMajorMinor>
+    // Example: 2
 
-    std::string version = std::to_string(mainCPLDVer) + "." +
-                          std::to_string(pldVer) + svnRoTHash;
+    std::string version = std::to_string(mainCPLDVer) + svnRoTHash;
     return version;
 }
 
