pfr-manager: add ufmSupport property to PFR.Attributes interface.
Add support to update the ufmSupport property in PFR.Attributes
interface.
Tested:
Command: busctl introspect xyz.openbmc_project.PFR.Manager /xyz/
openbmc_project/pfr
Response:
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
xyz.openbmc_project.PFR.Attributes interface - -
.UfmLocked property b false
.UfmProvisioned property b false
.UfmSupport property b true
Signed-off-by: Chalapathi Venkataramashetty <chalapathix.venkataramashetty@intel.com>
Change-Id: I76d9ce70e21c53b85959054155904760b5078782
diff --git a/libpfr/inc/pfr.hpp b/libpfr/inc/pfr.hpp
index 730e6eb..6ae6d60 100644
--- a/libpfr/inc/pfr.hpp
+++ b/libpfr/inc/pfr.hpp
@@ -42,7 +42,8 @@
std::string toHexString(const uint8_t val);
std::string getFirmwareVersion(const ImageType& imgType);
-int getProvisioningStatus(bool& ufmLocked, bool& ufmProvisioned);
+int getProvisioningStatus(bool& ufmLocked, bool& ufmProvisioned,
+ bool& ufmSupport);
int readCpldReg(const ActionType& action, uint8_t& value);
int setBMCBootCheckpoint(const uint8_t checkPoint);
diff --git a/libpfr/src/pfr.cpp b/libpfr/src/pfr.cpp
index 536abe9..1058197 100644
--- a/libpfr/src/pfr.cpp
+++ b/libpfr/src/pfr.cpp
@@ -370,14 +370,17 @@
}
}
-int getProvisioningStatus(bool& ufmLocked, bool& ufmProvisioned)
+int getProvisioningStatus(bool& ufmLocked, bool& ufmProvisioned,
+ bool& ufmSupport)
{
try
{
I2CFile cpldDev(i2cBusNumber, i2cSlaveAddress, O_RDWR | O_CLOEXEC);
uint8_t provStatus = cpldDev.i2cReadByteData(provisioningStatus);
+ uint8_t pfrRoT = cpldDev.i2cReadByteData(pfrROTId);
ufmLocked = (provStatus & ufmLockedMask);
ufmProvisioned = (provStatus & ufmProvisionedMask);
+ ufmSupport = (pfrRoT & pfrRoTValue);
return 0;
}
catch (const std::exception& e)