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