Use YAML for UCD definitions

Use a Python script to generate the UCD power sequencer information
needed for the pseq-monitor application.

Change-Id: I51f4b61bb4f22705584b73ba599b517780fa9adc
Signed-off-by: Brandon Wyman <bjwyman@gmail.com>
diff --git a/power-sequencer/templates/ucd90160_defs.mako.cpp b/power-sequencer/templates/ucd90160_defs.mako.cpp
new file mode 100644
index 0000000..3aea9a6
--- /dev/null
+++ b/power-sequencer/templates/ucd90160_defs.mako.cpp
@@ -0,0 +1,80 @@
+/* This is a generated file. */
+
+#include "ucd90160.hpp"
+
+namespace witherspoon
+{
+namespace power
+{
+
+using namespace ucd90160;
+using namespace std::string_literals;
+
+const DeviceMap UCD90160::deviceMap{
+    {0,
+     DeviceDefinition{
+         "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/"
+         "1e78a400.i2c-bus/i2c-11/11-0064",
+
+         RailNames{"5.0VCS"s, "12.0V"s, "3.3V"s, "1.8V"s, "1.1V"s, "1.0V"s,
+                   "0.9V"s, "VDN-A"s, "VDN-B"s, "AVDD"s, "VIO-A"s, "VIO-B"s,
+                   "VDD-A"s, "VDD-B"s, "VCS-A"s, "VCS-B"s},
+
+         GPIConfigs{
+             GPIConfig{1, 8, "PGOOD_5P0V"s, false, extraAnalysisType::none},
+             GPIConfig{2, 9, "MEM_GOOD0"s, false, extraAnalysisType::none},
+             GPIConfig{3, 10, "MEM_GOOD1"s, false, extraAnalysisType::none},
+             GPIConfig{4, 14, "GPU_PGOOD"s, false, extraAnalysisType::gpuPGOOD},
+             GPIConfig{5, 17, "GPU_TH_OVERT"s, true,
+                       extraAnalysisType::gpuOverTemp},
+             GPIConfig{6, 11, "SOFTWARE_PGOOD"s, false,
+                       extraAnalysisType::none}},
+
+         GPIOAnalysis{
+             {extraAnalysisType::gpuPGOOD,
+              GPIOGroup{
+                  "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@"
+                  "1e78a000/1e78a400.i2c-bus/i2c-11/11-0060",
+                  gpio::Value::low,
+                  [](auto& ucd, const auto& callout) {
+                      ucd.gpuPGOODError(callout);
+                  },
+                  optionFlags::none,
+                  GPIODefinitions{
+                      GPIODefinition{8,
+                                     "/system/chassis/motherboard/gv100card0"s},
+                      GPIODefinition{9,
+                                     "/system/chassis/motherboard/gv100card1"s},
+                      GPIODefinition{10,
+                                     "/system/chassis/motherboard/gv100card2"s},
+                      GPIODefinition{11,
+                                     "/system/chassis/motherboard/gv100card3"s},
+                      GPIODefinition{12,
+                                     "/system/chassis/motherboard/gv100card4"s},
+                      GPIODefinition{
+                          13, "/system/chassis/motherboard/gv100card5"s}}}},
+
+             {extraAnalysisType::gpuOverTemp,
+              GPIOGroup{
+                  "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@"
+                  "1e78a000/1e78a400.i2c-bus/i2c-11/11-0060",
+                  gpio::Value::low,
+                  [](auto& ucd,
+                     const auto& callout) { ucd.gpuOverTempError(callout); },
+                  optionFlags::shutdownOnFault,
+                  GPIODefinitions{
+                      GPIODefinition{2,
+                                     "/system/chassis/motherboard/gv100card0"s},
+                      GPIODefinition{3,
+                                     "/system/chassis/motherboard/gv100card1"s},
+                      GPIODefinition{4,
+                                     "/system/chassis/motherboard/gv100card2"s},
+                      GPIODefinition{5,
+                                     "/system/chassis/motherboard/gv100card3"s},
+                      GPIODefinition{6,
+                                     "/system/chassis/motherboard/gv100card4"s},
+                      GPIODefinition{
+                          7, "/system/chassis/motherboard/gv100card5"s}}}}}}}};
+
+} // namespace power
+} // namespace witherspoon