Commit 79697ef9 authored by Alexandre Courbot's avatar Alexandre Courbot Committed by Linus Walleij

gpiolib: fix find_chip_by_name()

find_chip_by_name() was incorrectly implemented by using
gpio_lookup_list instead of gpiod_chips to iterate through all the
registered GPIO controllers. This patch reimplements it by using
gpiochip_find() with a custom search function, which simplifies the code
on top of fixing the mistake.
Signed-off-by: default avatarAlexandre Courbot <>
Signed-off-by: Linus Walleij's avatarLinus Walleij <>
parent fd8e198c
......@@ -1308,6 +1308,18 @@ struct gpio_chip *gpiochip_find(void *data,
static int gpiochip_match_name(struct gpio_chip *chip, void *data)
const char *name = data;
return !strcmp(chip->label, name);
static struct gpio_chip *find_chip_by_name(const char *name)
return gpiochip_find((void *)name, gpiochip_match_name);
......@@ -2260,23 +2272,6 @@ void gpiod_add_table(struct gpiod_lookup *table, size_t size)
* Caller must have a acquired gpio_lookup_lock
static struct gpio_chip *find_chip_by_name(const char *name)
struct gpio_chip *chip = NULL;
list_for_each_entry(chip, &gpio_lookup_list, list) {
if (chip->label == NULL)
if (!strcmp(chip->label, name))
return chip;
#ifdef CONFIG_OF
static struct gpio_desc *of_find_gpio(struct device *dev, const char *con_id,
unsigned int idx, unsigned long *flags)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment