diff options
author | Linus Walleij <linus.walleij@linaro.org> | 2012-11-06 16:03:35 +0100 |
---|---|---|
committer | Linus Walleij <linus.walleij@linaro.org> | 2012-11-11 19:06:07 +0100 |
commit | 1e63d7b9363f0c57d00991f9f2e0af374dfc591a (patch) | |
tree | 6bea7bfdd9dbfbe21433629b3f2a9758c92447be /include/linux/gpio.h | |
parent | 9ef0d6f7628bdcb5cc3c11623930f2527a3881a0 (diff) | |
download | op-kernel-dev-1e63d7b9363f0c57d00991f9f2e0af374dfc591a.zip op-kernel-dev-1e63d7b9363f0c57d00991f9f2e0af374dfc591a.tar.gz |
gpiolib: separation of pin concerns
The fact that of_gpiochip_add_pin_range() and
gpiochip_add_pin_range() share too much code is fragile and
will invariably mean that bugs need to be fixed in two places
instead of one.
So separate the concerns of gpiolib.c and gpiolib-of.c and
have the latter call the former as back-end. This is necessary
also when going forward with other device descriptions such
as ACPI.
This is done by:
- Adding a return code to gpiochip_add_pin_range() so we can
reliably check whether this succeeds.
- Get rid of the custom of_pinctrl_add_gpio_range() from
pinctrl. Instead create of_pinctrl_get() to just retrive the
pin controller per se from an OF node. This composite
function was just begging to be deleted, it was way to
purpose-specific.
- Use pinctrl_dev_get_name() to get the name of the retrieved
pin controller and use that to call back into the generic
gpiochip_add_pin_range().
Now the pin range is only allocated and tied to a pin
controller from the core implementation in gpiolib.c.
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'include/linux/gpio.h')
-rw-r--r-- | include/linux/gpio.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/gpio.h b/include/linux/gpio.h index 21d28b9..81bbfe5 100644 --- a/include/linux/gpio.h +++ b/include/linux/gpio.h @@ -233,7 +233,7 @@ static inline int irq_to_gpio(unsigned irq) #ifdef CONFIG_PINCTRL -static inline void +static inline int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name, unsigned int pin_base, unsigned int npins) { |