aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-generic
diff options
context:
space:
mode:
authorLinus Walleij <linus.walleij@linaro.org>2012-11-06 11:16:39 -0500
committerLinus Walleij <linus.walleij@linaro.org>2012-11-11 13:06:07 -0500
commit50309a9c2e576ac4ad29e30f5854acb87bdc2ac4 (patch)
tree12ded8b5c94195b0a26763f4ba322351463ea423 /include/asm-generic
parent1e63d7b9363f0c57d00991f9f2e0af374dfc591a (diff)
gpiolib: iron out include ladder mistakes
The <*/gpio.h> includes are updated again: now we need to account for the problem introduced by commit: 595679a8038584df7b9398bf34f61db3c038bfea "gpiolib: fix up function prototypes etc" Actually we need static inlines in include/asm-generic/gpio.h as well since we may have GPIOLIB but not PINCTRL. Make sure to move all the CONFIG_PINCTRL business to the end of the file so we are sure we have declared struct gpio_chip. And we need to keep the static inlines in <linux/gpio.h> but here for the !CONFIG_GENERIC_GPIO case, and then we may as well throw in a few warnings like the other prototypes there, if someone would have the bad taste of compiling without GENERIC_GPIO even. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'include/asm-generic')
-rw-r--r--include/asm-generic/gpio.h56
1 files changed, 35 insertions, 21 deletions
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
index 50d995e7e44a..2b84fc32fae2 100644
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -48,27 +48,6 @@ struct seq_file;
48struct module; 48struct module;
49struct device_node; 49struct device_node;
50 50
51#ifdef CONFIG_PINCTRL
52
53/**
54 * struct gpio_pin_range - pin range controlled by a gpio chip
55 * @head: list for maintaining set of pin ranges, used internally
56 * @pctldev: pinctrl device which handles corresponding pins
57 * @range: actual range of pins controlled by a gpio controller
58 */
59
60struct gpio_pin_range {
61 struct list_head node;
62 struct pinctrl_dev *pctldev;
63 struct pinctrl_gpio_range range;
64};
65
66int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
67 unsigned int pin_base, unsigned int npins);
68void gpiochip_remove_pin_ranges(struct gpio_chip *chip);
69
70#endif
71
72/** 51/**
73 * struct gpio_chip - abstract a GPIO controller 52 * struct gpio_chip - abstract a GPIO controller
74 * @label: for diagnostics 53 * @label: for diagnostics
@@ -288,4 +267,39 @@ static inline void gpio_unexport(unsigned gpio)
288} 267}
289#endif /* CONFIG_GPIO_SYSFS */ 268#endif /* CONFIG_GPIO_SYSFS */
290 269
270#ifdef CONFIG_PINCTRL
271
272/**
273 * struct gpio_pin_range - pin range controlled by a gpio chip
274 * @head: list for maintaining set of pin ranges, used internally
275 * @pctldev: pinctrl device which handles corresponding pins
276 * @range: actual range of pins controlled by a gpio controller
277 */
278
279struct gpio_pin_range {
280 struct list_head node;
281 struct pinctrl_dev *pctldev;
282 struct pinctrl_gpio_range range;
283};
284
285int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
286 unsigned int pin_base, unsigned int npins);
287void gpiochip_remove_pin_ranges(struct gpio_chip *chip);
288
289#else
290
291static inline int
292gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
293 unsigned int pin_base, unsigned int npins)
294{
295 return 0;
296}
297
298static inline void
299gpiochip_remove_pin_ranges(struct gpio_chip *chip)
300{
301}
302
303#endif /* CONFIG_PINCTRL */
304
291#endif /* _ASM_GENERIC_GPIO_H */ 305#endif /* _ASM_GENERIC_GPIO_H */