xref: /freebsd-src/sys/contrib/device-tree/Bindings/i2c/i2c-mux.yaml (revision 5956d97f4b3204318ceb6aa9c77bd0bc6ea87a41)
1*5956d97fSEmmanuel Vadot# SPDX-License-Identifier: GPL-2.0
2*5956d97fSEmmanuel Vadot%YAML 1.2
3*5956d97fSEmmanuel Vadot---
4*5956d97fSEmmanuel Vadot$id: http://devicetree.org/schemas/i2c/i2c-mux.yaml#
5*5956d97fSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6*5956d97fSEmmanuel Vadot
7*5956d97fSEmmanuel Vadottitle: Common i2c bus multiplexer/switch properties.
8*5956d97fSEmmanuel Vadot
9*5956d97fSEmmanuel Vadotmaintainers:
10*5956d97fSEmmanuel Vadot  - Peter Rosin <peda@axentia.se>
11*5956d97fSEmmanuel Vadot
12*5956d97fSEmmanuel Vadotdescription: |+
13*5956d97fSEmmanuel Vadot  An i2c bus multiplexer/switch will have several child busses that are numbered
14*5956d97fSEmmanuel Vadot  uniquely in a device dependent manner.  The nodes for an i2c bus
15*5956d97fSEmmanuel Vadot  multiplexer/switch will have one child node for each child bus.
16*5956d97fSEmmanuel Vadot
17*5956d97fSEmmanuel Vadot  For i2c multiplexers/switches that have child nodes that are a mixture of both
18*5956d97fSEmmanuel Vadot  i2c child busses and other child nodes, the 'i2c-mux' subnode can be used for
19*5956d97fSEmmanuel Vadot  populating the i2c child busses.  If an 'i2c-mux' subnode is present, only
20*5956d97fSEmmanuel Vadot  subnodes of this will be considered as i2c child busses.
21*5956d97fSEmmanuel Vadot
22*5956d97fSEmmanuel Vadotproperties:
23*5956d97fSEmmanuel Vadot  $nodename:
24*5956d97fSEmmanuel Vadot    pattern: '^(i2c-?)?mux'
25*5956d97fSEmmanuel Vadot
26*5956d97fSEmmanuel Vadot  '#address-cells':
27*5956d97fSEmmanuel Vadot    const: 1
28*5956d97fSEmmanuel Vadot
29*5956d97fSEmmanuel Vadot  '#size-cells':
30*5956d97fSEmmanuel Vadot    const: 0
31*5956d97fSEmmanuel Vadot
32*5956d97fSEmmanuel VadotpatternProperties:
33*5956d97fSEmmanuel Vadot  '^i2c@[0-9a-f]+$':
34*5956d97fSEmmanuel Vadot    $ref: /schemas/i2c/i2c-controller.yaml
35*5956d97fSEmmanuel Vadot    unevaluatedProperties: false
36*5956d97fSEmmanuel Vadot
37*5956d97fSEmmanuel Vadot    properties:
38*5956d97fSEmmanuel Vadot      reg:
39*5956d97fSEmmanuel Vadot        description: The mux selector sub-bus number for the child I2C bus.
40*5956d97fSEmmanuel Vadot        maxItems: 1
41*5956d97fSEmmanuel Vadot
42*5956d97fSEmmanuel VadotadditionalProperties: true
43*5956d97fSEmmanuel Vadot
44*5956d97fSEmmanuel Vadotexamples:
45*5956d97fSEmmanuel Vadot  - |
46*5956d97fSEmmanuel Vadot    /*
47*5956d97fSEmmanuel Vadot     * An NXP pca9548 8 channel I2C multiplexer at address 0x70
48*5956d97fSEmmanuel Vadot     * with two NXP pca8574 GPIO expanders attached, one each to
49*5956d97fSEmmanuel Vadot     * ports 3 and 4.
50*5956d97fSEmmanuel Vadot     */
51*5956d97fSEmmanuel Vadot    i2c {
52*5956d97fSEmmanuel Vadot        #address-cells = <1>;
53*5956d97fSEmmanuel Vadot        #size-cells = <0>;
54*5956d97fSEmmanuel Vadot
55*5956d97fSEmmanuel Vadot        i2c-mux@70 {
56*5956d97fSEmmanuel Vadot            compatible = "nxp,pca9548";
57*5956d97fSEmmanuel Vadot            reg = <0x70>;
58*5956d97fSEmmanuel Vadot            #address-cells = <1>;
59*5956d97fSEmmanuel Vadot            #size-cells = <0>;
60*5956d97fSEmmanuel Vadot
61*5956d97fSEmmanuel Vadot            i2c@3 {
62*5956d97fSEmmanuel Vadot                #address-cells = <1>;
63*5956d97fSEmmanuel Vadot                #size-cells = <0>;
64*5956d97fSEmmanuel Vadot                reg = <3>;
65*5956d97fSEmmanuel Vadot
66*5956d97fSEmmanuel Vadot                gpio@20 {
67*5956d97fSEmmanuel Vadot                    compatible = "nxp,pca9555";
68*5956d97fSEmmanuel Vadot                    gpio-controller;
69*5956d97fSEmmanuel Vadot                    #gpio-cells = <2>;
70*5956d97fSEmmanuel Vadot                    reg = <0x20>;
71*5956d97fSEmmanuel Vadot                };
72*5956d97fSEmmanuel Vadot            };
73*5956d97fSEmmanuel Vadot            i2c@4 {
74*5956d97fSEmmanuel Vadot                #address-cells = <1>;
75*5956d97fSEmmanuel Vadot                #size-cells = <0>;
76*5956d97fSEmmanuel Vadot                reg = <4>;
77*5956d97fSEmmanuel Vadot
78*5956d97fSEmmanuel Vadot                gpio@20 {
79*5956d97fSEmmanuel Vadot                    compatible = "nxp,pca9555";
80*5956d97fSEmmanuel Vadot                    gpio-controller;
81*5956d97fSEmmanuel Vadot                    #gpio-cells = <2>;
82*5956d97fSEmmanuel Vadot                    reg = <0x20>;
83*5956d97fSEmmanuel Vadot                };
84*5956d97fSEmmanuel Vadot            };
85*5956d97fSEmmanuel Vadot        };
86*5956d97fSEmmanuel Vadot    };
87*5956d97fSEmmanuel Vadot...
88