diff options
author | Andrey Smirnov <andrew.smirnov@gmail.com> | 2018-10-26 18:31:53 -0700 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2018-10-29 09:10:38 +0100 |
commit | 183502af192962b0187d6f2ddc6e6a68b38869d0 (patch) | |
tree | 8e11ea7b5c47d0767d83cbec53d9cdcaf25ae295 /drivers/gpio | |
parent | 05a4b7d4b1b56af927d703e3667e1c7868bab1d4 (diff) | |
download | barebox-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.c | 17 |
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); |