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.hpp b/cpld/lattice/lattice.hpp
index 0bdc2bb..b585eb8 100644
--- a/cpld/lattice/lattice.hpp
+++ b/cpld/lattice/lattice.hpp
@@ -6,6 +6,19 @@
 #include <string_view>
 #include <utility>
 
+struct cpldInfo
+{
+    std::string chipName;
+    std::vector<uint8_t> deviceId;
+};
+
+const std::map<std::string, cpldInfo> supportedDeviceMap = {
+    {"LatticeLCMXO3LF_2100CFirmware",
+     {"LCMXO3LF-2100C", {0x61, 0x2b, 0xb0, 0x43}}},
+    {"LatticeLCMXO3LF_4300CFirmware",
+     {"LCMXO3LF-4300C", {0x61, 0x2b, 0xc0, 0x43}}},
+};
+
 struct cpldI2cInfo
 {
     unsigned long int QF; // Quantity of Fuses