mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 06:06:44 +07:00
521a2ad6f8
This adds a GPIO line ABI for getting name, label and a few select flags from the kernel. This hides the kernel internals and only tells userspace what it may need to know: the different in-kernel consumers are masked behind the flag "kernel" and that is all userspace needs to know. However electric characteristics like active low, open drain etc are reflected to userspace, as this is important information. We provide information on all lines on all chips, later on we will likely add a flag for the chardev consumer so we can filter and display only the lines userspace actually uses in e.g. lsgpio, but then we first need an ABI for userspace to grab and use (get/set/select direction) a GPIO line. Sample output from "lsgpio" on ux500: GPIO chip: gpiochip7, "8011e000.gpio", 32 GPIO lines line 0: unnamed unlabeled line 1: unnamed unlabeled (...) line 25: unnamed "SFH7741 Proximity Sensor" [kernel output open-drain] line 26: unnamed unlabeled (...) Tested-by: Michael Welling <mwelling@ieee.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
28 lines
764 B
C
28 lines
764 B
C
/*
|
|
* GPIO tools - utility helpers library for the GPIO tools
|
|
*
|
|
* Copyright (C) 2015 Linus Walleij
|
|
*
|
|
* Portions copied from iio_utils and lssio:
|
|
* Copyright (c) 2010 Manuel Stahl <manuel.stahl@iis.fraunhofer.de>
|
|
* Copyright (c) 2008 Jonathan Cameron
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License version 2 as published by
|
|
* the Free Software Foundation.
|
|
*/
|
|
#ifndef _GPIO_UTILS_H_
|
|
#define _GPIO_UTILS_H_
|
|
|
|
#include <string.h>
|
|
|
|
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
|
|
|
|
static inline int check_prefix(const char *str, const char *prefix)
|
|
{
|
|
return strlen(str) > strlen(prefix) &&
|
|
strncmp(str, prefix, strlen(prefix)) == 0;
|
|
}
|
|
|
|
#endif /* _GPIO_UTILS_H_ */
|