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 */ |