diff options
| author | Philipp Zabel <p.zabel@pengutronix.de> | 2014-01-07 06:34:11 -0500 |
|---|---|---|
| committer | Linus Walleij <linus.walleij@linaro.org> | 2014-02-07 03:47:02 -0500 |
| commit | ef70bbe1aaa612f75360e5df5952fddec50b7ca9 (patch) | |
| tree | 2f80756c83780e9ed9c67401af16022a749543c0 /include | |
| parent | 25b35da7f4cce82271859f1b6eabd9f3bd41a2bb (diff) | |
gpio: make gpiod_direction_output take a logical value
The documentation was not clear about whether
gpio_direction_output should take a logical value or the physical
level on the output line, i.e. whether the ACTIVE_LOW status
would be taken into account.
This converts gpiod_direction_output to use the logical level
and adds a new gpiod_direction_output_raw for the raw value.
Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Reviewed-by: Alexandre Courbot <acourbot@nvidia.com>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-generic/gpio.h | 2 | ||||
| -rw-r--r-- | include/linux/gpio/consumer.h | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h index a5f56a0213a7..23e364538ab5 100644 --- a/include/asm-generic/gpio.h +++ b/include/asm-generic/gpio.h | |||
| @@ -69,7 +69,7 @@ static inline int gpio_direction_input(unsigned gpio) | |||
| 69 | } | 69 | } |
| 70 | static inline int gpio_direction_output(unsigned gpio, int value) | 70 | static inline int gpio_direction_output(unsigned gpio, int value) |
| 71 | { | 71 | { |
| 72 | return gpiod_direction_output(gpio_to_desc(gpio), value); | 72 | return gpiod_direction_output_raw(gpio_to_desc(gpio), value); |
| 73 | } | 73 | } |
| 74 | 74 | ||
| 75 | static inline int gpio_set_debounce(unsigned gpio, unsigned debounce) | 75 | static inline int gpio_set_debounce(unsigned gpio, unsigned debounce) |
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.h index 4d34dbbbad4d..387994325122 100644 --- a/include/linux/gpio/consumer.h +++ b/include/linux/gpio/consumer.h | |||
| @@ -36,6 +36,7 @@ void devm_gpiod_put(struct device *dev, struct gpio_desc *desc); | |||
| 36 | int gpiod_get_direction(const struct gpio_desc *desc); | 36 | int gpiod_get_direction(const struct gpio_desc *desc); |
| 37 | int gpiod_direction_input(struct gpio_desc *desc); | 37 | int gpiod_direction_input(struct gpio_desc *desc); |
| 38 | int gpiod_direction_output(struct gpio_desc *desc, int value); | 38 | int gpiod_direction_output(struct gpio_desc *desc, int value); |
| 39 | int gpiod_direction_output_raw(struct gpio_desc *desc, int value); | ||
| 39 | 40 | ||
| 40 | /* Value get/set from non-sleeping context */ | 41 | /* Value get/set from non-sleeping context */ |
| 41 | int gpiod_get_value(const struct gpio_desc *desc); | 42 | int gpiod_get_value(const struct gpio_desc *desc); |
| @@ -121,6 +122,12 @@ static inline int gpiod_direction_output(struct gpio_desc *desc, int value) | |||
| 121 | WARN_ON(1); | 122 | WARN_ON(1); |
| 122 | return -ENOSYS; | 123 | return -ENOSYS; |
| 123 | } | 124 | } |
| 125 | static inline int gpiod_direction_output_raw(struct gpio_desc *desc, int value) | ||
| 126 | { | ||
| 127 | /* GPIO can never have been requested */ | ||
| 128 | WARN_ON(1); | ||
| 129 | return -ENOSYS; | ||
| 130 | } | ||
| 124 | 131 | ||
| 125 | 132 | ||
| 126 | static inline int gpiod_get_value(const struct gpio_desc *desc) | 133 | static inline int gpiod_get_value(const struct gpio_desc *desc) |
