diff options
| author | Grant Likely <grant.likely@secretlab.ca> | 2013-02-05 08:33:49 -0500 |
|---|---|---|
| committer | Grant Likely <grant.likely@secretlab.ca> | 2013-02-05 08:37:46 -0500 |
| commit | 0fa2fd9a0d4f1305a54a396d44975894e90eed7b (patch) | |
| tree | 56045663b63cb29c2515e0c87519ff10398c4ab0 /include/asm-generic | |
| parent | 46ebfbc3745597067494186a0e7031add22f3134 (diff) | |
| parent | 476171ce7850b28280db6a2d0c0e4d3ff26c8117 (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.h | 81 |
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 { | |||
| 152 | extern const char *gpiochip_is_requested(struct gpio_chip *chip, | 152 | extern const char *gpiochip_is_requested(struct gpio_chip *chip, |
| 153 | unsigned offset); | 153 | unsigned offset); |
| 154 | extern struct gpio_chip *gpio_to_chip(unsigned gpio); | 154 | extern struct gpio_chip *gpio_to_chip(unsigned gpio); |
| 155 | extern int __must_check gpiochip_reserve(int start, int ngpio); | ||
| 156 | 155 | ||
| 157 | /* add/remove chips */ | 156 | /* add/remove chips */ |
| 158 | extern int gpiochip_add(struct gpio_chip *chip); | 157 | extern int gpiochip_add(struct gpio_chip *chip); |
| @@ -192,12 +191,6 @@ extern int gpio_request_one(unsigned gpio, unsigned long flags, const char *labe | |||
| 192 | extern int gpio_request_array(const struct gpio *array, size_t num); | 191 | extern int gpio_request_array(const struct gpio *array, size_t num); |
| 193 | extern void gpio_free_array(const struct gpio *array, size_t num); | 192 | extern void gpio_free_array(const struct gpio *array, size_t num); |
| 194 | 193 | ||
| 195 | /* bindings for managed devices that want to request gpios */ | ||
| 196 | int devm_gpio_request(struct device *dev, unsigned gpio, const char *label); | ||
| 197 | int devm_gpio_request_one(struct device *dev, unsigned gpio, | ||
| 198 | unsigned long flags, const char *label); | ||
| 199 | void 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 | |||
| 217 | struct gpio_pin_range { | ||
| 218 | struct list_head node; | ||
| 219 | struct pinctrl_dev *pctldev; | ||
| 220 | struct pinctrl_gpio_range range; | ||
| 221 | }; | ||
| 222 | |||
| 223 | int 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); | ||
| 226 | void gpiochip_remove_pin_ranges(struct gpio_chip *chip); | ||
| 227 | |||
| 228 | #else | ||
| 229 | |||
| 230 | static inline int | ||
| 231 | gpiochip_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 | |||
| 238 | static inline void | ||
| 239 | gpiochip_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 | ||
| 217 | static inline bool gpio_is_valid(int number) | 247 | static 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 | |||
| 282 | struct gpio_pin_range { | ||
| 283 | struct list_head node; | ||
| 284 | struct pinctrl_dev *pctldev; | ||
| 285 | struct pinctrl_gpio_range range; | ||
| 286 | }; | ||
| 287 | |||
| 288 | int 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); | ||
| 291 | void gpiochip_remove_pin_ranges(struct gpio_chip *chip); | ||
| 292 | |||
| 293 | #else | ||
| 294 | |||
| 295 | static inline int | ||
| 296 | gpiochip_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 | |||
| 303 | static inline void | ||
| 304 | gpiochip_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 */ |
