diff --git a/phosphor-power-supply/power_supply.cpp b/phosphor-power-supply/power_supply.cpp
index 77d533a..9735b6d 100644
--- a/phosphor-power-supply/power_supply.cpp
+++ b/phosphor-power-supply/power_supply.cpp
@@ -196,7 +196,6 @@
     std::string fn;
     std::string header;
     std::string sn;
-    std::string version;
     using PropertyMap =
         std::map<std::string, std::variant<std::string, std::vector<uint8_t>>>;
     PropertyMap assetProps;
@@ -261,8 +260,9 @@
 
         try
         {
-            version = pmbusIntf->readString(FW_VERSION, Type::HwmonDeviceDebug);
-            versionProps.emplace(VERSION_PROP, version);
+            fwVersion =
+                pmbusIntf->readString(FW_VERSION, Type::HwmonDeviceDebug);
+            versionProps.emplace(VERSION_PROP, fwVersion);
         }
         catch (ReadFailure& e)
         {
diff --git a/phosphor-power-supply/power_supply.hpp b/phosphor-power-supply/power_supply.hpp
index 875e714..757171d 100644
--- a/phosphor-power-supply/power_supply.hpp
+++ b/phosphor-power-supply/power_supply.hpp
@@ -193,16 +193,37 @@
         return vinUVFault;
     }
 
+    /**
+     * @brief Returns the device path
+     *
+     * This can be used for error call outs.
+     * Example: /sys/bus/i2c/devices/3-0068
+     */
     const std::string getDevicePath() const
     {
         return pmbusIntf->path();
     }
 
+    /**
+     * @brief Returns this power supplies inventory path.
+     *
+     * This can be used for error call outs.
+     * Example:
+     * /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
+     */
     const std::string& getInventoryPath() const
     {
         return inventoryPath;
     }
 
+    /**
+     * @brief Returns the firmware revision version read from the power supply
+     */
+    const std::string& getFWVersion() const
+    {
+        return fwVersion;
+    }
+
     /** @brief Returns true if the number of failed reads exceeds limit
      * TODO: or CML bit on.
      */
@@ -261,6 +282,9 @@
      */
     std::unique_ptr<phosphor::pmbus::PMBusBase> pmbusIntf;
 
+    /** @brief Stored copy of the firmware version/revision string */
+    std::string fwVersion;
+
     /**
      *  @brief Updates the presence status by querying D-Bus
      *
diff --git a/phosphor-power-supply/psu_manager.cpp b/phosphor-power-supply/psu_manager.cpp
index b7f8caa..cf359bb 100644
--- a/phosphor-power-supply/psu_manager.cpp
+++ b/phosphor-power-supply/psu_manager.cpp
@@ -192,6 +192,10 @@
         {
             additionalData["STATUS_WORD"] =
                 std::to_string(psu->getStatusWord());
+            // If there are faults being reported, they possibly could be
+            // related to a bug in the firmware version running on the power
+            // supply. Capture that data into the error as well.
+            additionalData["FW_VERSION"] = psu->getFWVersion();
 
             if ((psu->hasInputFault() || psu->hasVINUVFault()))
             {
