History log of /openbmc/phosphor-bmc-code-mgmt/cpld/ (Results 1 – 15 of 15)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
e634411b26-Nov-2025 Henry Wu <Henry_Wu@quantatw.com>

common: add GPIO controller function

The CPLD update process requires toggling a GPIO pin to control the
debug card mux. BIOS and EEPROM updates use the same logic, so refactor
the duplicated code i

common: add GPIO controller function

The CPLD update process requires toggling a GPIO pin to control the
debug card mux. BIOS and EEPROM updates use the same logic, so refactor
the duplicated code into a common GPIO controller function. Update BIOS,
EEPROM, and CPLD code paths to use the new helper.

Tested:
- Verified CPLD update with GPIO mux toggling
- Verified BIOS update with GPIO mux toggling

Verified CPLD update with GPIO mux toggling
```
Dec 18 18:33:35 bmc phosphor-cpld-software-update[1064]: Requesting chip gpiochip0, GPIO line debug-card-mux to 1
Dec 18 18:33:35 bmc phosphor-cpld-software-update[1064]: Updating Lattice CPLD firmware
Dec 18 18:33:45 bmc phosphor-cpld-software-update[1064]: [48K blob data]
Dec 18 18:34:14 bmc phosphor-cpld-software-update[1064]: [48K blob data]
Dec 18 18:34:31 bmc phosphor-cpld-software-update[1064]: Successfully updated CPLD
Dec 18 18:34:31 bmc phosphor-cpld-software-update[1064]: Requesting chip gpiochip0, GPIO line debug-card-mux to 0
```

Verified BIOS update with GPIO mux toggling
```
Dec 18 18:45:53 bmc phosphor-bios-software-update[1063]: Requesting chip gpiochip0, GPIO line FM_MUX1_SEL_R to 1
Dec 18 18:46:24 bmc phosphor-bios-software-update[2158]: [14.8K blob data]
Dec 18 18:46:30 bmc phosphor-bios-software-update[2158]: [47.9K blob data]
Dec 18 18:46:37 bmc phosphor-bios-software-update[2158]: [48K blob data]
Dec 18 18:46:44 bmc phosphor-bios-software-update[2158]: [48K blob data]
Dec 18 18:46:51 bmc phosphor-bios-software-update[2158]: [48K blob data]
Dec 18 18:46:58 bmc phosphor-bios-software-update[2158]: [47.9K blob data]
Dec 18 18:46:58 bmc phosphor-bios-software-update[2158]: [4.5K blob data]
Dec 18 18:47:01 bmc phosphor-bios-software-update[2158]: [48K blob data]
Dec 18 18:47:04 bmc phosphor-bios-software-update[2158]: [48K blob data]
Dec 18 18:47:07 bmc phosphor-bios-software-update[2158]: [48K blob data]
Dec 18 18:47:10 bmc phosphor-bios-software-update[2158]: [48K blob data]
Dec 18 18:47:13 bmc phosphor-bios-software-update[2158]: [48K blob data]
Dec 18 18:47:15 bmc phosphor-bios-software-update[2158]: [20.5K blob data]
Dec 18 18:47:17 bmc phosphor-bios-software-update[1063]: Successfully updated SPI flash
Dec 18 18:47:17 bmc phosphor-bios-software-update[1063]: Requesting chip gpiochip0, GPIO line FM_MUX1_SEL_R to 0
```

Change-Id: I8d3c128951fd833a0cd25e1440236f82d37b776f
Signed-off-by: Henry Wu <Henry_Wu@quantatw.com>

show more ...

3749063902-Dec-2025 Marshall Zhan <marshall.zhan.wiwynn@gmail.com>

phosphor-bmc-code-mgmt: fix service invalid argument

Fix the invalid argument in the i2c-vr and CPLD service dependency.

Change-Id: I95e2ca90c94aa4da0f4649cc3b51fe693baadcba
Signed-off-by: Marshall

phosphor-bmc-code-mgmt: fix service invalid argument

Fix the invalid argument in the i2c-vr and CPLD service dependency.

Change-Id: I95e2ca90c94aa4da0f4649cc3b51fe693baadcba
Signed-off-by: Marshall Zhan <marshall.zhan.wiwynn@gmail.com>

show more ...


/openbmc/phosphor-bmc-code-mgmt/bmc/activation.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/gen-bios-tar
/openbmc/phosphor-bmc-code-mgmt/bmc/item_updater.cpp
xyz.openbmc_project.Software.CPLD.service
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/isl69269/isl69269.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/isl69269/isl69269.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/meson.build
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mp297x.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mp2x6xx.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mp5998.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mps.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mps.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mpx9xx.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/mps/mpx9xx.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/tda38640a/tda38640a.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/tda38640a/tda38640a.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/vr.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/vr.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xdpe1x2xx/xdpe1x2xx.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xdpe1x2xx/xdpe1x2xx.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xyz.openbmc_project.Software.I2CVR.service
/openbmc/phosphor-bmc-code-mgmt/test/common/device/device.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/device/meson.build
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_device.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_device.hpp
/openbmc/phosphor-bmc-code-mgmt/test/common/meson.build
/openbmc/phosphor-bmc-code-mgmt/test/common/software/meson.build
/openbmc/phosphor-bmc-code-mgmt/test/common/software/software.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/software/software_association.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/software/software_update.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/software/software_version.cpp
/openbmc/phosphor-bmc-code-mgmt/test/create_package/component_image_info_area.cpp
/openbmc/phosphor-bmc-code-mgmt/test/create_package/create_pldm_fw_package.hpp
a3902c8313-Aug-2025 Daniel Hsu <Daniel-Hsu@quantatw.com>

