Support host selector using cpld definitions

Description:
- Support host selector using cpld definitions

Design:
- Because the current structure only supports config defined by GPIO
  (Yosemite V2), but there are also have the system (Yosemite V3.5)
  gets the host-selector's selection from CPLD.

- So this commit is to extend the current configuration to use CPLD
  definitions. Also, support adding event io from the register file
  which was exported from the CLD driver.

- For example with config json below:
{
   "cpld_definitions": [
        {
            "name": "HOST_SELECTOR",
            "i2c_address": 15,
            "i2c_bus": 12,
            "register_name": "uart-selection-debug-card",
            "max_position": 4
        }
   ]
}

Dependency:
- CLD driver is required (link: https://lore.kernel.org/lkml/20230117094425.19004-1-Delphine_CC_Chiu@Wiwynn.com/)

Test Case:
- When ocp debug card uart button is pressed the position property on
  dbus is correct.

Signed-off-by: Delphine CC Chiu <Delphine_CC_Chiu@wiwynn.com>
Change-Id: I6746afa6d905bd3c681e2921c643b3cd4cb9944c
diff --git a/inc/cpld.hpp b/inc/cpld.hpp
new file mode 100644
index 0000000..206f0c6
--- /dev/null
+++ b/inc/cpld.hpp
@@ -0,0 +1,18 @@
+
+#pragma once
+#include "config.h"
+
+#include <cstdint>
+#include <string>
+
+struct ButtonConfig;
+
+struct CpldInfo
+{
+    std::string registerName;
+    uint32_t i2cAddress;
+    uint32_t i2cBus;
+    int cpldMappedFd; // io fd mapped with the cpld
+};
+
+int configCpld(ButtonConfig& buttonCfg);