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>
diff --git a/cpld/lattice/interface.cpp b/cpld/lattice/interface.cpp
index 21663f0..b2734ce 100644
--- a/cpld/lattice/interface.cpp
+++ b/cpld/lattice/interface.cpp
@@ -7,11 +7,6 @@
 namespace phosphor::software::cpld
 {
 
-const std::vector<std::string> supportedTypes = {
-    "LatticeXO2Firmware",
-    "LatticeXO3Firmware",
-};
-
 sdbusplus::async::task<bool> LatticeCPLD::updateFirmware(
     bool /*force*/, const uint8_t* image, size_t imageSize,
     std::function<bool(int)> progressCallBack)
@@ -45,15 +40,16 @@
 
 // Register all the CPLD type with the CPLD factory
 const bool vendorRegistered = [] {
-    for (const auto& type : supportedTypes)
+    for (const auto& [type, info] : supportedDeviceMap)
     {
+        auto typeStr = std::string(type);
         CPLDFactory::instance().registerCPLD(
-            type,
-            [](sdbusplus::async::context& ctx, const std::string& chipname,
-               uint16_t bus, uint8_t address) {
+            type, [info](sdbusplus::async::context& ctx,
+                         const std::string& /*chipName*/, uint16_t bus,
+                         uint8_t address) {
                 // Create and return a LatticeCPLD instance
                 // Pass the parameters to the constructor
-                return std::make_unique<LatticeCPLD>(ctx, chipname, bus,
+                return std::make_unique<LatticeCPLD>(ctx, info.chipName, bus,
                                                      address);
             });
     }