162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/i2c/i2c-mux.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Common i2c bus multiplexer/switch properties.
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Peter Rosin <peda@axentia.se>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |+
1362306a36Sopenharmony_ci  An i2c bus multiplexer/switch will have several child busses that are numbered
1462306a36Sopenharmony_ci  uniquely in a device dependent manner.  The nodes for an i2c bus
1562306a36Sopenharmony_ci  multiplexer/switch will have one child node for each child bus.
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci  For i2c multiplexers/switches that have child nodes that are a mixture of both
1862306a36Sopenharmony_ci  i2c child busses and other child nodes, the 'i2c-mux' subnode can be used for
1962306a36Sopenharmony_ci  populating the i2c child busses.  If an 'i2c-mux' subnode is present, only
2062306a36Sopenharmony_ci  subnodes of this will be considered as i2c child busses.
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciproperties:
2362306a36Sopenharmony_ci  $nodename:
2462306a36Sopenharmony_ci    pattern: '^(i2c-?)?mux'
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci  '#address-cells':
2762306a36Sopenharmony_ci    const: 1
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  '#size-cells':
3062306a36Sopenharmony_ci    const: 0
3162306a36Sopenharmony_ci
3262306a36Sopenharmony_cipatternProperties:
3362306a36Sopenharmony_ci  '^i2c@[0-9a-f]+$':
3462306a36Sopenharmony_ci    $ref: /schemas/i2c/i2c-controller.yaml
3562306a36Sopenharmony_ci    unevaluatedProperties: false
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci    properties:
3862306a36Sopenharmony_ci      reg:
3962306a36Sopenharmony_ci        description: The mux selector sub-bus number for the child I2C bus.
4062306a36Sopenharmony_ci        maxItems: 1
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ciadditionalProperties: true
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciexamples:
4562306a36Sopenharmony_ci  - |
4662306a36Sopenharmony_ci    /*
4762306a36Sopenharmony_ci     * An NXP pca9548 8 channel I2C multiplexer at address 0x70
4862306a36Sopenharmony_ci     * with two NXP pca8574 GPIO expanders attached, one each to
4962306a36Sopenharmony_ci     * ports 3 and 4.
5062306a36Sopenharmony_ci     */
5162306a36Sopenharmony_ci    i2c {
5262306a36Sopenharmony_ci        #address-cells = <1>;
5362306a36Sopenharmony_ci        #size-cells = <0>;
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci        i2c-mux@70 {
5662306a36Sopenharmony_ci            compatible = "nxp,pca9548";
5762306a36Sopenharmony_ci            reg = <0x70>;
5862306a36Sopenharmony_ci            #address-cells = <1>;
5962306a36Sopenharmony_ci            #size-cells = <0>;
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci            i2c@3 {
6262306a36Sopenharmony_ci                #address-cells = <1>;
6362306a36Sopenharmony_ci                #size-cells = <0>;
6462306a36Sopenharmony_ci                reg = <3>;
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci                gpio@20 {
6762306a36Sopenharmony_ci                    compatible = "nxp,pca9555";
6862306a36Sopenharmony_ci                    gpio-controller;
6962306a36Sopenharmony_ci                    #gpio-cells = <2>;
7062306a36Sopenharmony_ci                    reg = <0x20>;
7162306a36Sopenharmony_ci                };
7262306a36Sopenharmony_ci            };
7362306a36Sopenharmony_ci            i2c@4 {
7462306a36Sopenharmony_ci                #address-cells = <1>;
7562306a36Sopenharmony_ci                #size-cells = <0>;
7662306a36Sopenharmony_ci                reg = <4>;
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci                gpio@20 {
7962306a36Sopenharmony_ci                    compatible = "nxp,pca9555";
8062306a36Sopenharmony_ci                    gpio-controller;
8162306a36Sopenharmony_ci                    #gpio-cells = <2>;
8262306a36Sopenharmony_ci                    reg = <0x20>;
8362306a36Sopenharmony_ci                };
8462306a36Sopenharmony_ci            };
8562306a36Sopenharmony_ci        };
8662306a36Sopenharmony_ci    };
8762306a36Sopenharmony_ci...
88