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