pfr-manager: Add support to read and update CPLD version
Add support to
1. Read and update mainPLDversion and PLDversion from CPLD SGPIO lines.
2. Read and update SVN, RoT and CPLD hash when PFR CPLD is present.
CPLD version format:
When PFR CPLD is present:
MainPLDMajorMinor.PLDMajorMinor>-<SVN.RoT>-<CPLD-Hash>
Example: 2.7-1.1-<Hash string>
When Non-PFR CPLD is present: <MainPLDMajorMinor.PLDMajorMinor>
Example: 2.7
Tested:
1. When PFR-CPLD is present.
Command:
busctl introspect xyz.openbmc_project.PFR.Manager /xyz/openbmc_project/
software/cpld_active
Response:
NAME TYPE SIGNATURE RESULT/VALUE
org.freedesktop.DBus.Introspectable interface - -
.Introspect method - s
org.freedesktop.DBus.Peer interface - -
.GetMachineId method - s
.Ping method - -
org.freedesktop.DBus.Properties interface - -
.Get method ss v
.GetAll method s a{sv}
.Set method ssv -
.PropertiesChanged signal sa{sv}as -
xyz.openbmc_project.Software.Activation interface - -
.Activation property s
"xyz.openbmc_project.Software.Activat... emits-change
.RequestedActivation property s
"xyz.openbmc_project.Software.Activat... emits-change
xyz.openbmc_project.Software.Version interface - - -
.Purpose property s
"xyz.openbmc_project.Software.Version... emits-change
.Version property s
"0.8-1.0-e51876c89bec2ebae8f7ca75dfc339… emits-change writable
Command:
busctl call xyz.openbmc_project.PFR.Manager /xyz/openbmc_project/
software/cpld_active org.freedesktop.DBus.Properties Get ss xyz.
openbmc_project.Software.Version Version
Response: v s "0.8-1.0-e51876c89bec2ebae8f7ca75dfc339099e138d5f4f6b
895a45671c5489d7ba52"
Command:
GET: https://<BMC_IP>/redfish/v1/UpdateService/FirmwareInventory/
cpld_active
Response:
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/
cpld_active",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Other image",
"Id": "cpld_active",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "0.8-1.0-e51876c89bec2ebae8f7ca75dfc339099e138d5f4f6b
895a45671c5489d7ba52"
}
2. when non-PFR CPLD is present.
Command:
busctl introspect xyz.openbmc_project.PFR.Manager /xyz/openbmc_project/
software/cpld_active
Response:
NAME TYPE SIGNATURE RESULT/VALUE
org.freedesktop.DBus.Introspectable interface - -
.Introspect method - s
org.freedesktop.DBus.Peer interface - -
.GetMachineId method - s
.Ping method - -
org.freedesktop.DBus.Properties interface - -
.Get method ss v
.GetAll method s a{sv}
.Set method ssv -
.PropertiesChanged signal sa{sv}as -
xyz.openbmc_project.Software.Activation interface - -
.Activation property s
"xyz.openbmc_project.Software.Activat... emits-change
.RequestedActivation property s
"xyz.openbmc_project.Software.Activat... emits-change
xyz.openbmc_project.Software.Version interface - - -
.Purpose property s
"xyz.openbmc_project.Software.Version... emits-change
.Version property s "2.5"
emits-change writable
Command:
busctl call xyz.openbmc_project.PFR.Manager /xyz/openbmc_project/
software/cpld_active org.freedesktop.DBus.Properties Get ss xyz.
openbmc_project.Software.Version Version
Response: v s "2.5"
Command:
GET: https://<BMC_IP>/redfish/v1/UpdateService/FirmwareInventory/
cpld_active
Response:
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/
cpld_active",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Other image",
"Id": "cpld_active",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "2.5"
}
Signed-off-by: Chalapathi Venkataramashetty <chalapathix.venkataramashetty@intel.com>
Change-Id: Ib674f650b8e02fcbf1ca64c0113a23963cd00536
diff --git a/service/CMakeLists.txt b/service/CMakeLists.txt
index 7b58e9e..6df4a2b 100644
--- a/service/CMakeLists.txt
+++ b/service/CMakeLists.txt
@@ -46,5 +46,6 @@
target_link_libraries(${PROJECT_NAME} phosphor_logging)
target_link_libraries(${PROJECT_NAME} pfr)
target_link_libraries(${PROJECT_NAME} i2c)
+target_link_libraries(${PROJECT_NAME} gpiodcxx)
install(TARGETS ${PROJECT_NAME} DESTINATION bin)