186335b51SRob Herring# SPDX-License-Identifier: GPL-2.0
286335b51SRob Herring%YAML 1.2
386335b51SRob Herring---
486335b51SRob Herring$id: http://devicetree.org/schemas/i2c/i2c-mux-pca954x.yaml#
586335b51SRob Herring$schema: http://devicetree.org/meta-schemas/core.yaml#
686335b51SRob Herring
786335b51SRob Herringtitle: NXP PCA954x I2C bus switch
886335b51SRob Herring
986335b51SRob Herringmaintainers:
1086335b51SRob Herring  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
1186335b51SRob Herring
1286335b51SRob Herringdescription:
1386335b51SRob Herring  The binding supports NXP PCA954x and PCA984x I2C mux/switch devices.
1486335b51SRob Herring
1586335b51SRob Herringproperties:
1686335b51SRob Herring  compatible:
1786335b51SRob Herring    oneOf:
1886335b51SRob Herring      - enum:
1986335b51SRob Herring          - nxp,pca9540
2086335b51SRob Herring          - nxp,pca9542
2186335b51SRob Herring          - nxp,pca9543
2286335b51SRob Herring          - nxp,pca9544
2386335b51SRob Herring          - nxp,pca9545
2486335b51SRob Herring          - nxp,pca9546
2586335b51SRob Herring          - nxp,pca9547
2686335b51SRob Herring          - nxp,pca9548
2786335b51SRob Herring          - nxp,pca9846
2886335b51SRob Herring          - nxp,pca9847
2986335b51SRob Herring          - nxp,pca9848
3086335b51SRob Herring          - nxp,pca9849
3186335b51SRob Herring      - items:
3286335b51SRob Herring          - const: nxp,pca9646
3386335b51SRob Herring          - const: nxp,pca9546
3486335b51SRob Herring
3586335b51SRob Herring  reg:
3686335b51SRob Herring    maxItems: 1
3786335b51SRob Herring
3886335b51SRob Herring  interrupts:
3986335b51SRob Herring    maxItems: 1
4086335b51SRob Herring
4186335b51SRob Herring  "#interrupt-cells":
4286335b51SRob Herring    const: 2
4386335b51SRob Herring
4486335b51SRob Herring  interrupt-controller: true
4586335b51SRob Herring
4686335b51SRob Herring  reset-gpios:
4786335b51SRob Herring    maxItems: 1
4886335b51SRob Herring
4986335b51SRob Herring  i2c-mux-idle-disconnect:
5086335b51SRob Herring    type: boolean
5186335b51SRob Herring    description: Forces mux to disconnect all children in idle state. This is
5286335b51SRob Herring      necessary for example, if there are several multiplexers on the bus and
5386335b51SRob Herring      the devices behind them use same I2C addresses.
5486335b51SRob Herring
5586335b51SRob Herring  idle-state:
5686335b51SRob Herring    description: if present, overrides i2c-mux-idle-disconnect
5786335b51SRob Herring    $ref: /schemas/mux/mux-controller.yaml#/properties/idle-state
5886335b51SRob Herring
5986335b51SRob Herringrequired:
6086335b51SRob Herring  - compatible
6186335b51SRob Herring  - reg
6286335b51SRob Herring
63*f0382e3aSPatrick RudolphallOf:
64*f0382e3aSPatrick Rudolph  - $ref: /schemas/i2c/i2c-mux.yaml#
65*f0382e3aSPatrick Rudolph  - if:
66*f0382e3aSPatrick Rudolph      not:
67*f0382e3aSPatrick Rudolph        properties:
68*f0382e3aSPatrick Rudolph          compatible:
69*f0382e3aSPatrick Rudolph            contains:
70*f0382e3aSPatrick Rudolph              enum:
71*f0382e3aSPatrick Rudolph                - nxp,pca9542
72*f0382e3aSPatrick Rudolph                - nxp,pca9543
73*f0382e3aSPatrick Rudolph                - nxp,pca9544
74*f0382e3aSPatrick Rudolph                - nxp,pca9545
75*f0382e3aSPatrick Rudolph    then:
76*f0382e3aSPatrick Rudolph      properties:
77*f0382e3aSPatrick Rudolph        interrupts: false
78*f0382e3aSPatrick Rudolph        "#interrupt-cells": false
79*f0382e3aSPatrick Rudolph        interrupt-controller: false
80*f0382e3aSPatrick Rudolph
8186335b51SRob HerringunevaluatedProperties: false
8286335b51SRob Herring
8386335b51SRob Herringexamples:
8486335b51SRob Herring  - |
8586335b51SRob Herring    #include <dt-bindings/interrupt-controller/irq.h>
8686335b51SRob Herring
8786335b51SRob Herring    i2c {
8886335b51SRob Herring        #address-cells = <1>;
8986335b51SRob Herring        #size-cells = <0>;
9086335b51SRob Herring
9186335b51SRob Herring        i2c-mux@74 {
92*f0382e3aSPatrick Rudolph            compatible = "nxp,pca9545";
9386335b51SRob Herring            #address-cells = <1>;
9486335b51SRob Herring            #size-cells = <0>;
9586335b51SRob Herring            reg = <0x74>;
9686335b51SRob Herring
9786335b51SRob Herring            interrupt-parent = <&ipic>;
9886335b51SRob Herring            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
9986335b51SRob Herring            interrupt-controller;
10086335b51SRob Herring            #interrupt-cells = <2>;
10186335b51SRob Herring
10286335b51SRob Herring            i2c@2 {
10386335b51SRob Herring                #address-cells = <1>;
10486335b51SRob Herring                #size-cells = <0>;
10586335b51SRob Herring                reg = <2>;
10686335b51SRob Herring
10786335b51SRob Herring                eeprom@54 {
10886335b51SRob Herring                    compatible = "atmel,24c08";
10986335b51SRob Herring                    reg = <0x54>;
11086335b51SRob Herring                };
11186335b51SRob Herring            };
11286335b51SRob Herring
11386335b51SRob Herring            i2c@4 {
11486335b51SRob Herring                #address-cells = <1>;
11586335b51SRob Herring                #size-cells = <0>;
11686335b51SRob Herring                reg = <4>;
11786335b51SRob Herring
11886335b51SRob Herring                rtc@51 {
11986335b51SRob Herring                    compatible = "nxp,pcf8563";
12086335b51SRob Herring                    reg = <0x51>;
12186335b51SRob Herring                };
12286335b51SRob Herring            };
12386335b51SRob Herring        };
12486335b51SRob Herring    };
12586335b51SRob Herring...
126