提交 165adc9c 编写于 作者: L Linus Walleij

gpiolib: fix up function prototypes etc

Commit 69e1601bca88809dc118abd1becb02c15a02ec71
"gpiolib: provide provision to register pin ranges"

Got most of it's function prototypes wrong, so fix this up by:

- Moving the void declarations into static inlines in
  <linux/gpio.h> (previously the actual prototypes were declared
  here...)

- Declare the gpiochip_add_pin_range() and
  gpiochip_remove_pin_ranges() functions in <asm-generic/gpio.h>
  together with the pin range struct declaration itself.

- Actually only implement these very functions in gpiolib.c
  if CONFIG_PINCTRL is set.

- Additionally export the symbols since modules will need to
  be able to do this.
Reviewed-by: NStephen Warren <swarren@nvidia.com>
Signed-off-by: NLinus Walleij <linus.walleij@linaro.org>
上级 33dfc414
...@@ -1185,6 +1185,7 @@ struct gpio_chip *gpiochip_find(void *data, ...@@ -1185,6 +1185,7 @@ struct gpio_chip *gpiochip_find(void *data,
EXPORT_SYMBOL_GPL(gpiochip_find); EXPORT_SYMBOL_GPL(gpiochip_find);
#ifdef CONFIG_PINCTRL #ifdef CONFIG_PINCTRL
void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name, void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
unsigned int pin_base, unsigned int npins) unsigned int pin_base, unsigned int npins)
{ {
...@@ -1206,6 +1207,7 @@ void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name, ...@@ -1206,6 +1207,7 @@ void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
list_add_tail(&pin_range->node, &chip->pin_ranges); list_add_tail(&pin_range->node, &chip->pin_ranges);
} }
EXPORT_SYMBOL_GPL(gpiochip_add_pin_range);
void gpiochip_remove_pin_ranges(struct gpio_chip *chip) void gpiochip_remove_pin_ranges(struct gpio_chip *chip)
{ {
...@@ -1217,11 +1219,9 @@ void gpiochip_remove_pin_ranges(struct gpio_chip *chip) ...@@ -1217,11 +1219,9 @@ void gpiochip_remove_pin_ranges(struct gpio_chip *chip)
&pin_range->range); &pin_range->range);
} }
} }
#else EXPORT_SYMBOL_GPL(gpiochip_remove_pin_ranges);
void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
unsigned int pin_base, unsigned int npins) {} #endif /* CONFIG_PINCTRL */
void gpiochip_remove_pin_ranges(struct gpio_chip *chip) {}
#endif
/* These "optional" allocation calls help prevent drivers from stomping /* These "optional" allocation calls help prevent drivers from stomping
* on each other, and help provide better diagnostics in debugfs. * on each other, and help provide better diagnostics in debugfs.
......
...@@ -49,6 +49,7 @@ struct module; ...@@ -49,6 +49,7 @@ struct module;
struct device_node; struct device_node;
#ifdef CONFIG_PINCTRL #ifdef CONFIG_PINCTRL
/** /**
* struct gpio_pin_range - pin range controlled by a gpio chip * struct gpio_pin_range - pin range controlled by a gpio chip
* @head: list for maintaining set of pin ranges, used internally * @head: list for maintaining set of pin ranges, used internally
...@@ -61,6 +62,11 @@ struct gpio_pin_range { ...@@ -61,6 +62,11 @@ struct gpio_pin_range {
struct pinctrl_dev *pctldev; struct pinctrl_dev *pctldev;
struct pinctrl_gpio_range 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);
void gpiochip_remove_pin_ranges(struct gpio_chip *chip);
#endif #endif
/** /**
......
...@@ -72,9 +72,9 @@ static inline int irq_to_gpio(unsigned int irq) ...@@ -72,9 +72,9 @@ static inline int irq_to_gpio(unsigned int irq)
return -EINVAL; return -EINVAL;
} }
#endif #endif /* ! CONFIG_ARCH_HAVE_CUSTOM_GPIO_H */
#else #else /* ! CONFIG_GENERIC_GPIO */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/types.h> #include <linux/types.h>
...@@ -231,9 +231,21 @@ static inline int irq_to_gpio(unsigned irq) ...@@ -231,9 +231,21 @@ static inline int irq_to_gpio(unsigned irq)
return -EINVAL; return -EINVAL;
} }
void gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name, #ifdef CONFIG_PINCTRL
unsigned int pin_base, unsigned int npins);
void gpiochip_remove_pin_ranges(struct gpio_chip *chip); static inline void
#endif gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
unsigned int pin_base, unsigned int npins)
{
}
static inline void
gpiochip_remove_pin_ranges(struct gpio_chip *chip)
{
}
#endif /* CONFIG_PINCTRL */
#endif /* ! CONFIG_GENERIC_GPIO */
#endif /* __LINUX_GPIO_H */ #endif /* __LINUX_GPIO_H */
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册