cpld: add update support for Lattice xo5

Enable firmware update capability for Lattice xo5 devices, allowing
the update flow to recognize and handle this device type.

Test on Santabarbara:
```
1. C

cpld: add update support for Lattice xo5

Enable firmware update capability for Lattice xo5 devices, allowing
the update flow to recognize and handle this device type.

Test on Santabarbara:
```
1. Check firmware
curl -k -u root:0penBmc -X GET
https://10.10.15.214/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_MB_CPLD_6213
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_MB_CPLD_6213",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "Santabarbara_MB_CPLD_6213",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "70000003"
}

2. Trigger Update
curl -k -u root:0penBmc \
-H "Content-Type:multipart/form-data" \
-X POST \
-F UpdateParameters="{\"Targets\":[\"${targetpath}\"], \
\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" \
-F "UpdateFile=@${fwpath};type=application/octet-stream" \
https://${bmc}/redfish/v1/UpdateService/update-multipart
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"TargetUri": "/redfish/v1/UpdateService/update-multipart"
},
"PercentComplete": 0,
"StartTime": "2025-08-14T02:26:00+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Running",
"TaskStatus": "OK"
}

3. Check task
curl -u root:0penBmc -k -X GET https://${bmc}/redfish/v1/TaskService/Tasks/0
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"EndTime": "2025-08-14T02:28:32+00:00",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 1 percent complete.",
"MessageArgs": [
"0",
"1"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 50 percent complete.",
"MessageArgs": [
"0",
"50"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 90 percent complete.",
"MessageArgs": [
"0",
"90"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 100 percent complete.",
"MessageArgs": [
"0",
"100"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has completed.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskCompletedOK",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"JsonBody": "null",
"TargetUri": "/redfish/v1/UpdateService/update-multipart"
},
"PercentComplete": 100,
"StartTime": "2025-08-14T02:26:00+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Completed",
"TaskStatus": "OK"
}

4. Check firmware again
curl -k -u root:0penBmc -X GET
https://10.10.15.214/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_MB_CPLD_9204
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_MB_CPLD_9204",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "Santabarbara_MB_CPLD_9204",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "00000004"
}
```

Change-Id: Id0aef0d105138538851f4c6d3a5496ec8b724eea
Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>

show more ...

b602aad513-Aug-2025 Daniel Hsu <Daniel-Hsu@quantatw.com>

cpld: Virtualize CpldLatticeManager for XO3/XO5 separation

This change makes `CpldLatticeManager` a virtual base class, allowing
other classes to inherit from it. This refactoring enables a cleaner

cpld: Virtualize CpldLatticeManager for XO3/XO5 separation

This change makes `CpldLatticeManager` a virtual base class, allowing
other classes to inherit from it. This refactoring enables a cleaner
separation of XO3 and XO5 implementations while sharing common CPLD
management logic.

Test on harma:
```
1. Check firmware info
curl -k -u root:0penBmc -X GET
https://10.10.15.8/redfish/v1/UpdateService/FirmwareInventory/Harma_MB_CPLD_5688
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Harma_MB_CPLD_5688",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "Harma_MB_CPLD_5688",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "00000220"
}
2. Trigger Update
curl -k -u root:0penBmc \
-H "Content-Type:multipart/form-data" \
-X POST \
-F UpdateParameters="{\"Targets\":[\"${targetpath}\"], \
\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" \
-F "UpdateFile=@${fwpath};type=application/octet-stream" \
https://${bmc}/redfish/v1/UpdateService/update-multipart
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"TargetUri": "/redfish/v1/UpdateService/update-multipart"
},
"PercentComplete": 0,
"StartTime": "2025-08-13T07:22:06+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Running",
"TaskStatus": "OK"
}
3. After AC cycle check firmware info again
curl -k -u root:0penBmc -X GET
https://10.10.15.8/redfish/v1/UpdateService/FirmwareInventory/Harma_MB_CPLD_5688
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Harma_MB_CPLD_5688",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "Harma_MB_CPLD_5688",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "00000224"
}
```

Change-Id: Ic7265dbeeb9f93d4f466cba75ca38fc86342c689
Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>

show more ...

6474c75719-Aug-2025 cchoux <cosmo.chou@quantatw.com>

cpld: lattice: add LCMXO2-4000HC support

Added LatticeLCMXO2_4000HCFirmware with Device ID
{0x01, 0x2b, 0xc0, 0x43}.

Tested:
```
1. Check firmware info: (current version 00020400)
~$ curl -k -u roo

cpld: lattice: add LCMXO2-4000HC support

Added LatticeLCMXO2_4000HCFirmware with Device ID
{0x01, 0x2b, 0xc0, 0x43}.

