xref: /linux/Documentation/devicetree/bindings/i2c/i2c-mux-pca954x.yaml (revision 0b364cf53b20204e92bac7c6ebd1ee7d3ec62931)
1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/i2c/i2c-mux-pca954x.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NXP PCA954x I2C and compatible bus switches
8
9maintainers:
10  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
11
12description:
13  The NXP PCA954x and compatible devices are I2C bus
14  multiplexer/switches that share the same functionality
15  and register layout.
16  The devices usually have 4 or 8 child buses, which are
17  attached to the parent bus by using the SMBus "Send Byte"
18  command.
19
20properties:
21  compatible:
22    oneOf:
23      - enum:
24          - maxim,max7356
25          - maxim,max7357
26          - maxim,max7358
27          - maxim,max7367
28          - maxim,max7368
29          - maxim,max7369
30          - nxp,pca9540
31          - nxp,pca9542
32          - nxp,pca9543
33          - nxp,pca9544
34          - nxp,pca9545
35          - nxp,pca9546
36          - nxp,pca9547
37          - nxp,pca9548
38          - nxp,pca9846
39          - nxp,pca9847
40          - nxp,pca9848
41          - nxp,pca9849
42      - items:
43          - const: nxp,pca9646
44          - const: nxp,pca9546
45
46  reg:
47    maxItems: 1
48
49  interrupts:
50    maxItems: 1
51
52  "#interrupt-cells":
53    const: 2
54
55  interrupt-controller: true
56
57  reset-gpios:
58    maxItems: 1
59
60  i2c-mux-idle-disconnect:
61    type: boolean
62    description: Forces mux to disconnect all children in idle state. This is
63      necessary for example, if there are several multiplexers on the bus and
64      the devices behind them use same I2C addresses.
65
66  idle-state:
67    description: if present, overrides i2c-mux-idle-disconnect
68    $ref: /schemas/mux/mux-controller.yaml#/properties/idle-state
69
70  vdd-supply:
71    description: A voltage regulator supplying power to the chip. On PCA9846
72      the regulator supplies power to VDD2 (core logic) and optionally to VDD1.
73
74  maxim,isolate-stuck-channel:
75    type: boolean
76    description: Allows to use non faulty channels while a stuck channel is
77      isolated from the upstream bus. If not set all channels are isolated from
78      the upstream bus until the fault is cleared.
79
80  maxim,send-flush-out-sequence:
81    type: boolean
82    description: Send a flush-out sequence to stuck auxiliary buses
83      automatically after a stuck channel is being detected.
84
85  maxim,preconnection-wiggle-test-enable:
86    type: boolean
87    description: Send a STOP condition to the auxiliary buses when the switch
88      register activates a channel to detect a stuck high fault. On fault the
89      channel is isolated from the upstream bus.
90
91required:
92  - compatible
93  - reg
94
95allOf:
96  - $ref: /schemas/i2c/i2c-mux.yaml#
97  - if:
98      not:
99        properties:
100          compatible:
101            contains:
102              enum:
103                - maxim,max7367
104                - maxim,max7369
105                - nxp,pca9542
106                - nxp,pca9543
107                - nxp,pca9544
108                - nxp,pca9545
109    then:
110      properties:
111        interrupts: false
112        "#interrupt-cells": false
113        interrupt-controller: false
114
115  - if:
116      not:
117        properties:
118          compatible:
119            contains:
120              enum:
121                - maxim,max7357
122    then:
123      properties:
124        maxim,isolate-stuck-channel: false
125        maxim,send-flush-out-sequence: false
126        maxim,preconnection-wiggle-test-enable: false
127
128unevaluatedProperties: false
129
130examples:
131  - |
132    #include <dt-bindings/interrupt-controller/irq.h>
133
134    i2c {
135        #address-cells = <1>;
136        #size-cells = <0>;
137
138        i2c-mux@74 {
139            compatible = "nxp,pca9545";
140            #address-cells = <1>;
141            #size-cells = <0>;
142            reg = <0x74>;
143
144            vdd-supply = <&p3v3>;
145
146            interrupt-parent = <&ipic>;
147            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
148            interrupt-controller;
149            #interrupt-cells = <2>;
150
151            i2c@2 {
152                #address-cells = <1>;
153                #size-cells = <0>;
154                reg = <2>;
155
156                eeprom@54 {
157                    compatible = "atmel,24c08";
158                    reg = <0x54>;
159                };
160            };
161
162            i2c@4 {
163                #address-cells = <1>;
164                #size-cells = <0>;
165                reg = <4>;
166
167                rtc@51 {
168                    compatible = "nxp,pcf8563";
169                    reg = <0x51>;
170                };
171            };
172        };
173    };
174...
175