Re: [PATCH] gpio: add DT bindings for existing consumer flags

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 25.09.2015 um 00:09 schrieb Linus Walleij <linus.walleij@xxxxxxxxxx>:

> It is customary for GPIO controllers to support open drain/collector
> and open source/emitter configurations. Add standard GPIO line flags
> to account for this and augment the documentation to say that these
> are the most generic bindings.
> 
> Several people approached me to add new flags to the lines, and this
> makes sense, but let's first bind up the most common cases before we
> start to add exotic stuff.
> 
> Cc: Tony Lindgren <tony@xxxxxxxxxxx>
> Cc: Grygorii Strashko <grygorii.strashko@xxxxxx>
> Cc: H. Nikolaus Schaller <hns@xxxxxxxxxxxxx>
> Signed-off-by: Linus Walleij <linus.walleij@xxxxxxxxxx>
> ---
> Documentation/devicetree/bindings/gpio/gpio.txt | 15 +++++++++++++--
> include/dt-bindings/gpio/gpio.h                 |  2 ++
> 2 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/gpio/gpio.txt b/Documentation/devicetree/bindings/gpio/gpio.txt
> index 5788d5cf1252..7b1c8bc24e2d 100644
> --- a/Documentation/devicetree/bindings/gpio/gpio.txt
> +++ b/Documentation/devicetree/bindings/gpio/gpio.txt
> @@ -52,9 +52,13 @@ only uses one.
> 
> gpio-specifier may encode: bank, pin position inside the bank,
> whether pin is open-drain and whether pin is logically inverted.
> +
> Exact meaning of each specifier cell is controller specific, and must
> -be documented in the device tree binding for the device. Use the macros
> -defined in include/dt-bindings/gpio/gpio.h whenever possible:
> +be documented in the device tree binding for the device.
> +
> +Most controllers are however specifying a generic flag bitfield
> +in the last cell, so for these, use the macros defined in
> +include/dt-bindings/gpio/gpio.h whenever possible:
> 
> Example of a node using GPIOs:
> 
> @@ -65,6 +69,13 @@ Example of a node using GPIOs:
> GPIO_ACTIVE_HIGH is 0, so in this example gpio-specifier is "18 0" and encodes
> GPIO pin number, and GPIO flags as accepted by the "qe_pio_e" gpio-controller.
> 
> +Optional standard bitfield specifiers for the last cell:
> +
> +- Bit 0: 0 means active high, 1 means active low
> +- Bit 1: 1 means open drain/open collector, see:
> +           https://en.wikipedia.org/wiki/Open_collector
> +- Bit 2: 1 means open source/open emitter
> +
> 1.1) GPIO specifier best practices
> ----------------------------------
> 
> diff --git a/include/dt-bindings/gpio/gpio.h b/include/dt-bindings/gpio/gpio.h
> index e6b1e0a808ae..f5ed02e81bf7 100644
> --- a/include/dt-bindings/gpio/gpio.h
> +++ b/include/dt-bindings/gpio/gpio.h
> @@ -11,5 +11,7 @@
> 
> #define GPIO_ACTIVE_HIGH 0
> #define GPIO_ACTIVE_LOW 1
> +#define GPIO_OPEN_DRAIN 2
> +#define GPIO_OPEN_SOURCE 4

this would allow to specify open drain and source
in parallel (6) - which would mean a completely floating
output… Is this intended?

Some hardware may also have open_collector
or open_emitter - which is logically the same.

So I have tried to find a common term covering all
these cases. It appears to be “single-ended”
https://en.wikipedia.org/wiki/Single-ended_triode
as opposite to “push-pull" outputs (and “tri-state").

So I would suggest:

#define GPIO_PUSH_PULL 0
#define GPIO_SINGLE_ENDED 2

and the distinction with pull-down (open drain/collector)
and pull-up (open source/emitter) to be combined with
ACTIVE_HIGH/LOW:

#define GPIO_OPEN_DRAIN (GPIO_SINGLE_ENDED  | GPIO_ACTIVE_LOW)
#define GPIO_OPEN_SOURCE (GPIO_SINGLE_ENDED  | GPIO_ACTIVE_HIGH)


> 
> #endif
> -- 
> 2.4.3
> 

BR,
Nikolaus Schaller

--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux