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