psu-ng: Add ACBEL PSU pmbus supported commands.

Update PSU monitor to use the following pmbus commands supported
by ACBEL PSU DD:

 - To clear STATUS_INPUT use curr1_crit_alarm instead of
   in1_crit_alarm fault.
 - Update ACBEL PSU firmware version to be read from
   /sys/kernel/debug/pmbus/hwmonX instead from
   /sys/kernel/debug/pmbus/hwmonX/3-005a/ and update the ACBEL
   FW version size to 6 bytes.
 - On/off config not supported on ACBEL PSU.

Testing:
* Unplugged power cord from the ACBEL PSU, and verified an error
  reported on the system.
* Set IIN_OC_FAULT_LIMIT fault and verified curr1_crit_alarm clears
  the STATUS_INPUT.
* Verified the code reading the ACBEL FW revision correctly.
* Verified in1_input clears all faults on ACBEL PSU.
* Tested modified the code on IBMCFFPS and verified the ACBEL PSU
  modification did not change the behavior on IBMCFFPS.

Change-Id: I5fef87043adb5d677723eb8a20b0aedc4574b7fd
Signed-off-by: Faisal Awada <faisal@us.ibm.com>
diff --git a/phosphor-power-supply/power_supply.cpp b/phosphor-power-supply/power_supply.cpp
index 89ecab4..f100978 100644
--- a/phosphor-power-supply/power_supply.cpp
+++ b/phosphor-power-supply/power_supply.cpp
@@ -695,7 +695,7 @@
 {
     using namespace phosphor::pmbus;
 
-    if (present)
+    if (present && driverName != ACBEL_FSG032_DD_NAME)
     {
         log<level::INFO>("ON_OFF_CONFIG write", entry("DATA=0x%02X", data));
         try
@@ -723,8 +723,16 @@
     // also clearing.
     //
     // Do not care about return value. Should be 1 if active, 0 if not.
-    static_cast<void>(
-        pmbusIntf->read("in1_lcrit_alarm", phosphor::pmbus::Type::Hwmon));
+    if (driverName != ACBEL_FSG032_DD_NAME)
+    {
+        static_cast<void>(
+            pmbusIntf->read("in1_lcrit_alarm", phosphor::pmbus::Type::Hwmon));
+    }
+    else
+    {
+        static_cast<void>(
+            pmbusIntf->read("curr1_crit_alarm", phosphor::pmbus::Type::Hwmon));
+    }
     vinUVFault = 0;
 }
 
@@ -882,7 +890,8 @@
     // 1-byte reads into one string. So, the maximum size expected is 6 bytes.
     // However, it is formatted by the driver as a hex string with two ASCII
     // characters per byte.  So the maximum ASCII string size is 12.
-    const auto VERSION_SIZE = 12;
+    const auto IBMCFFPS_FW_VERSION_SIZE = 12;
+    const auto ACBEL_FSG032_FW_VERSION_SIZE = 6;
 
     using PropertyMap =
         std::map<std::string,
@@ -906,13 +915,16 @@
         // TODO: non-IBM inventory updates?
 
 #if IBM_VPD
-        if (driverName != IBMCFFPS_DD_NAME)
+        if (driverName == ACBEL_FSG032_DD_NAME)
         {
             getPsuVpdFromDbus("CC", modelName);
             getPsuVpdFromDbus("PN", pn);
             getPsuVpdFromDbus("FN", fn);
             getPsuVpdFromDbus("SN", sn);
             assetProps.emplace(SN_PROP, sn);
+            fwVersion = readVPDValue(FW_VERSION, Type::Debug,
+                                     ACBEL_FSG032_FW_VERSION_SIZE);
+            versionProps.emplace(VERSION_PROP, fwVersion);
         }
         else
         {
@@ -923,16 +935,15 @@
             header = readVPDValue(SERIAL_HEADER, Type::Debug, HEADER_SIZE);
             sn = readVPDValue(SERIAL_NUMBER, Type::Debug, SERIAL_SIZE);
             assetProps.emplace(SN_PROP, header + sn);
+            fwVersion = readVPDValue(FW_VERSION, Type::HwmonDeviceDebug,
+                                     IBMCFFPS_FW_VERSION_SIZE);
+            versionProps.emplace(VERSION_PROP, fwVersion);
         }
 
         assetProps.emplace(MODEL_PROP, modelName);
         assetProps.emplace(PN_PROP, pn);
         assetProps.emplace(SPARE_PN_PROP, fn);
 
-        fwVersion = readVPDValue(FW_VERSION, Type::HwmonDeviceDebug,
-                                 VERSION_SIZE);
-        versionProps.emplace(VERSION_PROP, fwVersion);
-
         ipzvpdVINIProps.emplace(
             "CC", std::vector<uint8_t>(modelName.begin(), modelName.end()));
         ipzvpdVINIProps.emplace("PN",