aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/asm-generic/gpio.h
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-11-06 16:03:35 +0100
committerLinus Walleij <linus.walleij@linaro.org>2012-11-11 19:06:07 +0100
commit1e63d7b9363f0c57d00991f9f2e0af374dfc591a (patch)
tree6bea7bfdd9dbfbe21433629b3f2a9758c92447be /include/asm-generic/gpio.h
parentgpiolib: call pin removal in chip removal function (diff)
downloadwireguard-linux-1e63d7b9363f0c57d00991f9f2e0af374dfc591a.tar.xz
wireguard-linux-1e63d7b9363f0c57d00991f9f2e0af374dfc591a.zip
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/asm-generic/gpio.h')
-rw-r--r--include/asm-generic/gpio.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
index 2e60de4265ac..50d995e7e44a 100644
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -63,8 +63,8 @@ struct gpio_pin_range {
struct pinctrl_gpio_range range;
};
-void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
- unsigned int pin_base, unsigned int npins);
+int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
+ unsigned int pin_base, unsigned int npins);
void gpiochip_remove_pin_ranges(struct gpio_chip *chip);
#endif