On Tue, Jul 22, 2014 at 1:26 PM, Guenter Roeck <linux@xxxxxxxxxxxx> wrote: > Both functions were introduced to let gpio drivers request their own > gpio pins. Without exporting the functions, this can however only be > used by gpio drivers built into the kernel. > > Secondary impact is that the functions can not currently be used by > platform initialization code associated with the gpio-pca953x driver. > This code permits auto-export of gpio pins through platform data, but > if this functionality is used, the module can no longer be unloaded due > to the problem solved with the introduction of gpiochip_request_own_desc > and gpiochip_free_own_desc. > > Export both function so they can be used from modules and from > platform initialization code. > > Cc: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> > Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx> > --- > drivers/gpio/gpiolib.c | 2 ++ > drivers/gpio/gpiolib.h | 3 --- > include/linux/gpio/consumer.h | 3 +++ > 3 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c > index 43d9e34..04c647e 100644 > --- a/drivers/gpio/gpiolib.c > +++ b/drivers/gpio/gpiolib.c > @@ -1953,6 +1953,7 @@ int gpiochip_request_own_desc(struct gpio_desc *desc, const char *label) > > return __gpiod_request(desc, label); > } > +EXPORT_SYMBOL(gpiochip_request_own_desc); > > /** > * gpiochip_free_own_desc - Free GPIO requested by the chip driver > @@ -1966,6 +1967,7 @@ void gpiochip_free_own_desc(struct gpio_desc *desc) > if (desc) > __gpiod_free(desc); > } > +EXPORT_SYMBOL(gpiochip_free_own_desc); > > /* Drivers MUST set GPIO direction before making get/set calls. In > * some cases this is done in early boot, before IRQs are enabled. > diff --git a/drivers/gpio/gpiolib.h b/drivers/gpio/gpiolib.h > index 1a4103d..2bdb69d 100644 > --- a/drivers/gpio/gpiolib.h > +++ b/drivers/gpio/gpiolib.h > @@ -45,9 +45,6 @@ acpi_get_gpiod_by_index(struct device *dev, int index, > } > #endif > > -int gpiochip_request_own_desc(struct gpio_desc *desc, const char *label); > -void gpiochip_free_own_desc(struct gpio_desc *desc); > - > struct gpio_desc *of_get_named_gpiod_flags(struct device_node *np, > const char *list_name, int index, enum of_gpio_flags *flags); > > diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h > index 05e53cc..e85f7e6 100644 > --- a/include/linux/gpio/consumer.h > +++ b/include/linux/gpio/consumer.h > @@ -32,6 +32,9 @@ struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev, > > void gpiod_put(struct gpio_desc *desc); > > +int gpiochip_request_own_desc(struct gpio_desc *desc, const char *label); > +void gpiochip_free_own_desc(struct gpio_desc *desc); I guess these functions should be made public in driver.h, not consumer.h. Users will be GPIO drivers and platform code, not device drivers which are the typical consumers of GPIOs. > + > struct gpio_desc *__must_check devm_gpiod_get(struct device *dev, > const char *con_id); > struct gpio_desc *__must_check devm_gpiod_get_index(struct device *dev, > -- > 1.9.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html