aboutsummaryrefslogtreecommitdiff
path: root/include/asm-generic
diff options
context:
space:
mode:
authorPatrick Delaunay <patrick.delaunay@st.com>2020-01-13 11:35:07 +0100
committerTom Rini <trini@konsulko.com>2020-04-16 23:06:54 -0400
commit477ca57b9a53120a14bdca356612fce15211345d (patch)
tree8ede882b3395eda2e70c38d8b4ad1b1772e6bc7b /include/asm-generic
parent695e5fd5469ab052126c4cb30c4d26e6058de067 (diff)
downloadu-boot-477ca57b9a53120a14bdca356612fce15211345d.zip
u-boot-477ca57b9a53120a14bdca356612fce15211345d.tar.gz
u-boot-477ca57b9a53120a14bdca356612fce15211345d.tar.bz2
gpio: add support of new GPIO direction flag
This commit manages the new dir flags that can be used in gpio specifiers to indicate the pull-up or pull-down resistor configuration for output gpio (GPIO_PULL_UP, GPIO_PULL_DOWN) or the Open Drain/Open Source configuration for input gpio (GPIO_OPEN_DRAIN, GPIO_OPEN_SOURCE). These flags are already supported in Linux kernel in gpio lib. This patch only parse and save the direction flags in GPIO descriptor (desc->flags), it prepares the introduction of new ops to manage them. The GPIO uclass supports new GPIO flags from device-tree (GPIO_XXX define in include/dt-bindings/gpio/gpio.h) and translate them in the dir flags (GPIOD_XXX): - GPIO_PULL_UP => GPIOD_PULL_UP - GPIO_PULL_DOWN => GPIOD_PULL_DOWN - GPIO_OPEN_DRAIN => GPIOD_OPEN_DRAIN - GPIO_OPEN_SOURCE => GPIOD_OPEN_SOURCE This patch also adds protection in the check_dir_flags function for new invalid configuration of the dir flags. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'include/asm-generic')
-rw-r--r--include/asm-generic/gpio.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/asm-generic/gpio.h b/include/asm-generic/gpio.h
index 1329d02..42c9ab2 100644
--- a/include/asm-generic/gpio.h
+++ b/include/asm-generic/gpio.h
@@ -119,8 +119,12 @@ struct gpio_desc {
unsigned long flags;
#define GPIOD_IS_OUT BIT(1) /* GPIO is an output */
#define GPIOD_IS_IN BIT(2) /* GPIO is an input */
-#define GPIOD_ACTIVE_LOW BIT(3) /* value has active low */
+#define GPIOD_ACTIVE_LOW BIT(3) /* GPIO is active when value is low */
#define GPIOD_IS_OUT_ACTIVE BIT(4) /* set output active */
+#define GPIOD_OPEN_DRAIN BIT(5) /* GPIO is open drain type */
+#define GPIOD_OPEN_SOURCE BIT(6) /* GPIO is open source type */
+#define GPIOD_PULL_UP BIT(7) /* GPIO has pull-up enabled */
+#define GPIOD_PULL_DOWN BIT(8) /* GPIO has pull-down enabled */
uint offset; /* GPIO offset within the device */
/*