xref: /freebsd/sys/contrib/device-tree/Bindings/i2c/i2c-mux-pca954x.yaml (revision 7ef62cebc2f965b0f640263e179276928885e33d)
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 bus switch
8
9maintainers:
10  - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
11
12description:
13  The binding supports NXP PCA954x and PCA984x I2C mux/switch devices.
14
15allOf:
16  - $ref: /schemas/i2c/i2c-mux.yaml#
17
18properties:
19  compatible:
20    oneOf:
21      - enum:
22          - nxp,pca9540
23          - nxp,pca9542
24          - nxp,pca9543
25          - nxp,pca9544
26          - nxp,pca9545
27          - nxp,pca9546
28          - nxp,pca9547
29          - nxp,pca9548
30          - nxp,pca9846
31          - nxp,pca9847
32          - nxp,pca9848
33          - nxp,pca9849
34      - items:
35          - const: nxp,pca9646
36          - const: nxp,pca9546
37
38  reg:
39    maxItems: 1
40
41  interrupts:
42    maxItems: 1
43
44  "#interrupt-cells":
45    const: 2
46
47  interrupt-controller: true
48
49  reset-gpios:
50    maxItems: 1
51
52  i2c-mux-idle-disconnect:
53    type: boolean
54    description: Forces mux to disconnect all children in idle state. This is
55      necessary for example, if there are several multiplexers on the bus and
56      the devices behind them use same I2C addresses.
57
58  idle-state:
59    description: if present, overrides i2c-mux-idle-disconnect
60    $ref: /schemas/mux/mux-controller.yaml#/properties/idle-state
61
62required:
63  - compatible
64  - reg
65
66unevaluatedProperties: false
67
68examples:
69  - |
70    #include <dt-bindings/interrupt-controller/irq.h>
71
72    i2c {
73        #address-cells = <1>;
74        #size-cells = <0>;
75
76        i2c-mux@74 {
77            compatible = "nxp,pca9548";
78            #address-cells = <1>;
79            #size-cells = <0>;
80            reg = <0x74>;
81
82            interrupt-parent = <&ipic>;
83            interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
84            interrupt-controller;
85            #interrupt-cells = <2>;
86
87            i2c@2 {
88                #address-cells = <1>;
89                #size-cells = <0>;
90                reg = <2>;
91
92                eeprom@54 {
93                    compatible = "atmel,24c08";
94                    reg = <0x54>;
95                };
96            };
97
98            i2c@4 {
99                #address-cells = <1>;
100                #size-cells = <0>;
101                reg = <4>;
102
103                rtc@51 {
104                    compatible = "nxp,pcf8563";
105                    reg = <0x51>;
106                };
107            };
108        };
109    };
110...
111