On Fri, Oct 07, 2022 at 01:46:47PM +0200, Sascha Hauer wrote: > This adds a binding for a GPIO multiplexer driver based on latches > connected to other GPIOs. > > Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > Reviewed-by: Rob Herring <robh@xxxxxxxxxx> Reviewed-by: Serge Semin <fancer.lancer@xxxxxxxxx> Just a note. In accordance with [1] the DT-bindings patches should come in the series before the code implementing the bindings. [1] Documentation/devicetree/bindings/submitting-patches.rst, unit I.5). -Sergey > --- > > Notes: > Changes since v3: > - Introduce delays between GPIO toggles as suggested by Serge Semin > > Changes since v1: > - Add license to binding file > > .../devicetree/bindings/gpio/gpio-latch.yaml | 94 +++++++++++++++++++ > 1 file changed, 94 insertions(+) > create mode 100644 Documentation/devicetree/bindings/gpio/gpio-latch.yaml > > diff --git a/Documentation/devicetree/bindings/gpio/gpio-latch.yaml b/Documentation/devicetree/bindings/gpio/gpio-latch.yaml > new file mode 100644 > index 0000000000000..1ed82a2cebdaa > --- /dev/null > +++ b/Documentation/devicetree/bindings/gpio/gpio-latch.yaml > @@ -0,0 +1,94 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/gpio/gpio-latch.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: GPIO latch controller > + > +maintainers: > + - Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> > + > +description: | > + This binding describes a GPIO multiplexer based on latches connected to > + other GPIOs, like this: > + > + CLK0 ----------------------. ,--------. > + CLK1 -------------------. `--------|> #0 | > + | | | > + OUT0 ----------------+--|-----------|D0 Q0|-----|< > + OUT1 --------------+-|--|-----------|D1 Q1|-----|< > + OUT2 ------------+-|-|--|-----------|D2 Q2|-----|< > + OUT3 ----------+-|-|-|--|-----------|D3 Q3|-----|< > + OUT4 --------+-|-|-|-|--|-----------|D4 Q4|-----|< > + OUT5 ------+-|-|-|-|-|--|-----------|D5 Q5|-----|< > + OUT6 ----+-|-|-|-|-|-|--|-----------|D6 Q6|-----|< > + OUT7 --+-|-|-|-|-|-|-|--|-----------|D7 Q7|-----|< > + | | | | | | | | | `--------' > + | | | | | | | | | > + | | | | | | | | | ,--------. > + | | | | | | | | `-----------|> #1 | > + | | | | | | | | | | > + | | | | | | | `--------------|D0 Q0|-----|< > + | | | | | | `----------------|D1 Q1|-----|< > + | | | | | `------------------|D2 Q2|-----|< > + | | | | `--------------------|D3 Q3|-----|< > + | | | `----------------------|D4 Q4|-----|< > + | | `------------------------|D5 Q5|-----|< > + | `--------------------------|D6 Q6|-----|< > + `----------------------------|D7 Q7|-----|< > + `--------' > + > + The number of clk-gpios and latched-gpios is not fixed. The actual number > + of number of latches and the number of inputs per latch is derived from > + the number of GPIOs given in the corresponding device tree properties. > + > +properties: > + compatible: > + const: gpio-latch > + "#gpio-cells": > + const: 2 > + > + clk-gpios: > + description: Array of GPIOs to be used to clock a latch > + > + latched-gpios: > + description: Array of GPIOs to be used as inputs per latch > + > + setup-duration-ns: > + description: Delay in nanoseconds to wait after the latch inputs have been > + set up > + > + clock-duration-ns: > + description: Delay in nanoseconds to wait between clock output changes > + > + gpio-controller: true > + > + gpio-line-names: true > + > +required: > + - compatible > + - "#gpio-cells" > + - gpio-controller > + - clk-gpios > + - latched-gpios > + > +additionalProperties: false > + > +examples: > + - | > + gpio-latch { > + #gpio-cells = <2>; > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_di_do_leds>; > + compatible = "gpio-latch"; > + gpio-controller; > + setup-duration-ns = <100>; > + clock-duration-ns = <100>; > + > + clk-gpios = <&gpio3 7 0>, <&gpio3 8 0>; > + latched-gpios = <&gpio3 21 0>, <&gpio3 22 0>, > + <&gpio3 23 0>, <&gpio3 24 0>, > + <&gpio3 25 0>, <&gpio3 26 0>, > + <&gpio3 27 0>, <&gpio3 28 0>; > + }; > -- > 2.30.2 >