611 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)2%YAML 1.23---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 block8 9maintainers:10 - Bjorn Andersson <bjorn.andersson@linaro.org>11 12description:13 This binding describes the GPIO block(s) found in the 8xxx series of14 PMIC's from Qualcomm.15 16properties:17 compatible:18 items:19 - enum:20 - qcom,pm2250-gpio21 - qcom,pm660-gpio22 - qcom,pm660l-gpio23 - qcom,pm6125-gpio24 - qcom,pm6150-gpio25 - qcom,pm6150l-gpio26 - qcom,pm6350-gpio27 - qcom,pm6450-gpio28 - qcom,pm7250b-gpio29 - qcom,pm7325-gpio30 - qcom,pm7550ba-gpio31 - qcom,pm8005-gpio32 - qcom,pm8018-gpio33 - qcom,pm8019-gpio34 - qcom,pm8038-gpio35 - qcom,pm8058-gpio36 - qcom,pm8150-gpio37 - qcom,pm8150b-gpio38 - qcom,pm8150l-gpio39 - qcom,pm8226-gpio40 - qcom,pm8350-gpio41 - qcom,pm8350b-gpio42 - qcom,pm8350c-gpio43 - qcom,pm8450-gpio44 - qcom,pm8550-gpio45 - qcom,pm8550b-gpio46 - qcom,pm8550ve-gpio47 - qcom,pm8550vs-gpio48 - qcom,pm8916-gpio49 - qcom,pm8917-gpio50 - qcom,pm8921-gpio51 - qcom,pm8941-gpio52 - qcom,pm8950-gpio53 - qcom,pm8953-gpio54 - qcom,pm8994-gpio55 - qcom,pm8998-gpio56 - qcom,pma8084-gpio57 - qcom,pmc8180-gpio58 - qcom,pmc8180c-gpio59 - qcom,pmc8380-gpio60 - qcom,pmd8028-gpio61 - qcom,pmi632-gpio62 - qcom,pmi8950-gpio63 - qcom,pmi8994-gpio64 - qcom,pmi8998-gpio65 - qcom,pmih0108-gpio66 - qcom,pmk8350-gpio67 - qcom,pmk8550-gpio68 - qcom,pmm8155au-gpio69 - qcom,pmm8654au-gpio70 - qcom,pmp8074-gpio71 - qcom,pmr735a-gpio72 - qcom,pmr735b-gpio73 - qcom,pmr735d-gpio74 - qcom,pms405-gpio75 - qcom,pmx55-gpio76 - qcom,pmx65-gpio77 - qcom,pmx75-gpio78 - qcom,pmxr2230-gpio79 80 - enum:81 - qcom,spmi-gpio82 - qcom,ssbi-gpio83 84 reg:85 maxItems: 186 87 interrupt-controller: true88 89 '#interrupt-cells':90 const: 291 92 gpio-controller: true93 94 gpio-ranges:95 maxItems: 196 97 gpio-line-names:98 minItems: 299 maxItems: 44100 101 gpio-reserved-ranges:102 minItems: 1103 # maxItems as half of total number of GPIOs, as there has to be at104 # least one usable GPIO between each reserved range.105 maxItems: 22106 107 '#gpio-cells':108 const: 2109 description:110 The first cell will be used to define gpio number and the111 second denotes the flags for this gpio112 113additionalProperties: false114 115required:116 - compatible117 - reg118 - gpio-controller119 - '#gpio-cells'120 - gpio-ranges121 - interrupt-controller122 123allOf:124 - if:125 properties:126 compatible:127 contains:128 enum:129 - qcom,pmi8950-gpio130 - qcom,pmr735d-gpio131 then:132 properties:133 gpio-line-names:134 minItems: 2135 maxItems: 2136 gpio-reserved-ranges:137 maxItems: 1138 139 - if:140 properties:141 compatible:142 contains:143 enum:144 - qcom,pm8005-gpio145 - qcom,pm8450-gpio146 - qcom,pm8916-gpio147 - qcom,pmd8028-gpio148 - qcom,pmk8350-gpio149 - qcom,pmr735a-gpio150 - qcom,pmr735b-gpio151 then:152 properties:153 gpio-line-names:154 minItems: 4155 maxItems: 4156 gpio-reserved-ranges:157 minItems: 1158 maxItems: 2159 160 - if:161 properties:162 compatible:163 contains:164 enum:165 - qcom,pm8018-gpio166 - qcom,pm8019-gpio167 - qcom,pm8550vs-gpio168 - qcom,pmk8550-gpio169 then:170 properties:171 gpio-line-names:172 minItems: 6173 maxItems: 6174 gpio-reserved-ranges:175 minItems: 1176 maxItems: 3177 178 - if:179 properties:180 compatible:181 contains:182 enum:183 - qcom,pm7550ba-gpio184 - qcom,pm8226-gpio185 - qcom,pm8350b-gpio186 - qcom,pm8550ve-gpio187 - qcom,pm8950-gpio188 - qcom,pm8953-gpio189 - qcom,pmi632-gpio190 then:191 properties:192 gpio-line-names:193 minItems: 8194 maxItems: 8195 gpio-reserved-ranges:196 minItems: 1197 maxItems: 4198 199 - if:200 properties:201 compatible:202 contains:203 enum:204 - qcom,pm6350-gpio205 - qcom,pm6450-gpio206 - qcom,pm8350c-gpio207 then:208 properties:209 gpio-line-names:210 minItems: 9211 maxItems: 9212 gpio-reserved-ranges:213 minItems: 1214 maxItems: 5215 216 - if:217 properties:218 compatible:219 contains:220 enum:221 - qcom,pm2250-gpio222 - qcom,pm6150-gpio223 - qcom,pm7325-gpio224 - qcom,pm8150-gpio225 - qcom,pm8350-gpio226 - qcom,pmc8180-gpio227 - qcom,pmc8380-gpio228 - qcom,pmi8994-gpio229 - qcom,pmm8155au-gpio230 then:231 properties:232 gpio-line-names:233 minItems: 10234 maxItems: 10235 gpio-reserved-ranges:236 minItems: 1237 maxItems: 5238 239 - if:240 properties:241 compatible:242 contains:243 enum:244 - qcom,pmx55-gpio245 then:246 properties:247 gpio-line-names:248 minItems: 11249 maxItems: 11250 gpio-reserved-ranges:251 minItems: 1252 maxItems: 6253 254 - if:255 properties:256 compatible:257 contains:258 enum:259 - qcom,pm660l-gpio260 - qcom,pm6150l-gpio261 - qcom,pm7250b-gpio262 - qcom,pm8038-gpio263 - qcom,pm8150b-gpio264 - qcom,pm8150l-gpio265 - qcom,pm8550-gpio266 - qcom,pm8550b-gpio267 - qcom,pmc8180c-gpio268 - qcom,pmp8074-gpio269 - qcom,pms405-gpio270 - qcom,pmxr2230-gpio271 then:272 properties:273 gpio-line-names:274 minItems: 12275 maxItems: 12276 gpio-reserved-ranges:277 minItems: 1278 maxItems: 6279 280 - if:281 properties:282 compatible:283 contains:284 enum:285 - qcom,pm660-gpio286 then:287 properties:288 gpio-line-names:289 minItems: 13290 maxItems: 13291 gpio-reserved-ranges:292 minItems: 1293 maxItems: 7294 295 - if:296 properties:297 compatible:298 contains:299 enum:300 - qcom,pmi8998-gpio301 then:302 properties:303 gpio-line-names:304 minItems: 14305 maxItems: 14306 gpio-reserved-ranges:307 minItems: 1308 maxItems: 7309 310 - if:311 properties:312 compatible:313 contains:314 enum:315 - qcom,pmih0108-gpio316 then:317 properties:318 gpio-line-names:319 minItems: 18320 maxItems: 18321 gpio-reserved-ranges:322 minItems: 1323 maxItems: 9324 325 - if:326 properties:327 compatible:328 contains:329 enum:330 - qcom,pmx65-gpio331 - qcom,pmx75-gpio332 then:333 properties:334 gpio-line-names:335 minItems: 16336 maxItems: 16337 gpio-reserved-ranges:338 minItems: 1339 maxItems: 8340 341 - if:342 properties:343 compatible:344 contains:345 enum:346 - qcom,pm8994-gpio347 - qcom,pma8084-gpio348 then:349 properties:350 gpio-line-names:351 minItems: 22352 maxItems: 22353 gpio-reserved-ranges:354 minItems: 1355 maxItems: 11356 357 - if:358 properties:359 compatible:360 contains:361 enum:362 - qcom,pm8998-gpio363 then:364 properties:365 gpio-line-names:366 minItems: 26367 maxItems: 26368 gpio-reserved-ranges:369 minItems: 1370 maxItems: 13371 372 - if:373 properties:374 compatible:375 contains:376 enum:377 - qcom,pm8941-gpio378 then:379 properties:380 gpio-line-names:381 minItems: 36382 maxItems: 36383 gpio-reserved-ranges:384 minItems: 1385 maxItems: 18386 387 - if:388 properties:389 compatible:390 contains:391 enum:392 - qcom,pm8917-gpio393 then:394 properties:395 gpio-line-names:396 minItems: 38397 maxItems: 38398 gpio-reserved-ranges:399 minItems: 1400 maxItems: 19401 402 - if:403 properties:404 compatible:405 contains:406 enum:407 - qcom,pm8058-gpio408 - qcom,pm8921-gpio409 then:410 properties:411 gpio-line-names:412 minItems: 44413 maxItems: 44414 gpio-reserved-ranges:415 minItems: 1416 maxItems: 22417 418patternProperties:419 '-state$':420 oneOf:421 - $ref: "#/$defs/qcom-pmic-gpio-state"422 - patternProperties:423 "(pinconf|-pins)$":424 $ref: "#/$defs/qcom-pmic-gpio-state"425 additionalProperties: false426 427 "-hog(-[0-9]+)?$":428 type: object429 required:430 - gpio-hog431 432$defs:433 qcom-pmic-gpio-state:434 type: object435 allOf:436 - $ref: pinmux-node.yaml437 - $ref: pincfg-node.yaml438 properties:439 pins:440 description:441 List of gpio pins affected by the properties specified in442 this subnode. Valid pins are443 - gpio1-gpio9 for pm6125444 - gpio1-gpio10 for pm6150445 - gpio1-gpio12 for pm6150l446 - gpio1-gpio9 for pm6350447 - gpio1-gpio9 for pm6450448 - gpio1-gpio12 for pm7250b449 - gpio1-gpio10 for pm7325450 - gpio1-gpio8 for pm7550ba451 - gpio1-gpio4 for pm8005452 - gpio1-gpio6 for pm8018453 - gpio1-gpio12 for pm8038454 - gpio1-gpio40 for pm8058455 - gpio1-gpio10 for pm8150 (holes on gpio2, gpio5,456 gpio7 and gpio8)457 - gpio1-gpio12 for pm8150b (holes on gpio3, gpio4458 and gpio7)459 - gpio1-gpio12 for pm8150l (hole on gpio7)460 - gpio1-gpio4 for pm8916461 - gpio1-gpio10 for pm8350462 - gpio1-gpio8 for pm8350b463 - gpio1-gpio9 for pm8350c464 - gpio1-gpio4 for pm8450465 - gpio1-gpio12 for pm8550466 - gpio1-gpio12 for pm8550b467 - gpio1-gpio8 for pm8550ve468 - gpio1-gpio6 for pm8550vs469 - gpio1-gpio38 for pm8917470 - gpio1-gpio44 for pm8921471 - gpio1-gpio36 for pm8941472 - gpio1-gpio8 for pm8950 (hole on gpio3)473 - gpio1-gpio8 for pm8953 (hole on gpio3 and gpio6)474 - gpio1-gpio22 for pm8994475 - gpio1-gpio26 for pm8998476 - gpio1-gpio22 for pma8084477 - gpio1-gpio4 for pmd8028478 - gpio1-gpio8 for pmi632479 - gpio1-gpio2 for pmi8950480 - gpio1-gpio10 for pmi8994481 - gpio1-gpio18 for pmih0108482 - gpio1-gpio4 for pmk8350483 - gpio1-gpio6 for pmk8550484 - gpio1-gpio10 for pmm8155au485 - gpio1-gpio12 for pmm8654au486 - gpio1-gpio12 for pmp8074 (holes on gpio1 and gpio12)487 - gpio1-gpio4 for pmr735a488 - gpio1-gpio4 for pmr735b489 - gpio1-gpio2 for pmr735d490 - gpio1-gpio12 for pms405 (holes on gpio1, gpio9491 and gpio10)492 - gpio1-gpio11 for pmx55 (holes on gpio3, gpio7, gpio10493 and gpio11)494 - gpio1-gpio16 for pmx65495 - gpio1-gpio16 for pmx75496 - gpio1-gpio12 for pmxr2230497 498 items:499 pattern: "^gpio([0-9]+)$"500 501 function:502 items:503 - enum:504 - normal505 - paired506 - func1507 - func2508 - dtest1509 - dtest2510 - dtest3511 - dtest4512 - func3 # supported by LV/MV GPIO subtypes513 - func4 # supported by LV/MV GPIO subtypes514 515 bias-disable: true516 bias-pull-down: true517 bias-pull-up: true518 519 qcom,pull-up-strength:520 $ref: /schemas/types.yaml#/definitions/uint32521 description:522 Specifies the strength to use for pull up, if selected.523 Valid values are defined in524 <dt-bindings/pinctrl/qcom,pmic-gpio.h>525 If this property is omitted 30uA strength will be used526 if pull up is selected527 enum: [0, 1, 2, 3]528 529 bias-high-impedance: true530 input-enable: true531 input-disable: true532 output-high: true533 output-low: true534 output-enable: true535 output-disable: true536 power-source: true537 538 qcom,drive-strength:539 $ref: /schemas/types.yaml#/definitions/uint32540 description:541 Selects the drive strength for the specified pins542 Valid drive strength values are defined in543 <dt-bindings/pinctrl/qcom,pmic-gpio.h>544 enum: [0, 1, 2, 3]545 546 drive-push-pull: true547 drive-open-drain: true548 drive-open-source: true549 550 qcom,analog-pass:551 $ref: /schemas/types.yaml#/definitions/flag552 description:553 The specified pins are configured in554 analog-pass-through mode.555 556 qcom,atest:557 $ref: /schemas/types.yaml#/definitions/uint32558 description:559 Selects ATEST rail to route to GPIO when it's560 configured in analog-pass-through mode.561 enum: [1, 2, 3, 4]562 563 qcom,dtest-buffer:564 $ref: /schemas/types.yaml#/definitions/uint32565 description:566 Selects DTEST rail to route to GPIO when it's567 configured as digital input.568 enum: [1, 2, 3, 4]569 570 required:571 - pins572 - function573 574 additionalProperties: false575 576examples:577 - |578 #include <dt-bindings/gpio/gpio.h>579 #include <dt-bindings/pinctrl/qcom,pmic-gpio.h>580 581 pm8921_gpio: gpio@150 {582 compatible = "qcom,pm8921-gpio", "qcom,ssbi-gpio";583 reg = <0x150 0x160>;584 interrupt-controller;585 #interrupt-cells = <2>;586 gpio-controller;587 gpio-ranges = <&pm8921_gpio 0 0 44>;588 #gpio-cells = <2>;589 590 pm8921_gpio_keys: gpio-keys-state {591 volume-keys-pins {592 pins = "gpio20", "gpio21";593 function = "normal";594 595 input-enable;596 bias-pull-up;597 drive-push-pull;598 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;599 power-source = <PM8921_GPIO_S4>;600 };601 };602 603 otg-hog {604 gpio-hog;605 gpios = <35 GPIO_ACTIVE_HIGH>;606 output-high;607 line-name = "otg-gpio";608 };609 };610...611