diff options
| author | Shawn Guo <shawn.guo@linaro.org> | 2013-01-18 02:57:46 -0500 |
|---|---|---|
| committer | Linus Walleij <linus.walleij@linaro.org> | 2013-01-22 04:23:35 -0500 |
| commit | 6a89a314ab107a12af08c71420c19a37a30fc2d3 (patch) | |
| tree | 391e95b100c796b0983f903e1cfc4f9dd2cfd2e4 /include/linux | |
| parent | d59b4eaaf04db07a02f092bfcb00de7f2e2d10db (diff) | |
gpio: devm_gpio_* support should not depend on GPIOLIB
Some architectures (e.g. blackfin) provide gpio API without requiring
GPIOLIB support (ARCH_WANT_OPTIONAL_GPIOLIB). devm_gpio_* functions
should also work for these architectures, since they do not really
depend on GPIOLIB.
Add a new option GPIO_DEVRES (enabled by default) to control the build
of devres.c. It also removes the empty version of devm_gpio_*
functions for !GENERIC_GPIO build from linux/gpio.h, and moves the
function declarations from asm-generic/gpio.h into linux/gpio.h.
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/gpio.h | 28 |
1 files changed, 8 insertions, 20 deletions
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 */ |
