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-pca95xx.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: NXP PCA95xx I2C GPIO multiplexer
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Krzysztof Kozlowski <krzk@kernel.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |+
1362306a36Sopenharmony_ci  Bindings for the family of I2C GPIO multiplexers/expanders: NXP PCA95xx,
1462306a36Sopenharmony_ci  Maxim MAX73xx
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ciproperties:
1762306a36Sopenharmony_ci  compatible:
1862306a36Sopenharmony_ci    oneOf:
1962306a36Sopenharmony_ci      - items:
2062306a36Sopenharmony_ci          - const: diodes,pi4ioe5v6534q
2162306a36Sopenharmony_ci          - const: nxp,pcal6534
2262306a36Sopenharmony_ci      - items:
2362306a36Sopenharmony_ci          - enum:
2462306a36Sopenharmony_ci              - exar,xra1202
2562306a36Sopenharmony_ci              - maxim,max7310
2662306a36Sopenharmony_ci              - maxim,max7312
2762306a36Sopenharmony_ci              - maxim,max7313
2862306a36Sopenharmony_ci              - maxim,max7315
2962306a36Sopenharmony_ci              - maxim,max7319
3062306a36Sopenharmony_ci              - maxim,max7320
3162306a36Sopenharmony_ci              - maxim,max7321
3262306a36Sopenharmony_ci              - maxim,max7322
3362306a36Sopenharmony_ci              - maxim,max7323
3462306a36Sopenharmony_ci              - maxim,max7324
3562306a36Sopenharmony_ci              - maxim,max7325
3662306a36Sopenharmony_ci              - maxim,max7326
3762306a36Sopenharmony_ci              - maxim,max7327
3862306a36Sopenharmony_ci              - nxp,pca6408
3962306a36Sopenharmony_ci              - nxp,pca6416
4062306a36Sopenharmony_ci              - nxp,pca9505
4162306a36Sopenharmony_ci              - nxp,pca9506
4262306a36Sopenharmony_ci              - nxp,pca9534
4362306a36Sopenharmony_ci              - nxp,pca9535
4462306a36Sopenharmony_ci              - nxp,pca9536
4562306a36Sopenharmony_ci              - nxp,pca9537
4662306a36Sopenharmony_ci              - nxp,pca9538
4762306a36Sopenharmony_ci              - nxp,pca9539
4862306a36Sopenharmony_ci              - nxp,pca9554
4962306a36Sopenharmony_ci              - nxp,pca9555
5062306a36Sopenharmony_ci              - nxp,pca9556
5162306a36Sopenharmony_ci              - nxp,pca9557
5262306a36Sopenharmony_ci              - nxp,pca9574
5362306a36Sopenharmony_ci              - nxp,pca9575
5462306a36Sopenharmony_ci              - nxp,pca9698
5562306a36Sopenharmony_ci              - nxp,pcal6408
5662306a36Sopenharmony_ci              - nxp,pcal6416
5762306a36Sopenharmony_ci              - nxp,pcal6524
5862306a36Sopenharmony_ci              - nxp,pcal6534
5962306a36Sopenharmony_ci              - nxp,pcal9535
6062306a36Sopenharmony_ci              - nxp,pcal9554b
6162306a36Sopenharmony_ci              - nxp,pcal9555a
6262306a36Sopenharmony_ci              - onnn,cat9554
6362306a36Sopenharmony_ci              - onnn,pca9654
6462306a36Sopenharmony_ci              - ti,pca6107
6562306a36Sopenharmony_ci              - ti,pca9536
6662306a36Sopenharmony_ci              - ti,tca6408
6762306a36Sopenharmony_ci              - ti,tca6416
6862306a36Sopenharmony_ci              - ti,tca6424
6962306a36Sopenharmony_ci              - ti,tca9538
7062306a36Sopenharmony_ci              - ti,tca9539
7162306a36Sopenharmony_ci              - ti,tca9554
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci  reg:
7462306a36Sopenharmony_ci    maxItems: 1
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  gpio-controller: true
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci  '#gpio-cells':
7962306a36Sopenharmony_ci    const: 2
8062306a36Sopenharmony_ci
8162306a36Sopenharmony_ci  gpio-line-names:
8262306a36Sopenharmony_ci    minItems: 1
8362306a36Sopenharmony_ci    maxItems: 40
8462306a36Sopenharmony_ci
8562306a36Sopenharmony_ci  interrupts:
8662306a36Sopenharmony_ci    maxItems: 1
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci  interrupt-controller: true
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci  '#interrupt-cells':
9162306a36Sopenharmony_ci    const: 2
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci  reset-gpios:
9462306a36Sopenharmony_ci    maxItems: 1
9562306a36Sopenharmony_ci    description:
9662306a36Sopenharmony_ci      GPIO specification for the RESET input. This is an active low signal to
9762306a36Sopenharmony_ci      the PCA953x.  Not valid for Maxim MAX732x devices.
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci  vcc-supply:
10062306a36Sopenharmony_ci    description:
10162306a36Sopenharmony_ci      Optional power supply.  Not valid for Maxim MAX732x devices.
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ci  wakeup-source:
10462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/flag
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_cipatternProperties:
10762306a36Sopenharmony_ci  "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$":
10862306a36Sopenharmony_ci    type: object
10962306a36Sopenharmony_ci    properties:
11062306a36Sopenharmony_ci      gpio-hog: true
11162306a36Sopenharmony_ci      gpios: true
11262306a36Sopenharmony_ci      input: true
11362306a36Sopenharmony_ci      output-high: true
11462306a36Sopenharmony_ci      output-low: true
11562306a36Sopenharmony_ci      line-name: true
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci    required:
11862306a36Sopenharmony_ci      - gpio-hog
11962306a36Sopenharmony_ci      - gpios
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ci    additionalProperties: false
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_cirequired:
12462306a36Sopenharmony_ci  - compatible
12562306a36Sopenharmony_ci  - reg
12662306a36Sopenharmony_ci  - gpio-controller
12762306a36Sopenharmony_ci  - "#gpio-cells"
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ciadditionalProperties: false
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ciallOf:
13262306a36Sopenharmony_ci  - if:
13362306a36Sopenharmony_ci      properties:
13462306a36Sopenharmony_ci        compatible:
13562306a36Sopenharmony_ci          contains:
13662306a36Sopenharmony_ci            enum:
13762306a36Sopenharmony_ci              - maxim,max7320
13862306a36Sopenharmony_ci              - maxim,max7321
13962306a36Sopenharmony_ci              - maxim,max7322
14062306a36Sopenharmony_ci              - maxim,max7323
14162306a36Sopenharmony_ci              - maxim,max7324
14262306a36Sopenharmony_ci              - maxim,max7325
14362306a36Sopenharmony_ci              - maxim,max7326
14462306a36Sopenharmony_ci              - maxim,max7327
14562306a36Sopenharmony_ci    then:
14662306a36Sopenharmony_ci      properties:
14762306a36Sopenharmony_ci        reset-gpios: false
14862306a36Sopenharmony_ci        vcc-supply: false
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_ciexamples:
15162306a36Sopenharmony_ci  - |
15262306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
15362306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci    i2c {
15662306a36Sopenharmony_ci        #address-cells = <1>;
15762306a36Sopenharmony_ci        #size-cells = <0>;
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci        gpio@20 {
16062306a36Sopenharmony_ci            compatible = "nxp,pca9505";
16162306a36Sopenharmony_ci            reg = <0x20>;
16262306a36Sopenharmony_ci            pinctrl-names = "default";
16362306a36Sopenharmony_ci            pinctrl-0 = <&pinctrl_pca9505>;
16462306a36Sopenharmony_ci            gpio-controller;
16562306a36Sopenharmony_ci            #gpio-cells = <2>;
16662306a36Sopenharmony_ci            interrupt-parent = <&gpio3>;
16762306a36Sopenharmony_ci            interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
16862306a36Sopenharmony_ci
16962306a36Sopenharmony_ci            usb3-sata-sel-hog {
17062306a36Sopenharmony_ci                gpio-hog;
17162306a36Sopenharmony_ci                gpios = <4 GPIO_ACTIVE_HIGH>;
17262306a36Sopenharmony_ci                output-low;
17362306a36Sopenharmony_ci                line-name = "usb3_sata_sel";
17462306a36Sopenharmony_ci            };
17562306a36Sopenharmony_ci        };
17662306a36Sopenharmony_ci    };
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci  - |
17962306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci    i2c {
18262306a36Sopenharmony_ci        #address-cells = <1>;
18362306a36Sopenharmony_ci        #size-cells = <0>;
18462306a36Sopenharmony_ci
18562306a36Sopenharmony_ci        gpio99: gpio@22 {
18662306a36Sopenharmony_ci            compatible = "nxp,pcal6524";
18762306a36Sopenharmony_ci            reg = <0x22>;
18862306a36Sopenharmony_ci            interrupt-parent = <&gpio6>;
18962306a36Sopenharmony_ci            interrupts = <1 IRQ_TYPE_EDGE_FALLING>; /* gpio6_161 */
19062306a36Sopenharmony_ci            interrupt-controller;
19162306a36Sopenharmony_ci            #interrupt-cells = <2>;
19262306a36Sopenharmony_ci            vcc-supply = <&vdds_1v8_main>;
19362306a36Sopenharmony_ci            gpio-controller;
19462306a36Sopenharmony_ci            #gpio-cells = <2>;
19562306a36Sopenharmony_ci            gpio-line-names = "hdmi-ct-hpd", "hdmi.ls-oe", "p02", "p03",
19662306a36Sopenharmony_ci                              "vibra", "fault2", "p06", "p07", "en-usb",
19762306a36Sopenharmony_ci                              "en-host1", "en-host2", "chg-int", "p14", "p15",
19862306a36Sopenharmony_ci                              "mic-int", "en-modem", "shdn-hs-amp",
19962306a36Sopenharmony_ci                              "chg-status+red", "green", "blue", "en-esata",
20062306a36Sopenharmony_ci                              "fault1", "p26", "p27";
20162306a36Sopenharmony_ci        };
20262306a36Sopenharmony_ci    };
20362306a36Sopenharmony_ci
20462306a36Sopenharmony_ci  - |
20562306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
20662306a36Sopenharmony_ci
20762306a36Sopenharmony_ci    i2c {
20862306a36Sopenharmony_ci        #address-cells = <1>;
20962306a36Sopenharmony_ci        #size-cells = <0>;
21062306a36Sopenharmony_ci
21162306a36Sopenharmony_ci        /* MAX7325 with interrupt support enabled */
21262306a36Sopenharmony_ci        gpio@6d {
21362306a36Sopenharmony_ci            compatible = "maxim,max7325";
21462306a36Sopenharmony_ci            reg = <0x6d>;
21562306a36Sopenharmony_ci            gpio-controller;
21662306a36Sopenharmony_ci            #gpio-cells = <2>;
21762306a36Sopenharmony_ci            interrupt-controller;
21862306a36Sopenharmony_ci            #interrupt-cells = <2>;
21962306a36Sopenharmony_ci            interrupt-parent = <&gpio4>;
22062306a36Sopenharmony_ci            interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
22162306a36Sopenharmony_ci        };
22262306a36Sopenharmony_ci    };
22362306a36Sopenharmony_ci
22462306a36Sopenharmony_ci  - |
22562306a36Sopenharmony_ci    i2c {
22662306a36Sopenharmony_ci        #address-cells = <1>;
22762306a36Sopenharmony_ci        #size-cells = <0>;
22862306a36Sopenharmony_ci
22962306a36Sopenharmony_ci        /* MAX7325 with interrupt support disabled */
23062306a36Sopenharmony_ci        gpio@6e {
23162306a36Sopenharmony_ci            compatible = "maxim,max7325";
23262306a36Sopenharmony_ci            reg = <0x6e>;
23362306a36Sopenharmony_ci            gpio-controller;
23462306a36Sopenharmony_ci            #gpio-cells = <2>;
23562306a36Sopenharmony_ci        };
23662306a36Sopenharmony_ci    };
237