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