blob: 6f0a67bc61e6a7d4a727df175f11fa75fa7f372b [file] [log] [blame]
Kuiying Wanga9d39e32018-08-14 13:47:32 +08001/*
2// Copyright (c) 2018 Intel Corporation
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15*/
16#pragma once
Patrick Venture0d9377d2018-11-01 19:34:59 -070017
Naveen Moses3bd1cfc2022-02-14 18:04:20 +053018#include <nlohmann/json.hpp>
Patrick Venture0d9377d2018-11-01 19:34:59 -070019#include <sdbusplus/bus.hpp>
George Liu5b98f4d2022-06-20 13:31:14 +080020
Naveen Mosesdd5495c2021-12-03 22:40:46 +053021#include <string>
22#include <vector>
Patrick Venture0d9377d2018-11-01 19:34:59 -070023
Naveen Mosesdd5495c2021-12-03 22:40:46 +053024// this struct has the gpio config for single gpio
25struct gpioInfo
Matt Spinler8605bdf2018-11-05 14:55:46 -060026{
Naveen Mosesdd5495c2021-12-03 22:40:46 +053027 int fd; // io fd mapped with the gpio
28 uint32_t number;
29 std::string direction;
30};
31
32// this struct represents button interface
33struct buttonConfig
34{
Naveen Moses3bd1cfc2022-02-14 18:04:20 +053035 std::string formFactorName; // name of the button interface
36 std::vector<gpioInfo> gpios; // holds single or group gpio config
37 nlohmann::json extraJsonInfo; // corresponding to button interface
Naveen Mosesdd5495c2021-12-03 22:40:46 +053038};
39
40/**
41 * @brief iterates over the list of gpios and configures gpios them
42 * config which is set from gpio defs json file.
43 * The fd of the configured gpio is stored in buttonConfig.gpios container
44 * @return int returns 0 on successful config of all gpios
45 */
46
Naveen Mosesa1af3292021-12-15 11:47:01 +053047int configGroupGpio(buttonConfig& buttonCfg);
Naveen Mosesdd5495c2021-12-03 22:40:46 +053048
49/**
50 * @brief configures and initializes the single gpio
51 * @return int returns 0 on successful config of all gpios
52 */
53
Naveen Mosesa1af3292021-12-15 11:47:01 +053054int configGpio(gpioInfo& gpioConfig);
Naveen Mosesdd5495c2021-12-03 22:40:46 +053055
56uint32_t getGpioNum(const std::string& gpioPin);
57void closeGpio(int fd);
Naveen Moses3bd1cfc2022-02-14 18:04:20 +053058// global json object which holds gpio_defs.json configs
59extern nlohmann::json gpioDefs;