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/lattice.cpp b/cpld/lattice/lattice.cpp
index 48e2479..87ae2f0 100644
--- a/cpld/lattice/lattice.cpp
+++ b/cpld/lattice/lattice.cpp
@@ -49,14 +49,6 @@
     return b;
 }
 
-const std::map<std::string, std::vector<uint8_t>> xo2xo3DeviceIdMap = {
-    {"LCMXO3LF-4300C", {0x61, 0x2b, 0xc0, 0x43}},
-    {"LCMXO3LF-4300", {0x61, 0x2b, 0xc0, 0x43}},
-    {"LCMXO3LF-6900", {0x61, 0x2b, 0xd0, 0x43}},
-    {"LCMXO3D-4300", {0x01, 0x2e, 0x20, 0x43}},
-    {"LCMXO3D-9400", {0x21, 0x2e, 0x30, 0x43}},
-};
-
 static int findNumberSize(const std::string& end, const std::string& start,
                           const std::string& line)
 {
@@ -150,7 +142,7 @@
             }
             else
             {
-                lg2::debug("STOP UPDATEING: The image not match with chip.");
+                lg2::debug("Abort update as image doesn't match the chip name");
                 return false;
             }
         }
@@ -351,10 +343,14 @@
         co_return false;
     }
 
-    auto chipWantToUpdate = xo2xo3DeviceIdMap.find(chip);
+    auto chipWantToUpdate =
+        std::find_if(supportedDeviceMap.begin(), supportedDeviceMap.end(),
+                     [this](const auto& pair) {
+                         return pair.second.chipName == this->chip;
+                     });
 
-    if (chipWantToUpdate != xo2xo3DeviceIdMap.end() &&
-        chipWantToUpdate->second == readData)
+    if (chipWantToUpdate != supportedDeviceMap.end() &&
+        chipWantToUpdate->second.deviceId == readData)
     {
         if (chip.rfind("LCMXO3D", 0) == 0)
         {
@@ -371,12 +367,7 @@
         co_return true;
     }
 
-    lg2::error(
-        "The device id not match with chip. Only the following chip names are supported: ");
-    for (const auto& chip : xo2xo3DeviceIdMap)
-    {
-        lg2::error(chip.first.c_str());
-    }
+    lg2::error("The device id doesn't match with chip.");
     co_return false;
 }
 
@@ -828,12 +819,7 @@
 sdbusplus::async::task<bool> CpldLatticeManager::updateFirmware(
     std::function<bool(int)> progressCallBack)
 {
-    if (xo2xo3DeviceIdMap.find(chip) != xo2xo3DeviceIdMap.end())
-    {
-        co_return co_await XO2XO3FamilyUpdate(progressCallBack);
-    }
-    lg2::error("Unsupported chip type: {CHIP}", "CHIP", chip);
-    co_return false;
+    co_return co_await XO2XO3FamilyUpdate(progressCallBack);
 }
 
 sdbusplus::async::task<bool> CpldLatticeManager::getVersion(