Tested:
```
1. Check firmware info: (current version 00020400)
~$ curl -k -u root:0penBmc -X GET https://10.2.230.66/redfish/v1/UpdateService/FirmwareInventory/Catalina_HDD_cpld_825
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Catalina_HDD_cpld_825",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Other image",
"Id": "Catalina_HDD_cpld_825",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "00020400"
}

2. Trigger Update: (update to version 00020300)
~$ curl -k -u root:0penBmc \
-H "Content-Type:multipart/form-data" \
-X POST \
-F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/Catalina_HDD_cpld_825\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};type=application/json" \
-F "UpdateFile=@catalina-hdd-cpld_00020300.pldm;type=application/octet-stream" \
https://10.2.230.66/redfish/v1/UpdateService/update-multipart
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"TargetUri": "/redfish/v1/UpdateService/update-multipart"
},
"PercentComplete": 0,
"StartTime": "2025-09-17T13:44:59+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Running",
"TaskStatus": "OK"
}

3. After AC cycle check firmware info again:
~$ curl -k -u root:0penBmc -X GET https://10.2.230.66/redfish/v1/UpdateService/FirmwareInventory/Catalina_HDD_cpld_8961
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Catalina_HDD_cpld_8961",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Other image",
"Id": "Catalina_HDD_cpld_8961",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "00020300"
}
```

Change-Id: I5bdb68187b96737e8f2dac11340306f58cdc34a5
Signed-off-by: Cosmo Chou <cosmo.chou@quantatw.com>

show more ...

7b92576618-Aug-2025 Potin Lai <potin.lai@quantatw.com>

cpld: lattice: add pre-page write with read-back verify

Observed that lattice CPLD page data may shift during update if other
processes issue I2C commands (e.g., i2cdetect) to the CPLD update
addres

cpld: lattice: add pre-page write with read-back verify

Observed that lattice CPLD page data may shift during update if other
processes issue I2C commands (e.g., i2cdetect) to the CPLD update
address.

Add support for setting page address and implement page-level write
followed by read-back verification. This helps detect and prevent
unintended page shifts caused by external I2C commands during the
update process.

Tested on Catalina:
1. Trigger the fw update via redfish.
```
root@bmc:~# curl -k -u root:0penBmc -H "Content-Type:multipart/form-data" -X POST -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/Catalina_PDB_CPLD_2161\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};type=application/json" -F "UpdateFile=@F0N_PDB_CPLD_00021100.pldm;type=application/octet-stream" https://127.0.0.1/redfish/v1/UpdateService/update-multipart
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"TargetUri": "/redfish/v1/UpdateService/update-multipart"
},
"PercentComplete": 0,
"StartTime": "2025-09-01T08:47:55+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Running",
"TaskStatus": "OK"
}
```

2. Check the task status completed without error.
```
root@bmc:~# curl -u root:0penBmc -k https://127.0.0.1/redfish/v1/TaskService/Tasks/0
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"EndTime": "2025-09-01T08:48:32+00:00",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 1 percent complete.",
"MessageArgs": [
"0",
"1"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 10 percent complete.",
"MessageArgs": [
"0",
"10"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 15 percent complete.",
"MessageArgs": [
"0",
"15"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 20 percent complete.",
"MessageArgs": [
"0",
"20"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 25 percent complete.",
"MessageArgs": [
"0",
"25"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 30 percent complete.",
"MessageArgs": [
"0",
"30"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 40 percent complete.",
"MessageArgs": [
"0",
"40"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 50 percent complete.",
"MessageArgs": [
"0",
"50"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 60 percent complete.",
"MessageArgs": [
"0",
"60"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 70 percent complete.",
"MessageArgs": [
"0",
"70"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 80 percent complete.",
"MessageArgs": [
"0",
"80"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 90 percent complete.",
"MessageArgs": [
"0",
"90"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has changed to progress 100 percent complete.",
"MessageArgs": [
"0",
"100"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has completed.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskCompletedOK",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"JsonBody": "null",
"TargetUri": "/redfish/v1/UpdateService/update-multipart"
},
"PercentComplete": 100,
"StartTime": "2025-09-01T08:47:55+00:00",
"TaskState": "Completed",
"TaskStatus": "OK"
}
```

3. Check CPLD version after a AC cycle
```
root@bmc:~# curl -u root:0penBmc -k https://127.0.0.1/redfish/v1/UpdateService/FirmwareInventory/Catalina_PDB_CPLD_7118
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Catalina_PDB_CPLD_7118",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "Catalina_PDB_CPLD_7118",
"Name": "Software Inventory",
"Status": {
"Health": "OK",
"HealthRollup": "OK",
"State": "Enabled"
},
"Updateable": true,
"Version": "00021100"
}
```

Change-Id: I10f26817c4784814e86f186dc947a9a24d070b93
Signed-off-by: Potin Lai <potin.lai@quantatw.com>

show more ...


