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>
6 files changed
tree: ab4a0f7fe32c4bc7360633d93a4afb9e25737ea6
  1. bios/
  2. bmc/
  3. common/
  4. cpld/
  5. eeprom-device/
  6. i2c-vr/
  7. subprojects/
  8. test/
  9. tpm/
  10. .clang-format
  11. .clang-tidy
  12. .gitignore
  13. .shellcheck
  14. LICENSE
  15. meson.build
  16. meson.options
  17. OWNERS
  18. README.md
README.md

phosphor-bmc-code-mgmt

Phosphor BMC Code Management provides a set of system software management applications. More information can be found at Software Architecture

To Build

To build this package, do the following steps:

  1. meson build
  2. ninja -C build

To clean the repository run rm -r build.