Merge tag 'block-6.13-20242901' of git://git.kernel.dk/linux
[drm/drm-misc.git] / Documentation / devicetree / bindings / i2c / i2c-mux-pca954x.yaml
blob9aa0585200c9cd24615d171b299c19ade27d861b
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#
7 title: NXP PCA954x I2C and compatible bus switches
9 maintainers:
10   - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
12 description:
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.
20 properties:
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
46   reg:
47     maxItems: 1
49   interrupts:
50     maxItems: 1
52   "#interrupt-cells":
53     const: 2
55   interrupt-controller: true
57   reset-gpios:
58     maxItems: 1
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.
66   idle-state:
67     description: if present, overrides i2c-mux-idle-disconnect
68     $ref: /schemas/mux/mux-controller.yaml#/properties/idle-state
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.
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.
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.
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.
91 required:
92   - compatible
93   - reg
95 allOf:
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
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
128 unevaluatedProperties: false
130 examples:
131   - |
132     #include <dt-bindings/interrupt-controller/irq.h>
134     i2c {
135         #address-cells = <1>;
136         #size-cells = <0>;
138         i2c-mux@74 {
139             compatible = "nxp,pca9545";
140             #address-cells = <1>;
141             #size-cells = <0>;
142             reg = <0x74>;
144             vdd-supply = <&p3v3>;
146             interrupt-parent = <&ipic>;
147             interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
148             interrupt-controller;
149             #interrupt-cells = <2>;
151             i2c@2 {
152                 #address-cells = <1>;
153                 #size-cells = <0>;
154                 reg = <2>;
156                 eeprom@54 {
157                     compatible = "atmel,24c08";
158                     reg = <0x54>;
159                 };
160             };
162             i2c@4 {
163                 #address-cells = <1>;
164                 #size-cells = <0>;
165                 reg = <4>;
167                 rtc@51 {
168                     compatible = "nxp,pcf8563";
169                     reg = <0x51>;
170                 };
171             };
172         };
173     };