/openbmc/phosphor-bmc-code-mgmt/bmc/item_updater.cpp
/openbmc/phosphor-bmc-code-mgmt/common/include/utils.hpp
/openbmc/phosphor-bmc-code-mgmt/common/meson.build
/openbmc/phosphor-bmc-code-mgmt/common/src/host_power.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/utils.cpp
lattice/lattice.cpp
lattice/lattice.hpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device.cpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device_version.hpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/pt5161l/pt5161l.cpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/pt5161l/pt5161l.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_device.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_device.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/isl69269/isl69269.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/isl69269/isl69269.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/vr.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xdpe1x2xx/xdpe1x2xx.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xdpe1x2xx/xdpe1x2xx.hpp
/openbmc/phosphor-bmc-code-mgmt/meson.build
/openbmc/phosphor-bmc-code-mgmt/meson.options
/openbmc/phosphor-bmc-code-mgmt/tpm/README.md
/openbmc/phosphor-bmc-code-mgmt/tpm/meson.build
/openbmc/phosphor-bmc-code-mgmt/tpm/tpm2/tpm2.cpp
/openbmc/phosphor-bmc-code-mgmt/tpm/tpm2/tpm2.hpp
/openbmc/phosphor-bmc-code-mgmt/tpm/tpm_device.cpp
/openbmc/phosphor-bmc-code-mgmt/tpm/tpm_device.hpp
/openbmc/phosphor-bmc-code-mgmt/tpm/tpm_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/tpm/tpm_software_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/tpm/xyz.openbmc_project.Software.TPM.service
2e168dba08-Sep-2025 Daniel Hsu <Daniel-Hsu@quantatw.com>

All: add purpose parameter to setVersion calls

All calls to setVersion now include a purpose argument, changing the
purpose string from "unknown" to "other".

Change-Id: I201db1719333b51deead2dd99c9

All: add purpose parameter to setVersion calls

All calls to setVersion now include a purpose argument, changing the
purpose string from "unknown" to "other".

Change-Id: I201db1719333b51deead2dd99c9f637c782efd6c
Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>

show more ...

9c05c3c624-Jul-2025 Ken Chen <Ken.Chen@quantatw.com>

phosphor-bmc-code-mgmt: let JedFileParser related var more descriptive

tagFQ -> tagFuseQuantity
tagUH -> tagUserCodeHex
tagUFM -> tagUserFlashMemory

Change-Id: Iad906742b1783ee1adb40a3d141b469153cf

phosphor-bmc-code-mgmt: let JedFileParser related var more descriptive

tagFQ -> tagFuseQuantity
tagUH -> tagUserCodeHex
tagUFM -> tagUserFlashMemory

Change-Id: Iad906742b1783ee1adb40a3d141b469153cf99fa
Signed-off-by: Ken Chen <Ken.Chen@quantatw.com>

show more ...

d982568109-Jul-2025 Ken Chen <Ken.Chen@quantatw.com>

phosphor-bmc-code-mgmt: revise JedFileParser to support LCMXO3 series

checking UFM and ensure checksum calculated correctly.

sync code from:
[1] https://github.com/facebook/openbmc/commit/7c656105a

phosphor-bmc-code-mgmt: revise JedFileParser to support LCMXO3 series

checking UFM and ensure checksum calculated correctly.

sync code from:
[1] https://github.com/facebook/openbmc/commit/7c656105a7e36b76adb1a1b5a3eed98b0ada43a2

Tested on YV5 POC:
'''
ken@ken-All-Series:~$ curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory",
"@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection",
"Members": [
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/6116e97d"
},
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/YV5_SCM_CPLD_9224"
}
],
"Members@odata.count": 2,
"Name": "Software Inventory Collection"
}

ken@ken-All-Series:~$curl -k ${creds} -H "Content-Type:multipart/form-data" -X POST -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/YV5_SCM_CPLD_9224\"],\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json" -F "UpdateFile=@${fwpath};type=application/octet-stream" https://${bmc}/redfish/v1/UpdateService/update-multipart
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"TargetUri": "/redfish/v1/UpdateService/update-multipart"
},
"PercentComplete": 0,
"StartTime": "2025-07-09T07:09:41+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Running",
"TaskStatus": "OK"
}
'''

Change-Id: I4cb953e25e9c09eee2fa511c787b57bfa787e78e
Signed-off-by: Ken Chen <Ken.Chen@quantatw.com>

show more ...

f30ca2c127-Jun-2025 Fred Chen <Fred.Chen@quantatw.com>

cpld: lattice: add XO3D-9400 series support to supportedDeviceMap

Add LatticeLCMXO3D_9400Firmware with Device ID {0x21, 0x2e, 0x30, 0x43}

