blob: af1bbd92d5af057e710765a8bcc88781b2058f82 [file] [log] [blame]
Delphine CC Chiuccd7db02023-02-09 14:48:53 +08001
2#include "config.h"
3
4#include "button_config.hpp"
5
6#include <error.h>
7#include <fcntl.h>
8#include <unistd.h>
9
10#include <phosphor-logging/lg2.hpp>
11
12const std::string cpldDev = "/sys/bus/i2c/devices/";
13
14std::string getCpldDevPath(const CpldInfo& info)
15{
16 std::stringstream devPath;
17 devPath << cpldDev << info.i2cBus << "-" << std::hex << std::setw(4)
18 << std::setfill('0') << info.i2cAddress << "/" << info.registerName;
19 return devPath.str();
20}
21
22int configCpld(ButtonConfig& buttonIFConfig)
23{
24 std::string devPath = getCpldDevPath(buttonIFConfig.cpld);
25
26 auto fd = ::open(devPath.c_str(), O_RDONLY | O_NONBLOCK);
27
28 if (fd < 0)
29 {
30 lg2::error("Open {PATH} error: {ERROR}", "PATH", devPath, "ERROR",
31 errno);
32 return -1;
33 }
34
35 buttonIFConfig.cpld.cpldMappedFd = fd;
36 buttonIFConfig.fds.push_back(fd);
37 return 0;
38}