162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/gpio/gpio-latch.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: GPIO latch controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Sascha Hauer <s.hauer@pengutronix.de>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  This binding describes a GPIO multiplexer based on latches connected to
1462306a36Sopenharmony_ci  other GPIOs, like this:
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci  CLK0 ----------------------.        ,--------.
1762306a36Sopenharmony_ci  CLK1 -------------------.  `--------|>    #0 |
1862306a36Sopenharmony_ci                          |           |        |
1962306a36Sopenharmony_ci  OUT0 ----------------+--|-----------|D0    Q0|-----|<
2062306a36Sopenharmony_ci  OUT1 --------------+-|--|-----------|D1    Q1|-----|<
2162306a36Sopenharmony_ci  OUT2 ------------+-|-|--|-----------|D2    Q2|-----|<
2262306a36Sopenharmony_ci  OUT3 ----------+-|-|-|--|-----------|D3    Q3|-----|<
2362306a36Sopenharmony_ci  OUT4 --------+-|-|-|-|--|-----------|D4    Q4|-----|<
2462306a36Sopenharmony_ci  OUT5 ------+-|-|-|-|-|--|-----------|D5    Q5|-----|<
2562306a36Sopenharmony_ci  OUT6 ----+-|-|-|-|-|-|--|-----------|D6    Q6|-----|<
2662306a36Sopenharmony_ci  OUT7 --+-|-|-|-|-|-|-|--|-----------|D7    Q7|-----|<
2762306a36Sopenharmony_ci         | | | | | | | |  |           `--------'
2862306a36Sopenharmony_ci         | | | | | | | |  |
2962306a36Sopenharmony_ci         | | | | | | | |  |           ,--------.
3062306a36Sopenharmony_ci         | | | | | | | |  `-----------|>    #1 |
3162306a36Sopenharmony_ci         | | | | | | | |              |        |
3262306a36Sopenharmony_ci         | | | | | | | `--------------|D0    Q0|-----|<
3362306a36Sopenharmony_ci         | | | | | | `----------------|D1    Q1|-----|<
3462306a36Sopenharmony_ci         | | | | | `------------------|D2    Q2|-----|<
3562306a36Sopenharmony_ci         | | | | `--------------------|D3    Q3|-----|<
3662306a36Sopenharmony_ci         | | | `----------------------|D4    Q4|-----|<
3762306a36Sopenharmony_ci         | | `------------------------|D5    Q5|-----|<
3862306a36Sopenharmony_ci         | `--------------------------|D6    Q6|-----|<
3962306a36Sopenharmony_ci         `----------------------------|D7    Q7|-----|<
4062306a36Sopenharmony_ci                                      `--------'
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  The number of clk-gpios and latched-gpios is not fixed. The actual number
4362306a36Sopenharmony_ci  of number of latches and the number of inputs per latch is derived from
4462306a36Sopenharmony_ci  the number of GPIOs given in the corresponding device tree properties.
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ciproperties:
4762306a36Sopenharmony_ci  compatible:
4862306a36Sopenharmony_ci    const: gpio-latch
4962306a36Sopenharmony_ci  "#gpio-cells":
5062306a36Sopenharmony_ci    const: 2
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci  clk-gpios:
5362306a36Sopenharmony_ci    description: Array of GPIOs to be used to clock a latch
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  latched-gpios:
5662306a36Sopenharmony_ci    description: Array of GPIOs to be used as inputs per latch
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  setup-duration-ns:
5962306a36Sopenharmony_ci    description: Delay in nanoseconds to wait after the latch inputs have been
6062306a36Sopenharmony_ci      set up
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  clock-duration-ns:
6362306a36Sopenharmony_ci    description: Delay in nanoseconds to wait between clock output changes
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci  gpio-controller: true
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci  gpio-line-names: true
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_cirequired:
7062306a36Sopenharmony_ci  - compatible
7162306a36Sopenharmony_ci  - "#gpio-cells"
7262306a36Sopenharmony_ci  - gpio-controller
7362306a36Sopenharmony_ci  - clk-gpios
7462306a36Sopenharmony_ci  - latched-gpios
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ciadditionalProperties: false
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciexamples:
7962306a36Sopenharmony_ci  - |
8062306a36Sopenharmony_ci    gpio-latch {
8162306a36Sopenharmony_ci        #gpio-cells = <2>;
8262306a36Sopenharmony_ci        pinctrl-names = "default";
8362306a36Sopenharmony_ci        pinctrl-0 = <&pinctrl_di_do_leds>;
8462306a36Sopenharmony_ci        compatible = "gpio-latch";
8562306a36Sopenharmony_ci        gpio-controller;
8662306a36Sopenharmony_ci        setup-duration-ns = <100>;
8762306a36Sopenharmony_ci        clock-duration-ns = <100>;
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci        clk-gpios = <&gpio3 7 0>, <&gpio3 8 0>;
9062306a36Sopenharmony_ci        latched-gpios = <&gpio3 21 0>, <&gpio3 22 0>,
9162306a36Sopenharmony_ci                       <&gpio3 23 0>, <&gpio3 24 0>,
9262306a36Sopenharmony_ci                       <&gpio3 25 0>, <&gpio3 26 0>,
9362306a36Sopenharmony_ci                       <&gpio3 27 0>, <&gpio3 28 0>;
9462306a36Sopenharmony_ci    };
95