| e634411b | 26-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 ...
|
| e1d2fa84 | 04-Dec-2025 |
Haiyue Wang <haiyuewa@163.com> |
common: i2c: Fix 'close()' may close invalid fd
If 'I2C_SLAVE_FORCE' fails, the "close()" will be called twice by the "open()" and "~I2C()", and the "close()" doesn't check the 'fd' value valid or n
common: i2c: Fix 'close()' may close invalid fd
If 'I2C_SLAVE_FORCE' fails, the "close()" will be called twice by the "open()" and "~I2C()", and the "close()" doesn't check the 'fd' value valid or not.
And "close()" should not be a valid const member function, chang it to mark the 'fd' invalid if "::close()" is called.
Change-Id: Ibeb923c4e3ea400c2de630ff7223df56c349a941 Signed-off-by: Haiyue Wang <haiyuewa@163.com>
show more ...
|
| 37490639 | 02-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 ...
|
| 4582afdb | 24-Nov-2025 |
Kevin Tung <kevin.tung@quantatw.com> |
i2c-vr: mps: fix mp297X update failure
Support for multiple MPS image formats was added in [1], along with format type definitions for each VR. The MP297X was incorrectly marked as type1 (8-column A
i2c-vr: mps: fix mp297X update failure
Support for multiple MPS image formats was added in [1], along with format type definitions for each VR. The MP297X was incorrectly marked as type1 (8-column ATE format), but it actually uses type0 (7-column) format. This commit corrects the format type for MP2971X to fix update failures.
[1] https://gerrit.openbmc.org/c/openbmc/phosphor-bmc-code-mgmt/+/84455
Tested on Santabarbara and confirmed the update works successfully.
1. Trigger the fw update via redfish. ``` curl -k ${creds} \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_SWB_VR_p0v81_pex_0_4048\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};type=application/json" \ -F "UpdateFile=@${fwpath};type=application/octet-stream" \ https://${bmc}/redfish/v1/UpdateService/update-multipart ```
2. Task is returned ``` { "@odata.id": "/redfish/v1/TaskService/Tasks/1", "@odata.type": "#Task.v1_4_3.Task", "HidePayload": false, "Id": "1", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '1' has started.", "MessageArgs": [ "1" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 1", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "TargetUri": "/redfish/v1/UpdateService/update-multipart" }, "PercentComplete": 0, "StartTime": "2025-11-25T02:46:51+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/1", "TaskState": "Running", "TaskStatus": "OK" } ```
3. Query Task status ``` curl --silent $creds https://$bmc/redfish/v1/TaskService/Tasks/1 ```
``` { "@odata.id": "/redfish/v1/TaskService/Tasks/1", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-11-25T02:46:53+00:00", "HidePayload": false, "Id": "1", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '1' has started.", "MessageArgs": [ "1" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '1' has changed to progress 100 percent complete.", "MessageArgs": [ "1", "100" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '1' has completed.", "MessageArgs": [ "1" ], "MessageId": "TaskEvent.1.0.TaskCompletedOK", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 1", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "JsonBody": "null", "TargetUri": "/redfish/v1/UpdateService/update-multipart" }, "PercentComplete": 100, "StartTime": "2025-11-25T02:46:51+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/1", "TaskState": "Completed", "TaskStatus": "OK" } ```
Change-Id: I7438ad762dbc143208f630f5a1fba0d77944d4aa Signed-off-by: Kevin Tung <kevin.tung.openbmc@gmail.com>
show more ...
|
| 6e78f087 | 19-Nov-2025 |
Leo Yang <Leo-Yang@quantatw.com> |
i2c-vr: isl69269 Add length check to parsing
The ISL69269 parser lacks a length check mechanism during the parsing phase. Although current update files do not exceed 40 characters per line, however,
i2c-vr: isl69269 Add length check to parsing
The ISL69269 parser lacks a length check mechanism during the parsing phase. Although current update files do not exceed 40 characters per line, however, it is still need to prevent potential issues.
Tested on the Yosemite5 platform. ``` $ curl -k ${creds} -X GET https://${bmc}${target} { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_PVDD_CORE_617", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_CXL_VR_PVDD_CORE_617", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "1BC5F145" $ curl -k ${creds} -H "Content-Type:multipart/form-data" -X POST -F UpdateParameters="{\"Targets\":[\"${target}\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};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-11-28T08:20:53+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Running", "TaskStatus": "OK" $ curl -k $creds https://$bmc/redfish/v1/TaskService/Tasks/0 { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-11-28T08:20:55+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 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 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-11-28T08:20:53+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK" }
==== ac cycle ====
$ target=$(curl -k ${creds} --silent -X GET https://${bmc}/redfish/v1/UpdateService/FirmwareInventory/ | jq -r '.Members[] | select(.["@odata.id"] | contains("CXL_VR_PVDD")) | .["@odata.id"]') $ curl -k ${creds} -X GET https://${bmc}${target} { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_PVDD_CORE_9325", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_CXL_VR_PVDD_CORE_9325", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "4F879069" } ```
Change-Id: Ia01bbc8a1c0906feff295335845c688f02899b35 Signed-off-by: Leo Yang <Leo-Yang@quantatw.com>
show more ...
|
| f730973b | 12-Nov-2025 |
Kevin Tung <kevin.tung@quantatw.com> |
i2c-vr: add support for MPS MP292X VR firmware update over I2C
This commit introduces support for programming MPS MP292X VR devices over the I2C bus. It enables firmware updates for VR models such a
i2c-vr: add support for MPS MP292X VR firmware update over I2C
This commit introduces support for programming MPS MP292X VR devices over the I2C bus. It enables firmware updates for VR models such as MP2925 and MP2929. Support for the MP292XFirmware type in EM was added in [1].
[1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/85159
Tested on the Yosemite5 platform:
1. Display the fw inventory ``` 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/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_1427" }, {...} ], "Members@odata.count": 16, "Name": "Software Inventory Collection" } ```
2. Query version. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_1427 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_1427", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_1427", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "7F652B8C" } ```
3. Trigger the fw update via redfish. ``` curl -k ${creds} \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_1427\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};type=application/json" \ -F "UpdateFile=@${fwpath};type=application/octet-stream" \ https://${bmc}/redfish/v1/UpdateService/update-multipart ```
4. Task is returned ``` { "@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-11-12T07:19:57+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Running", "TaskStatus": "OK" } ```
5. Query Task status ``` curl --silent $creds https://$bmc/redfish/v1/TaskService/Tasks/0 ```
``` { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-11-12T07:20:31+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 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 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-11-12T07:19:57+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK" } ```
6. Display the fw inventory with newly updated fw. ``` 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/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_1427" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_8152" }, {...} ], "Members@odata.count": 17, "Name": "Software Inventory Collection" } ```
7. Query the new fw version. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_8152 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_8152", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_8152", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "Version": "7F6588DF" } ```
8. Do AC cycle to make sure the new fw is applied. ``` busctl set-property xyz.openbmc_project.State.Chassis0 /xyz/openbmc_project/state/chassis0 \ xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.PowerCycle ```
9. Display the fw inventory after AC cycle. ``` curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory ```
``` kevin@meta-device:~$ 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/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_8379" }, {...} ], "Members@odata.count": 16, "Name": "Software Inventory Collection" } ```
10. Query the fw version after AC cycle. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_8379 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_8379", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_CXL_VR_P1V2_VDD_DDR_CH13_8379", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "7F6588DF" } ```
Change-Id: I261a3b9619154860e0a636a633247965fea11032 Signed-off-by: Kevin Tung <kevin.tung.openbmc@gmail.com>
show more ...
|
| 3638c243 | 07-Oct-2025 |
Kevin Tung <kevin.tung@quantatw.com> |
i2c-vr: add support for MPS MP994X VR firmware update over I2C
This commit introduces support for programming MPS MP994X VR devices over the I2C bus. It enables firmware updates for VR models such a
i2c-vr: add support for MPS MP994X VR firmware update over I2C
This commit introduces support for programming MPS MP994X VR devices over the I2C bus. It enables firmware updates for VR models such as MP9945 and MP9946. Support for the MP994XFirmware type in EM was added in [1].
[1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/84276
Tested on the Yosemite5 platform:
1. Display the fw inventory ``` 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/Yosemite5_MB_VR_18_S5_3671" }, {...} ], "Members@odata.count": 12, "Name": "Software Inventory Collection" } ```
2. Query version. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_18_S5_3671 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_18_S5_3671", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_MB_VR_18_S5_3671", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "61A5F378" } ```
3. Trigger the fw update via redfish. ``` curl -k ${creds} \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{\"Targets\":[\"/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_18_S5_3671\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};type=application/json" \ -F "UpdateFile=@${fwpath};type=application/octet-stream" \ https://${bmc}/redfish/v1/UpdateService/update-multipart ```
4. Task is returned ``` { "@odata.id": "/redfish/v1/TaskService/Tasks/7", "@odata.type": "#Task.v1_4_3.Task", "HidePayload": false, "Id": "7", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '7' has started.", "MessageArgs": [ "7" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 7", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "TargetUri": "/redfish/v1/UpdateService/update-multipart" }, "PercentComplete": 0, "StartTime": "2025-10-07T07:27:09+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/7", "TaskState": "Running", "TaskStatus": "OK" } ```
5. Query Task status ``` curl --silent $creds https://$bmc/redfish/v1/TaskService/Tasks/7 ```
``` { "@odata.id": "/redfish/v1/TaskService/Tasks/7", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-10-07T07:27:19+00:00", "HidePayload": false, "Id": "7", "Messages": [ { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '7' has started.", "MessageArgs": [ "7" ], "MessageId": "TaskEvent.1.0.TaskStarted", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '7' has changed to progress 20 percent complete.", "MessageArgs": [ "7", "20" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '7' has changed to progress 50 percent complete.", "MessageArgs": [ "7", "50" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '7' has changed to progress 100 percent complete.", "MessageArgs": [ "7", "100" ], "MessageId": "TaskEvent.1.0.TaskProgressChanged", "MessageSeverity": "OK", "Resolution": "None." }, { "@odata.type": "#Message.v1_1_1.Message", "Message": "The task with Id '7' has completed.", "MessageArgs": [ "7" ], "MessageId": "TaskEvent.1.0.TaskCompletedOK", "MessageSeverity": "OK", "Resolution": "None." } ], "Name": "Task 7", "Payload": { "HttpHeaders": [], "HttpOperation": "POST", "JsonBody": "null", "TargetUri": "/redfish/v1/UpdateService/update-multipart" }, "PercentComplete": 100, "StartTime": "2025-10-07T07:27:09+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/7", "TaskState": "Completed", "TaskStatus": "OK" } ```
6. Display the fw inventory with newly updated fw. ``` 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/Yosemite5_MB_VR_18_S5_2390" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_18_S5_3671" }, {...} ], "Members@odata.count": 13, "Name": "Software Inventory Collection" } ```
7. Query the new fw version. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_18_S5_2390 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_18_S5_2390", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_MB_VR_18_S5_2390", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "Version": "61A561EB" } ```
8. Do AC cycle to make sure the new fw is applied. ``` busctl set-property xyz.openbmc_project.State.Chassis0 /xyz/openbmc_project/state/chassis0 \ xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.PowerCycle ```
9. Display the fw inventory after AC cycle. ``` curl --silent $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory ```
``` kevin@meta-device:~$ 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/Yosemite5_MB_VR_18_S5_2870" }, {...} ], "Members@odata.count": 12, "Name": "Software Inventory Collection" } ```
10. Query the fw version after AC cycle. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_18_S5_2870 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_18_S5_2870", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_MB_VR_18_S5_2870", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "61A561EB" } ```
Change-Id: Ib4a589870cbcb1989f17e74feb8d638d9362f9ec Signed-off-by: Kevin Tung <kevin.tung.openbmc@gmail.com>
show more ...
|
| c1b36628 | 27-Oct-2025 |
Leo Yang <Leo-Yang@quantatw.com> |
i2c-vr: add support for Infineon TDA38640A VR firmware update over I2C
This commit introduces support for programming Infineon TDA38640A VR devices over the I2C bus. It enables firmware updates for
i2c-vr: add support for Infineon TDA38640A VR firmware update over I2C
This commit introduces support for programming Infineon TDA38640A VR devices over the I2C bus. It enables firmware updates for TDA38640A.
Related commit:
EM(Merged): [1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/84725
Schema(Merged): [2] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/84724
PDI(Merged) : [3] https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/84412
Tested on the Yosemite5 platform.
``` $ target=$(curl -k ${creds} --silent -X GET https://${bmc}/redfish/v1/UpdateService/FirmwareInventory/ | jq -r '.Members[] | select(.["@odata.id"] | contains("MB_VR_PVDD18")) | .["@odata.id"]')
$ curl -k ${creds} -X GET https://${bmc}${target} { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_PVDD18_S5_7939", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_MB_VR_PVDD18_S5_7939", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "5E281514" $ fwpath="/media/leo/data/yv5/mb_vr_sni/yosemite5-mb-vr-pvdd18-s5-B651B567.pldm"
$ curl -k ${creds} \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{\"Targets\":[\"${target}\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};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-11-04T06:51:04+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Running", "TaskStatus": "OK" } $
========== ac cycle ==========
$ target=$(curl -k ${creds} --silent -X GET https://${bmc}/redfish/v1/UpdateService/FirmwareInventory/ | jq -r '.Members[] | select(.["@odata.id"] | contains("MB_VR_PVDD18")) | .["@odata.id"]') $ curl -k ${creds} -X GET https://${bmc}${target} { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_PVDD18_S5_5761", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_MB_VR_PVDD18_S5_5761", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "B651B567" } ```
Change-Id: I69fc2e3b83f56836aceff4e8b24dc85448f7c7ff Signed-off-by: Leo Yang <Leo-Yang@quantatw.com>
show more ...
|
| f5346677 | 03-Nov-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
fw update: tests for software update
Tests for the software update flow.
Minimal PLDM packages are constructed in testcases and the update flow is run on software instance.
These tests should chec
fw update: tests for software update
Tests for the software update flow.
Minimal PLDM packages are constructed in testcases and the update flow is run on software instance.
These tests should check that the common code behaves as outlined in the design [1]
References: [1] https://github.com/openbmc/docs/blob/master/designs/code-update.md
Change-Id: Ibf473999b692a85dd86e4ab57a9a4c322257fc40 Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| 3a31f0ac | 03-Nov-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
fw update: tests for device
Tests for the device update flow.
Minimal PLDM packages are constructed in testcases and the update flow is run on device instance.
These tests should check that the co
fw update: tests for device
Tests for the device update flow.
Minimal PLDM packages are constructed in testcases and the update flow is run on device instance.
These tests should check that the common code behaves as outlined in the design [1]
References: [1] https://github.com/openbmc/docs/blob/master/designs/code-update.md
Change-Id: I8f12839afd47ef3403a80439af54fedcc00f10be Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| c284e75b | 14-Oct-2025 |
Kevin Tung <kevin.tung@quantatw.com> |
i2c-vr: mps: extend MPS image parser to support multiple formats
Different MPS VR modules use varying image formats. This change enhances the common MPS image parser to handle multiple image types,
i2c-vr: mps: extend MPS image parser to support multiple formats
Different MPS VR modules use varying image formats. This change enhances the common MPS image parser to handle multiple image types, improving its flexibility and reusability.
- Add support for 7-column ATE images without write/read command info. - Add support for 8-column ATE images with write/read command info, which specifying byte, word, block, or process call operations.
Tested successfully by updating Yosemite5 VRs.
Change-Id: I9b60634c3a051c30ab2f56b895c2ef8db047ad13 Signed-off-by: Kevin Tung <kevin.tung.openbmc@gmail.com>
show more ...
|
| d9b99a96 | 03-Nov-2025 |
Leo Yang <Leo-Yang@quantatw.com> |
i2c-vr: xdpe1x2xx fix CRLF type handling issue
1.Neglecting file format problem, image files using Windows will use CRLF. Therefore, if a file has 39 valid characters on a line, adding CRLF will rea
i2c-vr: xdpe1x2xx fix CRLF type handling issue
1.Neglecting file format problem, image files using Windows will use CRLF. Therefore, if a file has 39 valid characters on a line, adding CRLF will reach 41. Therefore, this should support both CRLF and LF.
Tested on the Yosemite5 platform.
``` $target=$(curl -k ${creds} --silent -X GET https://${bmc}/redfish/v1/UpdateService/FirmwareInventory/ | jq -r '.Members[] | select(.["@odata.id"] | contains("MB_VR_CPU0")) | .["@odata.id"]') $ curl -k ${creds} -X GET https://${bmc}${target} { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_CPU0_4377", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_MB_VR_CPU0_4377", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "3C7938BB" $ fwpath="/media/leo/data/yv5/mb_vr_sni/yosemite5-mb-vr-cpu0-sni-1009-140B21B9.pldm" $ curl -k ${creds} -H "Content-Type:multipart/form-data" -X POST -F UpdateParameters="{\"Targets\":[\"${target}\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};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-11-06T11:20:49+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Running", "TaskStatus": "OK" } $ $ ============= ac cycle ============= $ target=$(curl -k ${creds} --silent -X GET https://${bmc}/redfish/v1/UpdateService/FirmwareInventory/ | jq -r '.Members[] | select(.["@odata.id"] | contains("MB_VR_CPU0")) | .["@odata.id"]') $ curl -k ${creds} -X GET https://${bmc}${target} { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_MB_VR_CPU0_5170", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Other image", "Id": "Yosemite5_MB_VR_CPU0_5170", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "140B21B9" } ```
Change-Id: I4ea7e7bdd30903c62af92868e643f7f0812b1fdb Signed-off-by: Leo Yang <Leo-Yang@quantatw.com>
show more ...
|
| 166a3bbf | 04-Nov-2025 |
Patrick Williams <patrick@stwcx.xyz> |
use sdbusplus unpack syntax
Rather than defining a variable and then reading it from a message, sdbusplus also supports directly unpack-ing from the message. Use this syntax instead as it is more e
use sdbusplus unpack syntax
Rather than defining a variable and then reading it from a message, sdbusplus also supports directly unpack-ing from the message. Use this syntax instead as it is more efficient and succinct.
Signed-off-by: Patrick Williams <patrick@stwcx.xyz> Change-Id: I8fad3008ef41aba7d4a00b12f41c7a8c6d5908ab
show more ...
|
| 04fab3a5 | 03-Nov-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
fix ci: shell script formatting
Due to change in our CI scripts / containers, apply the script formatting to make CI pass again.
Tested: Inspection only.
Change-Id: I65f9c4382f83a388d24f22c853f643
fix ci: shell script formatting
Due to change in our CI scripts / containers, apply the script formatting to make CI pass again.
Tested: Inspection only.
Change-Id: I65f9c4382f83a388d24f22c853f6432a2f8360ab Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| b593870d | 30-Sep-2025 |
Leo Yang <Leo-Yang@quantatw.com> |
i2c-vr: add RAA22X Gen3.5 support
Extend ISL69269 to support Renesas Gen3.5 VR devices which share similar programming interfaces but use slightly different registers
Related PRs - EM schema(Merged
i2c-vr: add RAA22X Gen3.5 support
Extend ISL69269 to support Renesas Gen3.5 VR devices which share similar programming interfaces but use slightly different registers
Related PRs - EM schema(Merged): https://gerrit.openbmc.org/c/openbmc/entity-manager/+/84149 Configuration patch(Merged): https://gerrit.openbmc.org/c/openbmc/entity-manager/+/84150 PDI Hardware change(Merged): https://gerrit.openbmc.org/c/openbmc/phosphor-dbus-interfaces/+/83529
Testd on Yv5: ``` $ target=$(curl -k ${creds} --silent -X GET https://${bmc}/redfish/v1/UpdateService/FirmwareInventory/ | jq -r '.Members[] | select(.["@odata.id"] | contains("CXL_VR_PVDD")) | .["@odata.id"]')
$ curl -k ${creds} -X GET https://${bmc}${target} { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Yosemite5_CXL_VR_PVDD_CORE_6124", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "Yosemite5_CXL_VR_PVDD_CORE_6124", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "4F879069" }
$ curl -k ${creds} -H "Content-Type:multipart/form-data" -X POST -F UpdateParameters="{\"Targets\":[\"${target}\"],\"@Redfish.OperationApplyTime\":\"OnReset\"};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-09-15T05:50:48+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Running", "TaskStatus": "OK" }
$ curl -k $creds https://$bmc/redfish/v1/TaskService/Tasks/0 { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-09-15T05:50:49+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 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 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 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-15T05:50:48+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK"
```
Change-Id: If99f5571d2d200416247edea2f745c41383af1c4 Signed-off-by: Leo Yang <Leo-Yang@quantatw.com>
show more ...
|
| 0527f208 | 30-Oct-2025 |
Hariharan Rangasamy <hariharanr@ami.com> |
Fix cppcheck errors
Error message: i2c-vr/mps/mp5998.cpp:114:17: error: Uninitialized variable: bufferSize [uninitvar] rbuf.resize(bufferSize);
Change-Id: I44ae8e75dbf57acbd4a0392137ba0716280adb2f
Fix cppcheck errors
Error message: i2c-vr/mps/mp5998.cpp:114:17: error: Uninitialized variable: bufferSize [uninitvar] rbuf.resize(bufferSize);
Change-Id: I44ae8e75dbf57acbd4a0392137ba0716280adb2f Signed-off-by: Hariharan Rangasamy <hariharanr@ami.com>
show more ...
|
| fd204780 | 30-Oct-2025 |
Leo Yang <Leo-Yang@quantatw.com> |
i2c-vr: add XDPE192C3E,XDPE1D2G3B support
Extend xdpe1x2xx to support XDPE192C3E,XDPE1D2G3B VR devices which share similar programming interfaces but use slightly different config size.
Tested pass
i2c-vr: add XDPE192C3E,XDPE1D2G3B support
Extend xdpe1x2xx to support XDPE192C3E,XDPE1D2G3B VR devices which share similar programming interfaces but use slightly different config size.
Tested pass on Yv5 platform.
Change-Id: I4f8bde67bce433a2536ffc9f88a49784d565ce42 Signed-off-by: Leo Yang <Leo-Yang@quantatw.com>
show more ...
|
| ecee4a6e | 30-Oct-2025 |
Leo Yang <Leo-Yang@quantatw.com> |
i2c-vr: fix xdpe1x2xx bugs
1.Due to the lack of a null character, debug messages become abnormal during file parsing.
2.When performing “Reset the configuration”, writing more memory than the lengt
i2c-vr: fix xdpe1x2xx bugs
1.Due to the lack of a null character, debug messages become abnormal during file parsing.
2.When performing “Reset the configuration”, writing more memory than the length declared by data[MaxSectDataCnt] may cause the program to exit abnormally.
issue log: ``` <7> parsing package header <7> parsing package, pkg header size: 178 <7> Yosemite5_MB_VR_CPU0_1794: set version 1009 09Z 0x140B21B9/XV0 Config 0000000sing: //XV0 PMBus LoopA User 643C5088ing: //XV0 PMBus LoopB User 07> Parsing: //XV0 FW SVI3 LoopA 07> Parsing: //XV0 FW SVI3 LoopB 00000000ing: [End Configuration Data] <7> Scratchpad Address: 0x2005f000 <7> CRC before programming: 0x140b21b9 <7> CRC of configuration: 0x140b21b9 ```
``` <6> Successfully updated VR Yosemite5_MB_VR_CPU0 corrupted size vs. prev_size Aborted (core dumped) root@bmc:~#
<7> Yosemite5_MB_VR_CPU0_1794: creating 'activating' association to /xyz/openbmc_project/inventory/system/board/Yosemite5_MB free(): invalid pointer Aborted (core dumped) root@bmc:~# ```
Change-Id: I7cba7cc5373612d79da641b2e764fa4985377e8b Signed-off-by: Leo Yang <Leo-Yang@quantatw.com>
show more ...
|
| de331ae4 | 20-Oct-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
test: common: software associations: remove NOLINT
remove `clang-analyzer-core.uninitialized.Branch` in a testcase.
Apparently the NOLINT is not required there, not sure if it was due to clang upda
test: common: software associations: remove NOLINT
remove `clang-analyzer-core.uninitialized.Branch` in a testcase.
Apparently the NOLINT is not required there, not sure if it was due to clang update or if it's been resolved in later revisions of the linked patch. Anyways we can drop it now.
Tested: clang-tidy passes
Fixes: ade5c5aad34fa313b1bdd88577f44ba6f64ef43c
Change-Id: Ibba3a10db586b3096880fecba68ebc797b6ac077 Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| 18b5e61b | 08-Aug-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
test: common: software
Test API of `class Software`, focus on initial state on construction.
Change-Id: I20350748d02f62cfb8371fee68d43ebbdb91609c Signed-off-by: Alexander Hansen <alexander.hansen@9
test: common: software
Test API of `class Software`, focus on initial state on construction.
Change-Id: I20350748d02f62cfb8371fee68d43ebbdb91609c Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| d880e4d1 | 08-Aug-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
test: common: software version
Test Software Version DBus API.
Change-Id: I287b7e7957199463ec80bda8f71bf881bc0e5cb8 Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com> |
| ade5c5aa | 29-Jul-2025 |
Alexander Hansen <alexander.hansen@9elements.com> |
test: common: associations
Test software associations in common code. Write necessary wrappers in example device to use the protected members.
Change-Id: If7c38f12472699672ed8a4c1b3e1c99c398cdba5 S
test: common: associations
Test software associations in common code. Write necessary wrappers in example device to use the protected members.
Change-Id: If7c38f12472699672ed8a4c1b3e1c99c398cdba5 Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
show more ...
|
| a3902c83 | 13-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 ...
|
| b602aad5 | 13-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 ...
|
| 782d6eed | 19-Aug-2025 |
FreddieJheng <Freddie.Jheng@quantatw.com> |
i2c-vr: add support for MPS MP5998 VR firmware update over I2C
This commit introduces support for programming MPS MP5998 VR devices over the I2C bus. Support for the MP5998Firmware type in entity-ma
i2c-vr: add support for MPS MP5998 VR firmware update over I2C
This commit introduces support for programming MPS MP5998 VR devices over the I2C bus. Support for the MP5998Firmware type in entity-manager was added in [1].
[1] https://gerrit.openbmc.org/c/openbmc/entity-manager/+/83114
Tested on the Santabarbara platform:
1. Display the fw inventory ``` 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/Santabarbara_PDB2_VR_MP5998_8692" }, {...} ], "Members@odata.count": 13, "Name": "Software Inventory Collection" } ```
2. Query version. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_PDB2_VR_MP5998_8692 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_PDB2_VR_MP5998_8692", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "Santabarbara_PDB2_VR_MP5998_8692", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "508F" } ```
3. Trigger the fw update via redfish. ``` curl -k ${creds} \ -H "Content-Type:multipart/form-data" \ -X POST \ -F UpdateParameters="{"Targets":["/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_PDB2_VR_MP5998_8692"],"@Redfish.OperationApplyTime":"OnReset"};type=application/json" \ -F "UpdateFile=@${fwpath};type=application/octet-stream" \ https://${bmc}/redfish/v1/UpdateService/update-multipart ```
4. Task is returned ``` { "@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-22T08:41:47+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Running", "TaskStatus": "OK" } ```
5. Query Task status ``` curl --silent $creds https://$bmc/redfish/v1/TaskService/Tasks/0 ```
``` { "@odata.id": "/redfish/v1/TaskService/Tasks/0", "@odata.type": "#Task.v1_4_3.Task", "EndTime": "2025-08-22T08:41:48+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 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 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-22T08:41:47+00:00", "TaskMonitor": "/redfish/v1/TaskService/TaskMonitors/0", "TaskState": "Completed", "TaskStatus": "OK" } ```
6. Display the fw inventory with newly updated fw. ``` 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/Santabarbara_PDB2_VR_MP5998_5612" }, { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_PDB2_VR_MP5998_8692" }, {...} ], "Members@odata.count": 16, "Name": "Software Inventory Collection" } ```
7. Query the new fw version. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_PDB2_VR_MP5998_5612 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_PDB2_VR_MP5998_5612", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "Santabarbara_PDB2_VR_MP5998_5612", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": false, "Version": "FCFF" } ```
8. Do AC cycle to make sure the new fw is applied. ``` busctl set-property xyz.openbmc_project.State.Chassis0 /xyz/openbmc_project/state/chassis0 \ xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.PowerCycle ```
9. Display the fw inventory after AC cycle. ``` 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/Santabarbara_PDB2_VR_MP5998_302" }, {...} ], "Members@odata.count": 12, "Name": "Software Inventory Collection" } ```
10. Query the fw version after AC cycle. ``` curl $creds https://$bmc/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_PDB2_VR_MP5998_302 ```
``` { "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Santabarbara_PDB2_VR_MP5998_302", "@odata.type": "#SoftwareInventory.v1_1_0.SoftwareInventory", "Description": "Unknown image", "Id": "Santabarbara_PDB2_VR_MP5998_302", "Name": "Software Inventory", "Status": { "Health": "OK", "HealthRollup": "OK", "State": "Enabled" }, "Updateable": true, "Version": "FCFF" } ```
Change-Id: Ia973a142ac04e041989a74a87e7f1fd8bd16ae3d Signed-off-by: Freddie Jheng <Freddie.Jheng@quantatw.com>
show more ...
|