summaryrefslogtreecommitdiffstats
path: root/drivers/gpio
diff options
context:
space:
mode:
authorAndrey Smirnov <andrew.smirnov@gmail.com>2018-10-26 18:31:53 -0700
committerSascha Hauer <s.hauer@pengutronix.de>2018-10-29 09:10:38 +0100
commit183502af192962b0187d6f2ddc6e6a68b38869d0 (patch)
tree8e11ea7b5c47d0767d83cbec53d9cdcaf25ae295 /drivers/gpio
parent05a4b7d4b1b56af927d703e3667e1c7868bab1d4 (diff)
downloadbarebox-183502af192962b0187d6f2ddc6e6a68b38869d0.tar.gz
barebox-183502af192962b0187d6f2ddc6e6a68b38869d0.tar.xz
gpiolib: Introduce gpio_find_by_label()
Introduce gpio_find_by_label() in order to allow manipulating GPIOs by the labels assigned to them via DT or board/driver code. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/gpio')
-rw-r--r--drivers/gpio/gpiolib.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 982bec0b69..4c7aee4a0b 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -91,6 +91,23 @@ done:
return ret;
}
+int gpio_find_by_label(const char *label)
+{
+ int i;
+
+ for (i = 0; i < ARCH_NR_GPIOS; i++) {
+ struct gpio_info *info = &gpio_desc[i];
+
+ if (!info->requested || !info->chip || !info->label)
+ continue;
+
+ if (!strcmp(info->label, label))
+ return i;
+ }
+
+ return -ENOENT;
+}
+
void gpio_free(unsigned gpio)
{
struct gpio_info *gi = gpio_to_desc(gpio);