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