Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / i2c / i2c-mux-pca954x.yaml
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
7 title: NXP PCA954x I2C bus switch
8
9 maintainers:
10   - Laurent Pinchart <laurent.pinchart@ideasonboard.com>
11
12 description:
13   The binding supports NXP PCA954x and PCA984x I2C mux/switch devices.
14
15 allOf:
16   - $ref: /schemas/i2c/i2c-mux.yaml#
17
18 properties:
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
62 required:
63   - compatible
64   - reg
65
66 unevaluatedProperties: false
67
68 examples:
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 ...