1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-03 17:52:07 +02:00

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>
This commit is contained in:
Patrick Delaunay
2020-01-13 11:35:07 +01:00
committed by Tom Rini
parent 695e5fd546
commit 477ca57b9a
2 changed files with 35 additions and 1 deletions

View File

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