Tested on santabarbara SCM cpld:
'''
1. verified device ID

cpld: lattice: add XO3D-9400 series support to supportedDeviceMap

Add LatticeLCMXO3D_9400Firmware with Device ID {0x21, 0x2e, 0x30, 0x43}

Tested on santabarbara SCM cpld:
'''
1. verified device ID matches actual chip on hardware
<7> Santabarbara_SCM_CPLD_6045: created dbus interfaces on path /xyz/openbmc_project/software/Santabarbara_SCM_CPLD_6045
<7> starting the async update with memfd 10
<7> open fd 10
<7> file size: 2100958
<7> parsing package header
<7> parsing package, pkg header size: 173
<7> Santabarbara_SCM_CPLD_6045: set version 00000002
<6> Updating Lattice CPLD firmware
<7> Device ID match with chip. Chip name: LCMXO3D-9400
<3> NOTE DEVICE NAME: LCMXO3D-9400HC-5CABGA256*
<7> [OK] The image device name match with chip name
'''

Change-Id: I21d4b0b031542079d2f646591021666378c19157
Signed-off-by: Fred Chen <Fred.Chen@quantatw.com>

show more ...

5afc9aa008-Jul-2025 Patrick Williams <patrick@stwcx.xyz>

meson: simplify systemd dependency

Reduce duplication of the systemd dependency and name the dependency
`systemd_dep` to follow meson conventions.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz

meson: simplify systemd dependency

Reduce duplication of the systemd dependency and name the dependency
`systemd_dep` to follow meson conventions.

Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
Change-Id: Ibf1b6ead42f51611b2b2ae9eca5421de079c53c8

show more ...

9ce83ded09-Jul-2025 Patrick Williams <patrick@stwcx.xyz>

meson: use non-deprecated systemd packageconfig

Systemd's packageconfig file has both `systemdsystemunitdir` and
`systemd_system_unit_dir` defined. The non-underscore one appears
to be a deprecated

meson: use non-deprecated systemd packageconfig

Systemd's packageconfig file has both `systemdsystemunitdir` and
`systemd_system_unit_dir` defined. The non-underscore one appears
to be a deprecated alias[1]. Move to the non-deprecated /
underscore-separated variant.

[1]: https://github.com/systemd/systemd/commit/4908de44b0a0409f84a7cdc5641b114d6ce8ba03

Change-Id: I0ae94b17ccfe82c1fbc3e4e0602b0a6ecd21762d
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>

show more ...

61e1267212-Jun-2025 Daniel Hsu <Daniel-Hsu@quantatw.com>

cpld: lattice: to align with new EM Type scheme

Update CPLD Lattice code updater to align with new EM Type scheme
https://gerrit.openbmc.org/c/openbmc/entity-manager/+/81063

Tested on Harma MB cpld

cpld: lattice: to align with new EM Type scheme

Update CPLD Lattice code updater to align with new EM Type scheme
https://gerrit.openbmc.org/c/openbmc/entity-manager/+/81063

Tested on Harma MB cpld:

1. Check CPLD version
root@bmc:~# curl -u root:0penBmc -k -X GET
https://.../Harma_MB_CPLD_6845
{
"@odata.id": "/.../Harma_MB_CPLD_6845",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "Harma_MB_CPLD_6845",
"Name": "Software Inventory",
"Status": {
"Health": "Warning",
"HealthRollup": "OK",
"State": "Disabled"
},
"Updateable": true,
"Version": "00000220"
}

2. Trigger update firmware
curl -k -H "X-Auth-Token: $token"
-H "Content-Type:multipart/form-data"
-X POST -F UpdateParameters="{
\"Targets\":[
\"/redfish/v1/UpdateService/FirmwareInventory/Harma_MB_CPLD_6845\"],
\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json"
-F "UpdateFile=@mb_cpld_v224.pldm;type=application/octet-stream"
https://${bmc}/redfish/v1/UpdateService/update
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"Id": "0",
"TaskState": "Running",
"TaskStatus": "OK"
}

root@bmc:~# curl -u root:0penBmc -k -X GET
https://localhost/redfish/v1/TaskService/Tasks/0
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"EndTime": "2025-06-13T06:19:25+00:00",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message":
"The task with Id '0' has changed to progress 10 percent complete.",
"MessageArgs": [
"0",
"10"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
...
{
"@odata.type": "#Message.v1_1_1.Message",
"Message":
"The task with Id '0' has changed to progress 90 percent complete.",
"MessageArgs": [
"0",
"90"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message":
"The task with Id '0' has changed to progress 100 percent complete.",
"MessageArgs": [
"0",
"100"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has completed.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskCompletedOK",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"JsonBody": "null",
"TargetUri": "/redfish/v1/UpdateService/update"
},
"PercentComplete": 100,
"StartTime": "2025-06-13T06:19:13+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Completed",
"TaskStatus": "OK"
}

3. Check version again after ac cycle
root@bmc:~# curl -u root:0penBmc -k -X GET
https://localhost/.../Harma_MB_CPLD_2181
{
"@odata.id": "/.../Harma_MB_CPLD_2181",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "Harma_MB_CPLD_2181",
"Name": "Software Inventory",
"Status": {
"Health": "Warning",
"HealthRollup": "OK",
"State": "Disabled"
},
"Updateable": true,
"Version": "00000224"
}

Change-Id: I33b6f211a375a47a2139164347e697a2d0aba419
Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>

show more ...

37a3014312-Jun-2025 Daniel Hsu <Daniel-Hsu@quantatw.com>

common: i2c: Add non-coroutine sendReceive()

This commit introduces a non-coroutine version of `sendReceive()` in the
common I2C module. The new implementation avoids potential stack buffer
issues b

common: i2c: Add non-coroutine sendReceive()

This commit introduces a non-coroutine version of `sendReceive()` in the
common I2C module. The new implementation avoids potential stack buffer
issues by ensuring synchronous execution.

Change-Id: I1d308f24fafa6e0d68ffcc67073e0a2e67a6b419
Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>

show more ...


/openbmc/phosphor-bmc-code-mgmt/.clang-tidy
/openbmc/phosphor-bmc-code-mgmt/bios/README.md
/openbmc/phosphor-bmc-code-mgmt/bios/bios_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bios/spi_device.cpp
/openbmc/phosphor-bmc-code-mgmt/bios/spi_device.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/update_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/usb/usb_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/common/README.md
/openbmc/phosphor-bmc-code-mgmt/common/i2c/i2c.cpp
/openbmc/phosphor-bmc-code-mgmt/common/include/i2c/i2c.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/software.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/software_update.hpp
/openbmc/phosphor-bmc-code-mgmt/common/pldm/package_parser.cpp
/openbmc/phosphor-bmc-code-mgmt/common/pldm/package_parser.hpp
/openbmc/phosphor-bmc-code-mgmt/common/pldm/types.hpp
/openbmc/phosphor-bmc-code-mgmt/common/src/device.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/host_power.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/software.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/software_config.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/software_update.cpp
cpld_software_manager.cpp
lattice/lattice.cpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device.cpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_device.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xdpe1x2xx/xdpe1x2xx.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_device.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_device.hpp
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_updater_main.cpp
f6470b5e26-Feb-2025 Daniel Hsu <Daniel-Hsu@quantatw.com>

fw-update: cpld code updater

This commit introduces a code updater for CPLD.
The Key features of this updater include:
- configuring chip vendor and name
- update CPLD through I2C

1. Display the fw

fw-update: cpld code updater

This commit introduces a code updater for CPLD.
The Key features of this updater include:
- configuring chip vendor and name
- update CPLD through I2C

1. Display the fw inventory
curl ... -X GET
https://localhost/redfish/v1/UpdateService/FirmwareInventory
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory",
"@odata.type":
"#SoftwareInventoryCollection.SoftwareInventoryCollection",
"Members": [
...
{
"@odata.id": ".../LCMXO3LF_4300C_6194"
},
...
],
"Members@odata.count": 26,
"Name": "Software Inventory Collection"
}

2. Query CPLD version
curl ... -X GET
https://localhost/redfish/v1
/UpdateService/FirmwareInventory/LCMXO3LF_4300C_6194
{
"@odata.id": "/.../LCMXO3LF_4300C_6194",
"@odata.type":
"#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "LCMXO3LF_4300C_6194",
"Name": "Software Inventory",
"Status": {
"Health": "Warning",
"HealthRollup": "OK",
"State": "Disabled"
},
"Updateable": false,
"Version": "00000220"
}

3. Trigger the fw update via redfish
curl -k
-H "X-Auth-Token: $token"
-H "Content-Type:multipart/form-data"
-X POST
-F UpdateParameters="{\"Targets\":
[\"/redfish/v1/UpdateService/FirmwareInventory/LCMXO3LF_4300C_6194\"],
\"@Redfish.OperationApplyTime\":\"Immediate\"};type=application/json"
-F "UpdateFile=@testcpld.pldm;type=application/octet-stream"
https://${bmc}/redfish/v1/UpdateService/update
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"Id": "0",
"TaskState": "Running",
"TaskStatus": "OK"
}

4. Query Task status
curl ... -X GET
https://localhost/redfish/v1/TaskService/Tasks/0
{
"@odata.id": "/redfish/v1/TaskService/Tasks/0",
"@odata.type": "#Task.v1_4_3.Task",
"EndTime": "2025-05-28T08:10:22+00:00",
"HidePayload": false,
"Id": "0",
"Messages": [
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has started.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskStarted",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 15 percent complete.",
"MessageArgs": [
"0",
"15"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 20 percent complete.",
"MessageArgs": [
"0",
"20"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 25 percent complete.",
"MessageArgs": [
"0",
"25"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 30 percent complete.",
"MessageArgs": [
"0",
"30"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 40 percent complete.",
"MessageArgs": [
"0",
"40"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 50 percent complete.",
"MessageArgs": [
"0",
"50"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 60 percent complete.",
"MessageArgs": [
"0",
"60"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 70 percent complete.",
"MessageArgs": [
"0",
"70"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 80 percent complete.",
"MessageArgs": [
"0",
"80"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 90 percent complete.",
"MessageArgs": [
"0",
"90"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "... progress 100 percent complete.",
"MessageArgs": [
"0",
"100"
],
"MessageId": "TaskEvent.1.0.TaskProgressChanged",
"MessageSeverity": "OK",
"Resolution": "None."
},
{
"@odata.type": "#Message.v1_1_1.Message",
"Message": "The task with Id '0' has completed.",
"MessageArgs": [
"0"
],
"MessageId": "TaskEvent.1.0.TaskCompletedOK",
"MessageSeverity": "OK",
"Resolution": "None."
}
],
"Name": "Task 0",
"Payload": {
"HttpHeaders": [],
"HttpOperation": "POST",
"JsonBody": "null",
"TargetUri": "/redfish/v1/UpdateService/update"
},
"PercentComplete": 100,
"StartTime": "2025-05-28T08:10:06+00:00",
"TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0",
"TaskState": "Completed",
"TaskStatus": "OK"
}

5. Display the fw inventory with newly updated fw.
curl ... -X GET
https://localhost/redfish/v1/UpdateService/FirmwareInventory
{
"@odata.id": "/redfish/v1/UpdateService/FirmwareInventory",
"@odata.type":
"#SoftwareInventoryCollection.SoftwareInventoryCollection",
"Members": [
...
{
"@odata.id": ".../LCMXO3LF_4300C_1571"
},
...
],
"Members@odata.count": 26,
"Name": "Software Inventory Collection"
}

6. Query CPLD version again
After AC cycle ..., so the number would be different.
curl ... -X GET
https://localhost/redfish/v1
/UpdateService/FirmwareInventory/LCMXO3LF_4300C_4643
{
"@odata.id": "/.../LCMXO3LF_4300C_4643",
"@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory",
"Description": "Unknown image",
"Id": "LCMXO3LF_4300C_4643",
"Name": "Software Inventory",
"Status": {
"Health": "Warning",
"HealthRollup": "OK",
"State": "Disabled"
},
"Updateable": false,
"Version": "00000224"
}

Change-Id: Ife8e30a00bfbb307e6e4eb55838a397c8a8162bd
Signed-off-by: Daniel Hsu <Daniel-Hsu@quantatw.com>

show more ...


/openbmc/phosphor-bmc-code-mgmt/.clang-format
/openbmc/phosphor-bmc-code-mgmt/.clang-tidy
/openbmc/phosphor-bmc-code-mgmt/.gitignore
/openbmc/phosphor-bmc-code-mgmt/.shellcheck
/openbmc/phosphor-bmc-code-mgmt/LICENSE
/openbmc/phosphor-bmc-code-mgmt/OWNERS
/openbmc/phosphor-bmc-code-mgmt/README.md
/openbmc/phosphor-bmc-code-mgmt/bios/README.md
/openbmc/phosphor-bmc-code-mgmt/bios/bios_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bios/bios_software_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/bios/main.cpp
/openbmc/phosphor-bmc-code-mgmt/bios/meson.build
/openbmc/phosphor-bmc-code-mgmt/bios/spi_device.cpp
/openbmc/phosphor-bmc-code-mgmt/bios/spi_device.hpp
/openbmc/phosphor-bmc-code-mgmt/bios/xyz.openbmc_project.Software.BIOS.service
/openbmc/phosphor-bmc-code-mgmt/bmc/activation.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/activation.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/detect-slot-aspeed
/openbmc/phosphor-bmc-code-mgmt/bmc/download_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/download_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/download_manager_main.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/flash.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/force-reboot.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/gen-bios-tar
/openbmc/phosphor-bmc-code-mgmt/bmc/image_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/image_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/image_manager_main.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/image_verify.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/image_verify.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/images.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/images.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/item_updater.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/item_updater.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/item_updater_helper.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/item_updater_main.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/meson.build
/openbmc/phosphor-bmc-code-mgmt/bmc/mmc/flash.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/mmc/item_updater_helper.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/mmc/obmc-flash-mmc-mirroruboot.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/mmc/obmc-flash-mmc-mount.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/mmc/obmc-flash-mmc-remove@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/mmc/obmc-flash-mmc-setprimary@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/mmc/obmc-flash-mmc-umount.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/mmc/obmc-flash-mmc@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/msl_verify.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/msl_verify.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/obmc-flash-bmc
/openbmc/phosphor-bmc-code-mgmt/bmc/obmc-flash-bmc-setenv@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/obmc-flash-host-bios@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/openssl_alloc.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/openssl_alloc.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/reboot-guard-disable.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/reboot-guard-enable.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/reset-cs0-aspeed
/openbmc/phosphor-bmc-code-mgmt/bmc/serialize.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/serialize.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/side-switch/meson.build
/openbmc/phosphor-bmc-code-mgmt/bmc/side-switch/phosphor-bmc-side-switch.service
/openbmc/phosphor-bmc-code-mgmt/bmc/side-switch/side_switch.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/side-switch/side_switch.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/software.conf
/openbmc/phosphor-bmc-code-mgmt/bmc/software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/software_utils.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/software_utils.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/static/flash.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/static/item_updater_helper.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/static/obmc-flash-bmc-alt@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/static/obmc-flash-bmc-prepare-for-sync.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/static/obmc-flash-bmc-static-mount-alt.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/sync-once.sh
/openbmc/phosphor-bmc-code-mgmt/bmc/sync_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/sync_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/sync_manager_main.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/sync_watch.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/sync_watch.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/synclist
/openbmc/phosphor-bmc-code-mgmt/bmc/test/README.md
/openbmc/phosphor-bmc-code-mgmt/bmc/test/utest.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/flash.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/item_updater_helper.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/obmc-flash-bmc-cleanup.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/obmc-flash-bmc-mirroruboot.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/obmc-flash-bmc-ubiremount.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/obmc-flash-bmc-ubiro-remove@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/obmc-flash-bmc-ubiro@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/obmc-flash-bmc-ubirw-remove.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/obmc-flash-bmc-ubirw.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/ubi/obmc-flash-bmc-updateubootvars@.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/update_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/update_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/usb/70-bmc-usb.rules
/openbmc/phosphor-bmc-code-mgmt/bmc/usb/meson.build
/openbmc/phosphor-bmc-code-mgmt/bmc/usb/services/usb-code-update@.service
/openbmc/phosphor-bmc-code-mgmt/bmc/usb/usb_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/usb/usb_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/usb/usb_manager_main.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/usr-local.mount.in
/openbmc/phosphor-bmc-code-mgmt/bmc/utils.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/utils.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/version.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/version.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/watch.cpp
/openbmc/phosphor-bmc-code-mgmt/bmc/watch.hpp
/openbmc/phosphor-bmc-code-mgmt/bmc/xyz.openbmc_project.Software.BMC.Updater.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/xyz.openbmc_project.Software.Download.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/xyz.openbmc_project.Software.Manager.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/xyz.openbmc_project.Software.Sync.service.in
/openbmc/phosphor-bmc-code-mgmt/bmc/xyz.openbmc_project.Software.Version.service.in
/openbmc/phosphor-bmc-code-mgmt/common/README.md
/openbmc/phosphor-bmc-code-mgmt/common/i2c/i2c.cpp
/openbmc/phosphor-bmc-code-mgmt/common/i2c/meson.build
/openbmc/phosphor-bmc-code-mgmt/common/include/NotifyWatch.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/dbus_helper.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/device.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/host_power.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/i2c/i2c.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/software.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/software_config.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/software_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/common/include/software_update.hpp
/openbmc/phosphor-bmc-code-mgmt/common/meson.build
/openbmc/phosphor-bmc-code-mgmt/common/pldm/meson.build
/openbmc/phosphor-bmc-code-mgmt/common/pldm/package_parser.cpp
/openbmc/phosphor-bmc-code-mgmt/common/pldm/package_parser.hpp
/openbmc/phosphor-bmc-code-mgmt/common/pldm/pldm_package_util.cpp
/openbmc/phosphor-bmc-code-mgmt/common/pldm/pldm_package_util.hpp
/openbmc/phosphor-bmc-code-mgmt/common/pldm/types.hpp
/openbmc/phosphor-bmc-code-mgmt/common/src/device.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/host_power.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/software.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/software_config.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/common/src/software_update.cpp
README.md
cpld.cpp
cpld.hpp
cpld_interface.cpp
cpld_interface.hpp
cpld_software_manager.cpp
cpld_software_manager.hpp
lattice/interface.cpp
lattice/interface.hpp
lattice/lattice.cpp
lattice/lattice.hpp
meson.build
xyz.openbmc_project.Software.CPLD.service
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/README.md
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device.cpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device.hpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device_software_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device_version.cpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/eeprom_device_version.hpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/meson.build
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/pt5161l/pt5161l.cpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/pt5161l/pt5161l.hpp
/openbmc/phosphor-bmc-code-mgmt/eeprom-device/xyz.openbmc_project.Software.EEPROMDevice.service
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/README.md
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_device.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_device.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_software_manager.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/i2cvr_software_manager.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/meson.build
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/vr.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/vr.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xdpe1x2xx/xdpe1x2xx.cpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xdpe1x2xx/xdpe1x2xx.hpp
/openbmc/phosphor-bmc-code-mgmt/i2c-vr/xyz.openbmc_project.Software.I2CVR.service
/openbmc/phosphor-bmc-code-mgmt/meson.build
/openbmc/phosphor-bmc-code-mgmt/meson.options
/openbmc/phosphor-bmc-code-mgmt/subprojects/CLI11.wrap
/openbmc/phosphor-bmc-code-mgmt/subprojects/boost.wrap
/openbmc/phosphor-bmc-code-mgmt/subprojects/cereal.wrap
/openbmc/phosphor-bmc-code-mgmt/subprojects/libgpiod.wrap
/openbmc/phosphor-bmc-code-mgmt/subprojects/libpldm.wrap
/openbmc/phosphor-bmc-code-mgmt/subprojects/packagefiles/boost/meson.build
/openbmc/phosphor-bmc-code-mgmt/subprojects/phosphor-dbus-interfaces.wrap
/openbmc/phosphor-bmc-code-mgmt/subprojects/phosphor-logging.wrap
/openbmc/phosphor-bmc-code-mgmt/subprojects/sdbusplus.wrap
/openbmc/phosphor-bmc-code-mgmt/subprojects/sdeventplus.wrap
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_device.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_device.hpp
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/example_updater_main.cpp
/openbmc/phosphor-bmc-code-mgmt/test/common/exampledevice/meson.build
/openbmc/phosphor-bmc-code-mgmt/test/common/meson.build
/openbmc/phosphor-bmc-code-mgmt/test/create_package/component_image_info_area.cpp
/openbmc/phosphor-bmc-code-mgmt/test/create_package/component_image_info_area.hpp
/openbmc/phosphor-bmc-code-mgmt/test/create_package/create_pldm_fw_package.cpp
/openbmc/phosphor-bmc-code-mgmt/test/create_package/create_pldm_fw_package.hpp
/openbmc/phosphor-bmc-code-mgmt/test/create_package/firmware_device_id_area.cpp
/openbmc/phosphor-bmc-code-mgmt/test/create_package/firmware_device_id_area.hpp
/openbmc/phosphor-bmc-code-mgmt/test/create_package/meson.build
/openbmc/phosphor-bmc-code-mgmt/test/meson.build