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