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