On Tue, Jul 22, 2014 at 3:43 PM, Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> wrote: > On Mon, Jul 21, 2014 at 10:18:25PM -0700, Guenter Roeck 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. > > The reason why these are private to drivers is that those are dangerous > if used blindly. > >> 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. > > However, you have valid reason above. I wonder if this requires > some documentation in Documentation/gpio/driver.txt? Indeed, that would be nice - at least to explain that these are not to be used inconsiderably. > >> Cc: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx> >> Signed-off-by: Guenter Roeck <linux@xxxxxxxxxxxx> >> --- >> v2: Move function declarations from consumer.h to driver.h. >> >> drivers/gpio/gpiolib.c | 2 ++ >> drivers/gpio/gpiolib.h | 3 --- >> include/linux/gpio/driver.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); > > EXPORT_SYMBOL_GPL? > >> >> /** >> * 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); > > ditto. > >> /* 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/driver.h b/include/linux/gpio/driver.h >> index 573e4f3..8e07d58 100644 >> --- a/include/linux/gpio/driver.h >> +++ b/include/linux/gpio/driver.h >> @@ -223,6 +223,9 @@ int gpiochip_irqchip_add(struct gpio_chip *gpiochip, >> >> #endif /* CONFIG_GPIO_IRQCHIP */ >> >> +int gpiochip_request_own_desc(struct gpio_desc *desc, const char *label); >> +void gpiochip_free_own_desc(struct gpio_desc *desc); >> + >> #else /* CONFIG_GPIOLIB */ >> >> static inline struct gpio_chip *gpiod_to_chip(const struct gpio_desc *desc) >> -- >> 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