aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-generic
diff options
context:
space:
mode:
authorGrant Likely <grant.likely@secretlab.ca>2013-02-05 08:33:49 -0500
committerGrant Likely <grant.likely@secretlab.ca>2013-02-05 08:37:46 -0500
commit0fa2fd9a0d4f1305a54a396d44975894e90eed7b (patch)
tree56045663b63cb29c2515e0c87519ff10398c4ab0 /include/asm-generic
parent46ebfbc3745597067494186a0e7031add22f3134 (diff)
parent476171ce7850b28280db6a2d0c0e4d3ff26c8117 (diff)
Merge branch 'linusw/devel' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-gpio.git into gpio/next
Device driver features, cleanups and bug fixes. Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
Diffstat (limited to 'include/asm-generic')
-rw-r--r--include/asm-generic/gpio.h81
1 files changed, 37 insertions, 44 deletions
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
index 20ca7663975f..2034e691c7ab 100644
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -152,7 +152,6 @@ struct gpio_chip {
152extern const char *gpiochip_is_requested(struct gpio_chip *chip, 152extern const char *gpiochip_is_requested(struct gpio_chip *chip,
153 unsigned offset); 153 unsigned offset);
154extern struct gpio_chip *gpio_to_chip(unsigned gpio); 154extern struct gpio_chip *gpio_to_chip(unsigned gpio);
155extern int __must_check gpiochip_reserve(int start, int ngpio);
156 155
157/* add/remove chips */ 156/* add/remove chips */
158extern int gpiochip_add(struct gpio_chip *chip); 157extern int gpiochip_add(struct gpio_chip *chip);
@@ -192,12 +191,6 @@ extern int gpio_request_one(unsigned gpio, unsigned long flags, const char *labe
192extern int gpio_request_array(const struct gpio *array, size_t num); 191extern int gpio_request_array(const struct gpio *array, size_t num);
193extern void gpio_free_array(const struct gpio *array, size_t num); 192extern void gpio_free_array(const struct gpio *array, size_t num);
194 193
195/* bindings for managed devices that want to request gpios */
196int devm_gpio_request(struct device *dev, unsigned gpio, const char *label);
197int devm_gpio_request_one(struct device *dev, unsigned gpio,
198 unsigned long flags, const char *label);
199void devm_gpio_free(struct device *dev, unsigned int gpio);
200
201#ifdef CONFIG_GPIO_SYSFS 194#ifdef CONFIG_GPIO_SYSFS
202 195
203/* 196/*
@@ -212,6 +205,43 @@ extern void gpio_unexport(unsigned gpio);
212 205
213#endif /* CONFIG_GPIO_SYSFS */ 206#endif /* CONFIG_GPIO_SYSFS */
214 207
208#ifdef CONFIG_PINCTRL
209
210/**
211 * struct gpio_pin_range - pin range controlled by a gpio chip
212 * @head: list for maintaining set of pin ranges, used internally
213 * @pctldev: pinctrl device which handles corresponding pins
214 * @range: actual range of pins controlled by a gpio controller
215 */
216
217struct gpio_pin_range {
218 struct list_head node;
219 struct pinctrl_dev *pctldev;
220 struct pinctrl_gpio_range range;
221};
222
223int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
224 unsigned int gpio_offset, unsigned int pin_offset,
225 unsigned int npins);
226void gpiochip_remove_pin_ranges(struct gpio_chip *chip);
227
228#else
229
230static inline int
231gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
232 unsigned int gpio_offset, unsigned int pin_offset,
233 unsigned int npins)
234{
235 return 0;
236}
237
238static inline void
239gpiochip_remove_pin_ranges(struct gpio_chip *chip)
240{
241}
242
243#endif /* CONFIG_PINCTRL */
244
215#else /* !CONFIG_GPIOLIB */ 245#else /* !CONFIG_GPIOLIB */
216 246
217static inline bool gpio_is_valid(int number) 247static inline bool gpio_is_valid(int number)
@@ -270,41 +300,4 @@ static inline void gpio_unexport(unsigned gpio)
270} 300}
271#endif /* CONFIG_GPIO_SYSFS */ 301#endif /* CONFIG_GPIO_SYSFS */
272 302
273#ifdef CONFIG_PINCTRL
274
275/**
276 * struct gpio_pin_range - pin range controlled by a gpio chip
277 * @head: list for maintaining set of pin ranges, used internally
278 * @pctldev: pinctrl device which handles corresponding pins
279 * @range: actual range of pins controlled by a gpio controller
280 */
281
282struct gpio_pin_range {
283 struct list_head node;
284 struct pinctrl_dev *pctldev;
285 struct pinctrl_gpio_range range;
286};
287
288int gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
289 unsigned int gpio_offset, unsigned int pin_offset,
290 unsigned int npins);
291void gpiochip_remove_pin_ranges(struct gpio_chip *chip);
292
293#else
294
295static inline int
296gpiochip_add_pin_range(struct gpio_chip *chip, const char *pinctl_name,
297 unsigned int gpio_offset, unsigned int pin_offset,
298 unsigned int npins)
299{
300 return 0;
301}
302
303static inline void
304gpiochip_remove_pin_ranges(struct gpio_chip *chip)
305{
306}
307
308#endif /* CONFIG_PINCTRL */
309
310#endif /* _ASM_GENERIC_GPIO_H */ 303#endif /* _ASM_GENERIC_GPIO_H */