/* This is a generated file. */

#include "ucd90160.hpp"

namespace witherspoon
{
namespace power
{

using namespace ucd90160;
using namespace std::string_literals;

const DeviceMap UCD90160::deviceMap{
%for ucd_data in ucd90160s:
    {${ucd_data['index']},
     DeviceDefinition{
       "${ucd_data['path']}",

        RailNames{
        %for rail in ucd_data['RailNames']:
            "${rail}"s,
        %endfor
        },

         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}}}}}}
    },
%endfor
};

} // namespace power
} // namespace witherspoon
