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 | |
| 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')
| -rw-r--r-- | include/asm-generic/gpio.h | 81 | ||||
| -rw-r--r-- | include/linux/acpi_gpio.h | 4 | ||||
| -rw-r--r-- | include/linux/gpio.h | 28 |
3 files changed, 49 insertions, 64 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 */ |
diff --git a/include/linux/acpi_gpio.h b/include/linux/acpi_gpio.h index 91615a389b65..b76ebd08ff8e 100644 --- a/include/linux/acpi_gpio.h +++ b/include/linux/acpi_gpio.h | |||
| @@ -2,10 +2,12 @@ | |||
| 2 | #define _LINUX_ACPI_GPIO_H_ | 2 | #define _LINUX_ACPI_GPIO_H_ |
| 3 | 3 | ||
| 4 | #include <linux/errno.h> | 4 | #include <linux/errno.h> |
| 5 | #include <linux/gpio.h> | ||
| 5 | 6 | ||
| 6 | #ifdef CONFIG_GPIO_ACPI | 7 | #ifdef CONFIG_GPIO_ACPI |
| 7 | 8 | ||
| 8 | int acpi_get_gpio(char *path, int pin); | 9 | int acpi_get_gpio(char *path, int pin); |
| 10 | void acpi_gpiochip_request_interrupts(struct gpio_chip *chip); | ||
| 9 | 11 | ||
| 10 | #else /* CONFIG_GPIO_ACPI */ | 12 | #else /* CONFIG_GPIO_ACPI */ |
| 11 | 13 | ||
| @@ -14,6 +16,8 @@ static inline int acpi_get_gpio(char *path, int pin) | |||
| 14 | return -ENODEV; | 16 | return -ENODEV; |
| 15 | } | 17 | } |
| 16 | 18 | ||
| 19 | static inline void acpi_gpiochip_request_interrupts(struct gpio_chip *chip) { } | ||
| 20 | |||
| 17 | #endif /* CONFIG_GPIO_ACPI */ | 21 | #endif /* CONFIG_GPIO_ACPI */ |
| 18 | 22 | ||
| 19 | #endif /* _LINUX_ACPI_GPIO_H_ */ | 23 | #endif /* _LINUX_ACPI_GPIO_H_ */ |
diff --git a/include/linux/gpio.h b/include/linux/gpio.h index bfe665621536..f6c7ae3e223b 100644 --- a/include/linux/gpio.h +++ b/include/linux/gpio.h | |||
| @@ -94,24 +94,12 @@ static inline int gpio_request(unsigned gpio, const char *label) | |||
| 94 | return -ENOSYS; | 94 | return -ENOSYS; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | static inline int devm_gpio_request(struct device *dev, unsigned gpio, | ||
| 98 | const char *label) | ||
| 99 | { | ||
| 100 | return -ENOSYS; | ||
| 101 | } | ||
| 102 | |||
| 103 | static inline int gpio_request_one(unsigned gpio, | 97 | static inline int gpio_request_one(unsigned gpio, |
| 104 | unsigned long flags, const char *label) | 98 | unsigned long flags, const char *label) |
| 105 | { | 99 | { |
| 106 | return -ENOSYS; | 100 | return -ENOSYS; |
| 107 | } | 101 | } |
| 108 | 102 | ||
| 109 | static inline int devm_gpio_request_one(struct device *dev, unsigned gpio, | ||
| 110 | unsigned long flags, const char *label) | ||
| 111 | { | ||
| 112 | return -ENOSYS; | ||
| 113 | } | ||
| 114 | |||
| 115 | static inline int gpio_request_array(const struct gpio *array, size_t num) | 103 | static inline int gpio_request_array(const struct gpio *array, size_t num) |
| 116 | { | 104 | { |
| 117 | return -ENOSYS; | 105 | return -ENOSYS; |
| @@ -125,14 +113,6 @@ static inline void gpio_free(unsigned gpio) | |||
| 125 | WARN_ON(1); | 113 | WARN_ON(1); |
| 126 | } | 114 | } |
| 127 | 115 | ||
| 128 | static inline void devm_gpio_free(struct device *dev, unsigned gpio) | ||
| 129 | { | ||
| 130 | might_sleep(); | ||
| 131 | |||
| 132 | /* GPIO can never have been requested */ | ||
| 133 | WARN_ON(1); | ||
| 134 | } | ||
| 135 | |||
| 136 | static inline void gpio_free_array(const struct gpio *array, size_t num) | 116 | static inline void gpio_free_array(const struct gpio *array, size_t num) |
| 137 | { | 117 | { |
| 138 | might_sleep(); | 118 | might_sleep(); |
| @@ -248,4 +228,12 @@ gpiochip_remove_pin_ranges(struct gpio_chip *chip) | |||
| 248 | 228 | ||
| 249 | #endif /* ! CONFIG_GENERIC_GPIO */ | 229 | #endif /* ! CONFIG_GENERIC_GPIO */ |
| 250 | 230 | ||
| 231 | struct device; | ||
| 232 | |||
| 233 | /* bindings for managed devices that want to request gpios */ | ||
| 234 | int devm_gpio_request(struct device *dev, unsigned gpio, const char *label); | ||
| 235 | int devm_gpio_request_one(struct device *dev, unsigned gpio, | ||
| 236 | unsigned long flags, const char *label); | ||
| 237 | void devm_gpio_free(struct device *dev, unsigned int gpio); | ||
| 238 | |||
| 251 | #endif /* __LINUX_GPIO_H */ | 239 | #endif /* __LINUX_GPIO_H */ |
