aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpio/gpiolib.c72
-rw-r--r--include/linux/gpio/consumer.h6
2 files changed, 35 insertions, 43 deletions
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 09b7316a9834..7c7c39c46eb7 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -90,38 +90,6 @@ struct gpio_desc *gpio_to_desc(unsigned gpio)
EXPORT_SYMBOL_GPL(gpio_to_desc);
/**
- * Convert a GPIO name to its descriptor
- */
-struct gpio_desc *gpio_name_to_desc(const char * const name)
-{
- struct gpio_chip *chip;
- unsigned long flags;
-
- spin_lock_irqsave(&gpio_lock, flags);
-
- list_for_each_entry(chip, &gpio_chips, list) {
- int i;
-
- for (i = 0; i != chip->ngpio; ++i) {
- struct gpio_desc *gpio = &chip->desc[i];
-
- if (!gpio->name)
- continue;
-
- if (!strcmp(gpio->name, name)) {
- spin_unlock_irqrestore(&gpio_lock, flags);
- return gpio;
- }
- }
- }
-
- spin_unlock_irqrestore(&gpio_lock, flags);
-
- return NULL;
-}
-EXPORT_SYMBOL_GPL(gpio_name_to_desc);
-
-/**
* Get the GPIO descriptor corresponding to the given hw number for this chip.
*/
struct gpio_desc *gpiochip_get_desc(struct gpio_chip *chip,
@@ -250,6 +218,37 @@ static int gpiochip_add_to_list(struct gpio_chip *chip)
return err;
}
+/**
+ * Convert a GPIO name to its descriptor
+ */
+static struct gpio_desc *gpio_name_to_desc(const char * const name)
+{
+ struct gpio_chip *chip;
+ unsigned long flags;
+
+ spin_lock_irqsave(&gpio_lock, flags);
+
+ list_for_each_entry(chip, &gpio_chips, list) {
+ int i;
+
+ for (i = 0; i != chip->ngpio; ++i) {
+ struct gpio_desc *gpio = &chip->desc[i];
+
+ if (!gpio->name)
+ continue;
+
+ if (!strcmp(gpio->name, name)) {
+ spin_unlock_irqrestore(&gpio_lock, flags);
+ return gpio;
+ }
+ }
+ }
+
+ spin_unlock_irqrestore(&gpio_lock, flags);
+
+ return NULL;
+}
+
/*
* Takes the names from gc->names and checks if they are all unique. If they
* are, they are assigned to their gpio descriptors.
@@ -268,11 +267,10 @@ static int gpiochip_set_desc_names(struct gpio_chip *gc)
struct gpio_desc *gpio;
gpio = gpio_name_to_desc(gc->names[i]);
- if (gpio) {
- dev_err(gc->dev, "Detected name collision for GPIO name '%s'\n",
- gc->names[i]);
- return -EEXIST;
- }
+ if (gpio)
+ dev_warn(gc->dev, "Detected name collision for "
+ "GPIO name '%s'\n",
+ gc->names[i]);
}
/* Then add all names to the GPIO descriptors */
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h
index 366a3fdbdbea..fb0fde686cb1 100644
--- a/include/linux/gpio/consumer.h
+++ b/include/linux/gpio/consumer.h
@@ -130,7 +130,6 @@ int gpiod_to_irq(const struct gpio_desc *desc);
/* Convert between the old gpio_ and new gpiod_ interfaces */
struct gpio_desc *gpio_to_desc(unsigned gpio);
int desc_to_gpio(const struct gpio_desc *desc);
-struct gpio_desc *gpio_name_to_desc(const char *name);
/* Child properties interface */
struct fwnode_handle;
@@ -402,11 +401,6 @@ static inline struct gpio_desc *gpio_to_desc(unsigned gpio)
return ERR_PTR(-EINVAL);
}
-static inline struct gpio_desc *gpio_name_to_desc(const char *name)
-{
- return ERR_PTR(-EINVAL);
-}
-
static inline int desc_to_gpio(const struct gpio_desc *desc)
{
/* GPIO can never have been requested */