Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/pinctrl/qcom,pmic-gpio.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm PMIC GPIO block
8
9maintainers:
10 - Bjorn Andersson <bjorn.andersson@linaro.org>
11
12description:
13 This binding describes the GPIO block(s) found in the 8xxx series of
14 PMIC's from Qualcomm.
15
16properties:
17 compatible:
18 items:
19 - enum:
20 - qcom,pm2250-gpio
21 - qcom,pm660-gpio
22 - qcom,pm660l-gpio
23 - qcom,pm6125-gpio
24 - qcom,pm6150-gpio
25 - qcom,pm6150l-gpio
26 - qcom,pm6350-gpio
27 - qcom,pm6450-gpio
28 - qcom,pm7250b-gpio
29 - qcom,pm7325-gpio
30 - qcom,pm7550-gpio
31 - qcom,pm7550ba-gpio
32 - qcom,pm8005-gpio
33 - qcom,pm8018-gpio
34 - qcom,pm8019-gpio
35 - qcom,pm8038-gpio
36 - qcom,pm8058-gpio
37 - qcom,pm8150-gpio
38 - qcom,pm8150b-gpio
39 - qcom,pm8150l-gpio
40 - qcom,pm8226-gpio
41 - qcom,pm8350-gpio
42 - qcom,pm8350b-gpio
43 - qcom,pm8350c-gpio
44 - qcom,pm8450-gpio
45 - qcom,pm8550-gpio
46 - qcom,pm8550b-gpio
47 - qcom,pm8550ve-gpio
48 - qcom,pm8550vs-gpio
49 - qcom,pm8916-gpio
50 - qcom,pm8917-gpio
51 - qcom,pm8921-gpio
52 - qcom,pm8937-gpio
53 - qcom,pm8941-gpio
54 - qcom,pm8950-gpio
55 - qcom,pm8953-gpio
56 - qcom,pm8994-gpio
57 - qcom,pm8998-gpio
58 - qcom,pma8084-gpio
59 - qcom,pmc8180-gpio
60 - qcom,pmc8180c-gpio
61 - qcom,pmc8380-gpio
62 - qcom,pmd8028-gpio
63 - qcom,pmi632-gpio
64 - qcom,pmi8950-gpio
65 - qcom,pmi8994-gpio
66 - qcom,pmi8998-gpio
67 - qcom,pmih0108-gpio
68 - qcom,pmiv0104-gpio
69 - qcom,pmk8350-gpio
70 - qcom,pmk8550-gpio
71 - qcom,pmm8155au-gpio
72 - qcom,pmm8654au-gpio
73 - qcom,pmp8074-gpio
74 - qcom,pmr735a-gpio
75 - qcom,pmr735b-gpio
76 - qcom,pmr735d-gpio
77 - qcom,pms405-gpio
78 - qcom,pmx55-gpio
79 - qcom,pmx65-gpio
80 - qcom,pmx75-gpio
81 - qcom,pmxr2230-gpio
82
83 - enum:
84 - qcom,spmi-gpio
85 - qcom,ssbi-gpio
86
87 reg:
88 maxItems: 1
89
90 interrupt-controller: true
91
92 '#interrupt-cells':
93 const: 2
94
95 gpio-controller: true
96
97 gpio-ranges:
98 maxItems: 1
99
100 gpio-line-names:
101 minItems: 2
102 maxItems: 44
103
104 gpio-reserved-ranges:
105 minItems: 1
106 # maxItems as half of total number of GPIOs, as there has to be at
107 # least one usable GPIO between each reserved range.
108 maxItems: 22
109
110 '#gpio-cells':
111 const: 2
112 description:
113 The first cell will be used to define gpio number and the
114 second denotes the flags for this gpio
115
116additionalProperties: false
117
118required:
119 - compatible
120 - reg
121 - gpio-controller
122 - '#gpio-cells'
123 - gpio-ranges
124 - interrupt-controller
125
126allOf:
127 - if:
128 properties:
129 compatible:
130 contains:
131 enum:
132 - qcom,pmi8950-gpio
133 - qcom,pmr735d-gpio
134 then:
135 properties:
136 gpio-line-names:
137 minItems: 2
138 maxItems: 2
139 gpio-reserved-ranges:
140 maxItems: 1
141
142 - if:
143 properties:
144 compatible:
145 contains:
146 enum:
147 - qcom,pm8005-gpio
148 - qcom,pm8450-gpio
149 - qcom,pm8916-gpio
150 - qcom,pmd8028-gpio
151 - qcom,pmk8350-gpio
152 - qcom,pmr735a-gpio
153 - qcom,pmr735b-gpio
154 then:
155 properties:
156 gpio-line-names:
157 minItems: 4
158 maxItems: 4
159 gpio-reserved-ranges:
160 minItems: 1
161 maxItems: 2
162
163 - if:
164 properties:
165 compatible:
166 contains:
167 enum:
168 - qcom,pm8018-gpio
169 - qcom,pm8019-gpio
170 - qcom,pm8550vs-gpio
171 - qcom,pmk8550-gpio
172 then:
173 properties:
174 gpio-line-names:
175 minItems: 6
176 maxItems: 6
177 gpio-reserved-ranges:
178 minItems: 1
179 maxItems: 3
180
181 - if:
182 properties:
183 compatible:
184 contains:
185 enum:
186 - qcom,pm7550ba-gpio
187 - qcom,pm8226-gpio
188 - qcom,pm8350b-gpio
189 - qcom,pm8550ve-gpio
190 - qcom,pm8937-gpio
191 - qcom,pm8950-gpio
192 - qcom,pm8953-gpio
193 - qcom,pmi632-gpio
194 then:
195 properties:
196 gpio-line-names:
197 minItems: 8
198 maxItems: 8
199 gpio-reserved-ranges:
200 minItems: 1
201 maxItems: 4
202
203 - if:
204 properties:
205 compatible:
206 contains:
207 enum:
208 - qcom,pm6350-gpio
209 - qcom,pm6450-gpio
210 - qcom,pm8350c-gpio
211 then:
212 properties:
213 gpio-line-names:
214 minItems: 9
215 maxItems: 9
216 gpio-reserved-ranges:
217 minItems: 1
218 maxItems: 5
219
220 - if:
221 properties:
222 compatible:
223 contains:
224 enum:
225 - qcom,pm2250-gpio
226 - qcom,pm6150-gpio
227 - qcom,pm7325-gpio
228 - qcom,pm8150-gpio
229 - qcom,pm8350-gpio
230 - qcom,pmc8180-gpio
231 - qcom,pmc8380-gpio
232 - qcom,pmi8994-gpio
233 - qcom,pmiv0104-gpio
234 - qcom,pmm8155au-gpio
235 then:
236 properties:
237 gpio-line-names:
238 minItems: 10
239 maxItems: 10
240 gpio-reserved-ranges:
241 minItems: 1
242 maxItems: 5
243
244 - if:
245 properties:
246 compatible:
247 contains:
248 enum:
249 - qcom,pmx55-gpio
250 then:
251 properties:
252 gpio-line-names:
253 minItems: 11
254 maxItems: 11
255 gpio-reserved-ranges:
256 minItems: 1
257 maxItems: 6
258
259 - if:
260 properties:
261 compatible:
262 contains:
263 enum:
264 - qcom,pm660l-gpio
265 - qcom,pm6150l-gpio
266 - qcom,pm7250b-gpio
267 - qcom,pm7550-gpio
268 - qcom,pm8038-gpio
269 - qcom,pm8150b-gpio
270 - qcom,pm8150l-gpio
271 - qcom,pm8550-gpio
272 - qcom,pm8550b-gpio
273 - qcom,pmc8180c-gpio
274 - qcom,pmp8074-gpio
275 - qcom,pms405-gpio
276 - qcom,pmxr2230-gpio
277 then:
278 properties:
279 gpio-line-names:
280 minItems: 12
281 maxItems: 12
282 gpio-reserved-ranges:
283 minItems: 1
284 maxItems: 6
285
286 - if:
287 properties:
288 compatible:
289 contains:
290 enum:
291 - qcom,pm660-gpio
292 then:
293 properties:
294 gpio-line-names:
295 minItems: 13
296 maxItems: 13
297 gpio-reserved-ranges:
298 minItems: 1
299 maxItems: 7
300
301 - if:
302 properties:
303 compatible:
304 contains:
305 enum:
306 - qcom,pmi8998-gpio
307 then:
308 properties:
309 gpio-line-names:
310 minItems: 14
311 maxItems: 14
312 gpio-reserved-ranges:
313 minItems: 1
314 maxItems: 7
315
316 - if:
317 properties:
318 compatible:
319 contains:
320 enum:
321 - qcom,pmih0108-gpio
322 then:
323 properties:
324 gpio-line-names:
325 minItems: 18
326 maxItems: 18
327 gpio-reserved-ranges:
328 minItems: 1
329 maxItems: 9
330
331 - if:
332 properties:
333 compatible:
334 contains:
335 enum:
336 - qcom,pmx65-gpio
337 - qcom,pmx75-gpio
338 then:
339 properties:
340 gpio-line-names:
341 minItems: 16
342 maxItems: 16
343 gpio-reserved-ranges:
344 minItems: 1
345 maxItems: 8
346
347 - if:
348 properties:
349 compatible:
350 contains:
351 enum:
352 - qcom,pm8994-gpio
353 - qcom,pma8084-gpio
354 then:
355 properties:
356 gpio-line-names:
357 minItems: 22
358 maxItems: 22
359 gpio-reserved-ranges:
360 minItems: 1
361 maxItems: 11
362
363 - if:
364 properties:
365 compatible:
366 contains:
367 enum:
368 - qcom,pm8998-gpio
369 then:
370 properties:
371 gpio-line-names:
372 minItems: 26
373 maxItems: 26
374 gpio-reserved-ranges:
375 minItems: 1
376 maxItems: 13
377
378 - if:
379 properties:
380 compatible:
381 contains:
382 enum:
383 - qcom,pm8941-gpio
384 then:
385 properties:
386 gpio-line-names:
387 minItems: 36
388 maxItems: 36
389 gpio-reserved-ranges:
390 minItems: 1
391 maxItems: 18
392
393 - if:
394 properties:
395 compatible:
396 contains:
397 enum:
398 - qcom,pm8917-gpio
399 then:
400 properties:
401 gpio-line-names:
402 minItems: 38
403 maxItems: 38
404 gpio-reserved-ranges:
405 minItems: 1
406 maxItems: 19
407
408 - if:
409 properties:
410 compatible:
411 contains:
412 enum:
413 - qcom,pm8058-gpio
414 - qcom,pm8921-gpio
415 then:
416 properties:
417 gpio-line-names:
418 minItems: 44
419 maxItems: 44
420 gpio-reserved-ranges:
421 minItems: 1
422 maxItems: 22
423
424patternProperties:
425 '-state$':
426 oneOf:
427 - $ref: "#/$defs/qcom-pmic-gpio-state"
428 - patternProperties:
429 "(pinconf|-pins)$":
430 $ref: "#/$defs/qcom-pmic-gpio-state"
431 additionalProperties: false
432
433 "-hog(-[0-9]+)?$":
434 type: object
435 required:
436 - gpio-hog
437
438$defs:
439 qcom-pmic-gpio-state:
440 type: object
441 allOf:
442 - $ref: pinmux-node.yaml
443 - $ref: pincfg-node.yaml
444 properties:
445 pins:
446 description:
447 List of gpio pins affected by the properties specified in
448 this subnode. Valid pins are
449 - gpio1-gpio9 for pm6125
450 - gpio1-gpio10 for pm6150
451 - gpio1-gpio12 for pm6150l
452 - gpio1-gpio9 for pm6350
453 - gpio1-gpio9 for pm6450
454 - gpio1-gpio12 for pm7250b
455 - gpio1-gpio10 for pm7325
456 - gpio1-gpio8 for pm7550ba
457 - gpio1-gpio4 for pm8005
458 - gpio1-gpio6 for pm8018
459 - gpio1-gpio12 for pm8038
460 - gpio1-gpio40 for pm8058
461 - gpio1-gpio10 for pm8150 (holes on gpio2, gpio5,
462 gpio7 and gpio8)
463 - gpio1-gpio12 for pm8150b (holes on gpio3, gpio4
464 and gpio7)
465 - gpio1-gpio12 for pm8150l (hole on gpio7)
466 - gpio1-gpio4 for pm8916
467 - gpio1-gpio10 for pm8350
468 - gpio1-gpio8 for pm8350b
469 - gpio1-gpio9 for pm8350c
470 - gpio1-gpio4 for pm8450
471 - gpio1-gpio12 for pm8550
472 - gpio1-gpio12 for pm8550b
473 - gpio1-gpio8 for pm8550ve
474 - gpio1-gpio6 for pm8550vs
475 - gpio1-gpio38 for pm8917
476 - gpio1-gpio44 for pm8921
477 - gpio1-gpio8 for pm8937 (hole on gpio3, gpio4 and gpio6)
478 - gpio1-gpio36 for pm8941
479 - gpio1-gpio8 for pm8950 (hole on gpio3)
480 - gpio1-gpio8 for pm8953 (hole on gpio3 and gpio6)
481 - gpio1-gpio22 for pm8994
482 - gpio1-gpio26 for pm8998
483 - gpio1-gpio22 for pma8084
484 - gpio1-gpio4 for pmd8028
485 - gpio1-gpio8 for pmi632
486 - gpio1-gpio2 for pmi8950
487 - gpio1-gpio10 for pmi8994
488 - gpio1-gpio18 for pmih0108
489 - gpio1-gpio4 for pmk8350
490 - gpio1-gpio6 for pmk8550
491 - gpio1-gpio10 for pmm8155au
492 - gpio1-gpio12 for pmm8654au
493 - gpio1-gpio12 for pmp8074 (holes on gpio1 and gpio12)
494 - gpio1-gpio4 for pmr735a
495 - gpio1-gpio4 for pmr735b
496 - gpio1-gpio2 for pmr735d
497 - gpio1-gpio12 for pms405 (holes on gpio1, gpio9
498 and gpio10)
499 - gpio1-gpio11 for pmx55 (holes on gpio3, gpio7, gpio10
500 and gpio11)
501 - gpio1-gpio16 for pmx65
502 - gpio1-gpio16 for pmx75
503 - gpio1-gpio12 for pmxr2230
504
505 items:
506 pattern: "^gpio([0-9]+)$"
507
508 function:
509 items:
510 - enum:
511 - normal
512 - paired
513 - func1
514 - func2
515 - dtest1
516 - dtest2
517 - dtest3
518 - dtest4
519 - func3 # supported by LV/MV GPIO subtypes
520 - func4 # supported by LV/MV GPIO subtypes
521
522 bias-disable: true
523 bias-pull-down: true
524 bias-pull-up: true
525
526 qcom,pull-up-strength:
527 $ref: /schemas/types.yaml#/definitions/uint32
528 description:
529 Specifies the strength to use for pull up, if selected.
530 Valid values are defined in
531 <dt-bindings/pinctrl/qcom,pmic-gpio.h>
532 If this property is omitted 30uA strength will be used
533 if pull up is selected
534 enum: [0, 1, 2, 3]
535
536 bias-high-impedance: true
537 input-enable: true
538 input-disable: true
539 output-high: true
540 output-low: true
541 output-enable: true
542 output-disable: true
543 power-source: true
544
545 qcom,drive-strength:
546 $ref: /schemas/types.yaml#/definitions/uint32
547 description:
548 Selects the drive strength for the specified pins
549 Valid drive strength values are defined in
550 <dt-bindings/pinctrl/qcom,pmic-gpio.h>
551 enum: [0, 1, 2, 3]
552
553 drive-push-pull: true
554 drive-open-drain: true
555 drive-open-source: true
556
557 qcom,analog-pass:
558 $ref: /schemas/types.yaml#/definitions/flag
559 description:
560 The specified pins are configured in
561 analog-pass-through mode.
562
563 qcom,atest:
564 $ref: /schemas/types.yaml#/definitions/uint32
565 description:
566 Selects ATEST rail to route to GPIO when it's
567 configured in analog-pass-through mode.
568 enum: [1, 2, 3, 4]
569
570 qcom,dtest-buffer:
571 $ref: /schemas/types.yaml#/definitions/uint32
572 description:
573 Selects DTEST rail to route to GPIO when it's
574 configured as digital input.
575 enum: [1, 2, 3, 4]
576
577 required:
578 - pins
579 - function
580
581 additionalProperties: false
582
583examples:
584 - |
585 #include <dt-bindings/gpio/gpio.h>
586 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>
587
588 pm8921_gpio: gpio@150 {
589 compatible = "qcom,pm8921-gpio", "qcom,ssbi-gpio";
590 reg = <0x150 0x160>;
591 interrupt-controller;
592 #interrupt-cells = <2>;
593 gpio-controller;
594 gpio-ranges = <&pm8921_gpio 0 0 44>;
595 #gpio-cells = <2>;
596
597 pm8921_gpio_keys: gpio-keys-state {
598 volume-keys-pins {
599 pins = "gpio20", "gpio21";
600 function = "normal";
601
602 input-enable;
603 bias-pull-up;
604 drive-push-pull;
605 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
606 power-source = <PM8921_GPIO_S4>;
607 };
608 };
609
610 otg-hog {
611 gpio-hog;
612 gpios = <35 GPIO_ACTIVE_HIGH>;
613 output-high;
614 line-name = "otg-gpio";
615 };
616 };
617...