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
74required:
75  - compatible
76  - reg
77
78allOf:
79  - $ref: /schemas/i2c/i2c-mux.yaml#
80  - if:
81      not:
82        properties:
83          compatible:
84            contains:
85              enum:
86                - maxim,max7367
87                - maxim,max7369
88                - nxp,pca9542
89                - nxp,pca9543
90                - nxp,pca9544
91                - nxp,pca9545
92    then:
93      properties:
94        interrupts: false
95        "#interrupt-cells": false
96        interrupt-controller: false
97
98unevaluatedProperties: false
99
100examples:
101  - |
102    #include <dt-bindings/interrupt-controller/irq.h>
103
104    i2c {
105        #address-cells = <1>;
106        #size-cells = <0>;
107
108        i2c-mux@74 {
109            compatible = "nxp,pca9545";
110            #address-cells = <1>;
111            #size-cells = <0>;
112            reg = <0x74>;
113
114            vdd-supply = <&p3v3>;
115
116            interrupt-parent = <&ipic>;
117            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
118            interrupt-controller;
119            #interrupt-cells = <2>;
120
121            i2c@2 {
122                #address-cells = <1>;
123                #size-cells = <0>;
124                reg = <2>;
125
126                eeprom@54 {
127                    compatible = "atmel,24c08";
128                    reg = <0x54>;
129                };
130            };
131
132            i2c@4 {
133                #address-cells = <1>;
134                #size-cells = <0>;
135                reg = <4>;
136
137                rtc@51 {
138                    compatible = "nxp,pcf8563";
139                    reg = <0x51>;
140                };
141            };
142        };
143    };
144...
145