1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/gpio/gpio-pca95xx.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NXP PCA95xx I2C GPIO multiplexer
8
9maintainers:
10  - Krzysztof Kozlowski <krzk@kernel.org>
11
12description: |+
13  Bindings for the family of I2C GPIO multiplexers/expanders: NXP PCA95xx,
14  Maxim MAX73xx
15
16properties:
17  compatible:
18    enum:
19      - exar,xra1202
20      - maxim,max7310
21      - maxim,max7312
22      - maxim,max7313
23      - maxim,max7315
24      - maxim,max7319
25      - maxim,max7320
26      - maxim,max7321
27      - maxim,max7322
28      - maxim,max7323
29      - maxim,max7324
30      - maxim,max7325
31      - maxim,max7326
32      - maxim,max7327
33      - nxp,pca6416
34      - nxp,pca9505
35      - nxp,pca9534
36      - nxp,pca9535
37      - nxp,pca9536
38      - nxp,pca9537
39      - nxp,pca9538
40      - nxp,pca9539
41      - nxp,pca9554
42      - nxp,pca9555
43      - nxp,pca9556
44      - nxp,pca9557
45      - nxp,pca9574
46      - nxp,pca9575
47      - nxp,pca9698
48      - nxp,pcal6416
49      - nxp,pcal6524
50      - nxp,pcal9535
51      - nxp,pcal9554b
52      - nxp,pcal9555a
53      - onnn,cat9554
54      - onnn,pca9654
55      - ti,pca6107
56      - ti,pca9536
57      - ti,tca6408
58      - ti,tca6416
59      - ti,tca6424
60      - ti,tca9539
61      - ti,tca9554
62
63  reg:
64    maxItems: 1
65
66  gpio-controller: true
67
68  '#gpio-cells':
69    const: 2
70
71  gpio-line-names:
72    minItems: 1
73    maxItems: 32
74
75  interrupts:
76    maxItems: 1
77
78  interrupt-controller: true
79
80  '#interrupt-cells':
81    const: 2
82
83  reset-gpios:
84    description:
85      GPIO specification for the RESET input. This is an active low signal to
86      the PCA953x.  Not valid for Maxim MAX732x devices.
87
88  vcc-supply:
89    description:
90      Optional power supply.  Not valid for Maxim MAX732x devices.
91
92  wakeup-source:
93    $ref: /schemas/types.yaml#/definitions/flag
94
95patternProperties:
96  "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$":
97    type: object
98    properties:
99      gpio-hog: true
100      gpios: true
101      input: true
102      output-high: true
103      output-low: true
104      line-name: true
105
106    required:
107      - gpio-hog
108      - gpios
109
110    additionalProperties: false
111
112required:
113  - compatible
114  - reg
115  - gpio-controller
116  - "#gpio-cells"
117
118additionalProperties: false
119
120allOf:
121  - if:
122      properties:
123        compatible:
124          contains:
125            enum:
126              - maxim,max7320
127              - maxim,max7321
128              - maxim,max7322
129              - maxim,max7323
130              - maxim,max7324
131              - maxim,max7325
132              - maxim,max7326
133              - maxim,max7327
134    then:
135      properties:
136        reset-gpios: false
137        vcc-supply: false
138
139examples:
140  - |
141    #include <dt-bindings/gpio/gpio.h>
142    #include <dt-bindings/interrupt-controller/irq.h>
143
144    i2c0 {
145        #address-cells = <1>;
146        #size-cells = <0>;
147
148        gpio@20 {
149            compatible = "nxp,pca9505";
150            reg = <0x20>;
151            pinctrl-names = "default";
152            pinctrl-0 = <&pinctrl_pca9505>;
153            gpio-controller;
154            #gpio-cells = <2>;
155            interrupt-parent = <&gpio3>;
156            interrupts = <23 IRQ_TYPE_LEVEL_LOW>;
157
158            usb3-sata-sel-hog {
159                gpio-hog;
160                gpios = <4 GPIO_ACTIVE_HIGH>;
161                output-low;
162                line-name = "usb3_sata_sel";
163            };
164        };
165    };
166
167  - |
168    #include <dt-bindings/interrupt-controller/irq.h>
169
170    i2c1 {
171        #address-cells = <1>;
172        #size-cells = <0>;
173
174        gpio99: gpio@22 {
175            compatible = "nxp,pcal6524";
176            reg = <0x22>;
177            interrupt-parent = <&gpio6>;
178            interrupts = <1 IRQ_TYPE_EDGE_FALLING>; /* gpio6_161 */
179            interrupt-controller;
180            #interrupt-cells = <2>;
181            vcc-supply = <&vdds_1v8_main>;
182            gpio-controller;
183            #gpio-cells = <2>;
184            gpio-line-names = "hdmi-ct-hpd", "hdmi.ls-oe", "p02", "p03",
185                              "vibra", "fault2", "p06", "p07", "en-usb",
186                              "en-host1", "en-host2", "chg-int", "p14", "p15",
187                              "mic-int", "en-modem", "shdn-hs-amp",
188                              "chg-status+red", "green", "blue", "en-esata",
189                              "fault1", "p26", "p27";
190        };
191
192        ts3a227@3b {
193            compatible = "ti,ts3a227e";
194            reg = <0x3b>;
195            interrupt-parent = <&gpio99>;
196            interrupts = <14 IRQ_TYPE_EDGE_RISING>;
197            ti,micbias = <0>; /* 2.1V */
198        };
199    };
200
201  - |
202    #include <dt-bindings/interrupt-controller/irq.h>
203
204    i2c2 {
205        #address-cells = <1>;
206        #size-cells = <0>;
207
208        /* MAX7325 with interrupt support enabled */
209        gpio@6d {
210            compatible = "maxim,max7325";
211            reg = <0x6d>;
212            gpio-controller;
213            #gpio-cells = <2>;
214            interrupt-controller;
215            #interrupt-cells = <2>;
216            interrupt-parent = <&gpio4>;
217            interrupts = <29 IRQ_TYPE_EDGE_FALLING>;
218        };
219    };
220
221  - |
222    i2c3 {
223        #address-cells = <1>;
224        #size-cells = <0>;
225
226        /* MAX7325 with interrupt support disabled */
227        gpio@6e {
228            compatible = "maxim,max7325";
229            reg = <0x6e>;
230            gpio-controller;
231            #gpio-cells = <2>;
232        };
233    };
234