| 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 ...
|
| 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 ...
|
| 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 ...
|
| 6474c757 | 19-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 ...
|
| 7b925766 | 18-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 ...
|
| 2e168dba | 08-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 ...
|
| 9c05c3c6 | 24-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 ...
|
| d9825681 | 09-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 ...
|
| f30ca2c1 | 27-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 ...
|
| 5afc9aa0 | 08-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 ...
|
| 9ce83ded | 09-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 ...
|
| 61e12672 | 12-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 ...
|
| 37a30143 | 12-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 ...
|
| f6470b5e | 26-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 ...
|