| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) | |
| %YAML 1.2 | |
| --- | |
| $id: http://devicetree.org/schemas/pinctrl/qcom,pmic-gpio.yaml# | |
| $schema: http://devicetree.org/meta-schemas/core.yaml# | |
| title: Qualcomm PMIC GPIO block | |
| maintainers: | |
| - Bjorn Andersson <bjorn.andersson@linaro.org> | |
| description: | |
| This binding describes the GPIO block(s) found in the 8xxx series of | |
| PMIC's from Qualcomm. | |
| properties: | |
| compatible: | |
| items: | |
| - enum: | |
| - qcom,pm2250-gpio | |
| - qcom,pm660-gpio | |
| - qcom,pm660l-gpio | |
| - qcom,pm6125-gpio | |
| - qcom,pm6150-gpio | |
| - qcom,pm6150l-gpio | |
| - qcom,pm6350-gpio | |
| - qcom,pm6450-gpio | |
| - qcom,pm7250b-gpio | |
| - qcom,pm7325-gpio | |
| - qcom,pm7550-gpio | |
| - qcom,pm7550ba-gpio | |
| - qcom,pm8005-gpio | |
| - qcom,pm8018-gpio | |
| - qcom,pm8019-gpio | |
| - qcom,pm8038-gpio | |
| - qcom,pm8058-gpio | |
| - qcom,pm8150-gpio | |
| - qcom,pm8150b-gpio | |
| - qcom,pm8150l-gpio | |
| - qcom,pm8226-gpio | |
| - qcom,pm8350-gpio | |
| - qcom,pm8350b-gpio | |
| - qcom,pm8350c-gpio | |
| - qcom,pm8450-gpio | |
| - qcom,pm8550-gpio | |
| - qcom,pm8550b-gpio | |
| - qcom,pm8550ve-gpio | |
| - qcom,pm8550vs-gpio | |
| - qcom,pm8916-gpio | |
| - qcom,pm8917-gpio | |
| - qcom,pm8921-gpio | |
| - qcom,pm8937-gpio | |
| - qcom,pm8941-gpio | |
| - qcom,pm8950-gpio | |
| - qcom,pm8953-gpio | |
| - qcom,pm8994-gpio | |
| - qcom,pm8998-gpio | |
| - qcom,pma8084-gpio | |
| - qcom,pmc8180-gpio | |
| - qcom,pmc8180c-gpio | |
| - qcom,pmc8380-gpio | |
| - qcom,pmd8028-gpio | |
| - qcom,pmi632-gpio | |
| - qcom,pmi8950-gpio | |
| - qcom,pmi8994-gpio | |
| - qcom,pmi8998-gpio | |
| - qcom,pmih0108-gpio | |
| - qcom,pmiv0104-gpio | |
| - qcom,pmk8350-gpio | |
| - qcom,pmk8550-gpio | |
| - qcom,pmm8155au-gpio | |
| - qcom,pmm8654au-gpio | |
| - qcom,pmp8074-gpio | |
| - qcom,pmr735a-gpio | |
| - qcom,pmr735b-gpio | |
| - qcom,pmr735d-gpio | |
| - qcom,pms405-gpio | |
| - qcom,pmx55-gpio | |
| - qcom,pmx65-gpio | |
| - qcom,pmx75-gpio | |
| - qcom,pmxr2230-gpio | |
| - enum: | |
| - qcom,spmi-gpio | |
| - qcom,ssbi-gpio | |
| reg: | |
| maxItems: 1 | |
| interrupt-controller: true | |
| '#interrupt-cells': | |
| const: 2 | |
| gpio-controller: true | |
| gpio-ranges: | |
| maxItems: 1 | |
| gpio-line-names: | |
| minItems: 2 | |
| maxItems: 44 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| # maxItems as half of total number of GPIOs, as there has to be at | |
| # least one usable GPIO between each reserved range. | |
| maxItems: 22 | |
| '#gpio-cells': | |
| const: 2 | |
| description: | |
| The first cell will be used to define gpio number and the | |
| second denotes the flags for this gpio | |
| additionalProperties: false | |
| required: | |
| - compatible | |
| - reg | |
| - gpio-controller | |
| - '#gpio-cells' | |
| - gpio-ranges | |
| - interrupt-controller | |
| allOf: | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pmi8950-gpio | |
| - qcom,pmr735d-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 2 | |
| maxItems: 2 | |
| gpio-reserved-ranges: | |
| maxItems: 1 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm8005-gpio | |
| - qcom,pm8450-gpio | |
| - qcom,pm8916-gpio | |
| - qcom,pmd8028-gpio | |
| - qcom,pmk8350-gpio | |
| - qcom,pmr735a-gpio | |
| - qcom,pmr735b-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 4 | |
| maxItems: 4 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 2 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm8018-gpio | |
| - qcom,pm8019-gpio | |
| - qcom,pm8550vs-gpio | |
| - qcom,pmk8550-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 6 | |
| maxItems: 6 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 3 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm7550ba-gpio | |
| - qcom,pm8226-gpio | |
| - qcom,pm8350b-gpio | |
| - qcom,pm8550ve-gpio | |
| - qcom,pm8937-gpio | |
| - qcom,pm8950-gpio | |
| - qcom,pm8953-gpio | |
| - qcom,pmi632-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 8 | |
| maxItems: 8 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 4 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm6350-gpio | |
| - qcom,pm6450-gpio | |
| - qcom,pm8350c-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 9 | |
| maxItems: 9 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 5 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm2250-gpio | |
| - qcom,pm6150-gpio | |
| - qcom,pm7325-gpio | |
| - qcom,pm8150-gpio | |
| - qcom,pm8350-gpio | |
| - qcom,pmc8180-gpio | |
| - qcom,pmc8380-gpio | |
| - qcom,pmi8994-gpio | |
| - qcom,pmiv0104-gpio | |
| - qcom,pmm8155au-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 10 | |
| maxItems: 10 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 5 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pmx55-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 11 | |
| maxItems: 11 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 6 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm660l-gpio | |
| - qcom,pm6150l-gpio | |
| - qcom,pm7250b-gpio | |
| - qcom,pm7550-gpio | |
| - qcom,pm8038-gpio | |
| - qcom,pm8150b-gpio | |
| - qcom,pm8150l-gpio | |
| - qcom,pm8550-gpio | |
| - qcom,pm8550b-gpio | |
| - qcom,pmc8180c-gpio | |
| - qcom,pmp8074-gpio | |
| - qcom,pms405-gpio | |
| - qcom,pmxr2230-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 12 | |
| maxItems: 12 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 6 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm660-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 13 | |
| maxItems: 13 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 7 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pmi8998-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 14 | |
| maxItems: 14 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 7 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pmih0108-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 18 | |
| maxItems: 18 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 9 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pmx65-gpio | |
| - qcom,pmx75-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 16 | |
| maxItems: 16 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 8 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm8994-gpio | |
| - qcom,pma8084-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 22 | |
| maxItems: 22 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 11 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm8998-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 26 | |
| maxItems: 26 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 13 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm8941-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 36 | |
| maxItems: 36 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 18 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm8917-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 38 | |
| maxItems: 38 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 19 | |
| - if: | |
| properties: | |
| compatible: | |
| contains: | |
| enum: | |
| - qcom,pm8058-gpio | |
| - qcom,pm8921-gpio | |
| then: | |
| properties: | |
| gpio-line-names: | |
| minItems: 44 | |
| maxItems: 44 | |
| gpio-reserved-ranges: | |
| minItems: 1 | |
| maxItems: 22 | |
| patternProperties: | |
| '-state$': | |
| oneOf: | |
| - $ref: "#/$defs/qcom-pmic-gpio-state" | |
| - patternProperties: | |
| "(pinconf|-pins)$": | |
| $ref: "#/$defs/qcom-pmic-gpio-state" | |
| additionalProperties: false | |
| "-hog(-[0-9]+)?$": | |
| type: object | |
| required: | |
| - gpio-hog | |
| $defs: | |
| qcom-pmic-gpio-state: | |
| type: object | |
| allOf: | |
| - $ref: pinmux-node.yaml | |
| - $ref: pincfg-node.yaml | |
| properties: | |
| pins: | |
| description: | |
| List of gpio pins affected by the properties specified in | |
| this subnode. Valid pins are | |
| - gpio1-gpio9 for pm6125 | |
| - gpio1-gpio10 for pm6150 | |
| - gpio1-gpio12 for pm6150l | |
| - gpio1-gpio9 for pm6350 | |
| - gpio1-gpio9 for pm6450 | |
| - gpio1-gpio12 for pm7250b | |
| - gpio1-gpio10 for pm7325 | |
| - gpio1-gpio8 for pm7550ba | |
| - gpio1-gpio4 for pm8005 | |
| - gpio1-gpio6 for pm8018 | |
| - gpio1-gpio12 for pm8038 | |
| - gpio1-gpio40 for pm8058 | |
| - gpio1-gpio10 for pm8150 (holes on gpio2, gpio5, | |
| gpio7 and gpio8) | |
| - gpio1-gpio12 for pm8150b (holes on gpio3, gpio4 | |
| and gpio7) | |
| - gpio1-gpio12 for pm8150l (hole on gpio7) | |
| - gpio1-gpio4 for pm8916 | |
| - gpio1-gpio10 for pm8350 | |
| - gpio1-gpio8 for pm8350b | |
| - gpio1-gpio9 for pm8350c | |
| - gpio1-gpio4 for pm8450 | |
| - gpio1-gpio12 for pm8550 | |
| - gpio1-gpio12 for pm8550b | |
| - gpio1-gpio8 for pm8550ve | |
| - gpio1-gpio6 for pm8550vs | |
| - gpio1-gpio38 for pm8917 | |
| - gpio1-gpio44 for pm8921 | |
| - gpio1-gpio8 for pm8937 (hole on gpio3, gpio4 and gpio6) | |
| - gpio1-gpio36 for pm8941 | |
| - gpio1-gpio8 for pm8950 (hole on gpio3) | |
| - gpio1-gpio8 for pm8953 (hole on gpio3 and gpio6) | |
| - gpio1-gpio22 for pm8994 | |
| - gpio1-gpio26 for pm8998 | |
| - gpio1-gpio22 for pma8084 | |
| - gpio1-gpio4 for pmd8028 | |
| - gpio1-gpio8 for pmi632 | |
| - gpio1-gpio2 for pmi8950 | |
| - gpio1-gpio10 for pmi8994 | |
| - gpio1-gpio18 for pmih0108 | |
| - gpio1-gpio4 for pmk8350 | |
| - gpio1-gpio6 for pmk8550 | |
| - gpio1-gpio10 for pmm8155au | |
| - gpio1-gpio12 for pmm8654au | |
| - gpio1-gpio12 for pmp8074 (holes on gpio1 and gpio12) | |
| - gpio1-gpio4 for pmr735a | |
| - gpio1-gpio4 for pmr735b | |
| - gpio1-gpio2 for pmr735d | |
| - gpio1-gpio12 for pms405 (holes on gpio1, gpio9 | |
| and gpio10) | |
| - gpio1-gpio11 for pmx55 (holes on gpio3, gpio7, gpio10 | |
| and gpio11) | |
| - gpio1-gpio16 for pmx65 | |
| - gpio1-gpio16 for pmx75 | |
| - gpio1-gpio12 for pmxr2230 | |
| items: | |
| pattern: "^gpio([0-9]+)$" | |
| function: | |
| items: | |
| - enum: | |
| - normal | |
| - paired | |
| - func1 | |
| - func2 | |
| - dtest1 | |
| - dtest2 | |
| - dtest3 | |
| - dtest4 | |
| - func3 # supported by LV/MV GPIO subtypes | |
| - func4 # supported by LV/MV GPIO subtypes | |
| bias-disable: true | |
| bias-pull-down: true | |
| bias-pull-up: true | |
| qcom,pull-up-strength: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| description: | |
| Specifies the strength to use for pull up, if selected. | |
| Valid values are defined in | |
| <dt-bindings/pinctrl/qcom,pmic-gpio.h> | |
| If this property is omitted 30uA strength will be used | |
| if pull up is selected | |
| enum: [0, 1, 2, 3] | |
| bias-high-impedance: true | |
| input-enable: true | |
| input-disable: true | |
| output-high: true | |
| output-low: true | |
| output-enable: true | |
| output-disable: true | |
| power-source: true | |
| qcom,drive-strength: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| description: | |
| Selects the drive strength for the specified pins | |
| Valid drive strength values are defined in | |
| <dt-bindings/pinctrl/qcom,pmic-gpio.h> | |
| enum: [0, 1, 2, 3] | |
| drive-push-pull: true | |
| drive-open-drain: true | |
| drive-open-source: true | |
| qcom,analog-pass: | |
| $ref: /schemas/types.yaml#/definitions/flag | |
| description: | |
| The specified pins are configured in | |
| analog-pass-through mode. | |
| qcom,atest: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| description: | |
| Selects ATEST rail to route to GPIO when it's | |
| configured in analog-pass-through mode. | |
| enum: [1, 2, 3, 4] | |
| qcom,dtest-buffer: | |
| $ref: /schemas/types.yaml#/definitions/uint32 | |
| description: | |
| Selects DTEST rail to route to GPIO when it's | |
| configured as digital input. | |
| enum: [1, 2, 3, 4] | |
| required: | |
| - pins | |
| - function | |
| additionalProperties: false | |
| examples: | |
| - | | |
| #include <dt-bindings/gpio/gpio.h> | |
| #include <dt-bindings/pinctrl/qcom,pmic-gpio.h> | |
| pm8921_gpio: gpio@150 { | |
| compatible = "qcom,pm8921-gpio", "qcom,ssbi-gpio"; | |
| reg = <0x150 0x160>; | |
| interrupt-controller; | |
| #interrupt-cells = <2>; | |
| gpio-controller; | |
| gpio-ranges = <&pm8921_gpio 0 0 44>; | |
| #gpio-cells = <2>; | |
| pm8921_gpio_keys: gpio-keys-state { | |
| volume-keys-pins { | |
| pins = "gpio20", "gpio21"; | |
| function = "normal"; | |
| input-enable; | |
| bias-pull-up; | |
| drive-push-pull; | |
| qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>; | |
| power-source = <PM8921_GPIO_S4>; | |
| }; | |
| }; | |
| otg-hog { | |
| gpio-hog; | |
| gpios = <35 GPIO_ACTIVE_HIGH>; | |
| output-high; | |
| line-name = "otg-gpio"; | |
| }; | |
| }; | |
| ... |