mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-12 05:24:12 +08:00
gpiolib: provide gpio_device_find_by_label()
By far the most common way of looking up GPIO devices is using their label. Provide a helpers for that to avoid every user implementing their own matching function. Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
This commit is contained in:
parent
cfe102f633
commit
d62fcd9f18
@ -20,6 +20,7 @@
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/string.h>
|
||||
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/gpio/driver.h>
|
||||
@ -1081,6 +1082,26 @@ struct gpio_device *gpio_device_find(void *data,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gpio_device_find);
|
||||
|
||||
static int gpio_chip_match_by_label(struct gpio_chip *gc, void *label)
|
||||
{
|
||||
return gc->label && !strcmp(gc->label, label);
|
||||
}
|
||||
|
||||
/**
|
||||
* gpio_device_find_by_label() - wrapper around gpio_device_find() finding the
|
||||
* GPIO device by its backing chip's label
|
||||
* @label: Label to lookup
|
||||
*
|
||||
* Returns:
|
||||
* Reference to the GPIO device or NULL. Reference must be released with
|
||||
* gpio_device_put().
|
||||
*/
|
||||
struct gpio_device *gpio_device_find_by_label(const char *label)
|
||||
{
|
||||
return gpio_device_find((void *)label, gpio_chip_match_by_label);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(gpio_device_find_by_label);
|
||||
|
||||
static int gpiochip_match_name(struct gpio_chip *gc, void *data)
|
||||
{
|
||||
const char *name = data;
|
||||
|
@ -610,6 +610,7 @@ struct gpio_chip *gpiochip_find(void *data,
|
||||
|
||||
struct gpio_device *gpio_device_find(void *data,
|
||||
int (*match)(struct gpio_chip *gc, void *data));
|
||||
struct gpio_device *gpio_device_find_by_label(const char *label);
|
||||
|
||||
struct gpio_device *gpio_device_get(struct gpio_device *gdev);
|
||||
void gpio_device_put(struct gpio_device *gdev);
|
||||
|
Loading…
Reference in New Issue
Block a user