| # 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,pm6150-gpio |
| - qcom,pm6150l-gpio |
| - qcom,pm6350-gpio |
| - qcom,pm7325-gpio |
| - qcom,pm8005-gpio |
| - qcom,pm8008-gpio |
| - qcom,pm8018-gpio |
| - qcom,pm8019-gpio |
| - qcom,pm8038-gpio |
| - qcom,pm8058-gpio |
| - qcom,pm8150-gpio |
| - qcom,pm8150b-gpio |
| - qcom,pm8226-gpio |
| - qcom,pm8350-gpio |
| - qcom,pm8350b-gpio |
| - qcom,pm8350c-gpio |
| - qcom,pm8916-gpio |
| - qcom,pm8917-gpio |
| - qcom,pm8921-gpio |
| - qcom,pm8941-gpio |
| - qcom,pm8950-gpio |
| - qcom,pm8994-gpio |
| - qcom,pm8998-gpio |
| - qcom,pma8084-gpio |
| - qcom,pmi8950-gpio |
| - qcom,pmi8994-gpio |
| - qcom,pmi8998-gpio |
| - qcom,pmk8350-gpio |
| - qcom,pmr735a-gpio |
| - qcom,pmr735b-gpio |
| - qcom,pms405-gpio |
| - qcom,pmx55-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-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 |
| |
| patternProperties: |
| '-state$': |
| oneOf: |
| - $ref: "#/$defs/qcom-pmic-gpio-state" |
| - patternProperties: |
| ".*": |
| $ref: "#/$defs/qcom-pmic-gpio-state" |
| |
| $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-gpio10 for pm6150 |
| - gpio1-gpio12 for pm6150l |
| - gpio1-gpio9 for pm6350 |
| - gpio1-gpio10 for pm7325 |
| - gpio1-gpio4 for pm8005 |
| - gpio1-gpio2 for pm8008 |
| - 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-gpio38 for pm8917 |
| - gpio1-gpio44 for pm8921 |
| - gpio1-gpio36 for pm8941 |
| - gpio1-gpio8 for pm8950 (hole on gpio3) |
| - gpio1-gpio22 for pm8994 |
| - gpio1-gpio26 for pm8998 |
| - gpio1-gpio22 for pma8084 |
| - gpio1-gpio2 for pmi8950 |
| - gpio1-gpio10 for pmi8994 |
| - gpio1-gpio4 for pmk8350 |
| - gpio1-gpio4 for pmr735a |
| - gpio1-gpio4 for pmr735b |
| - gpio1-gpio12 for pms405 (holes on gpio1, gpio9 |
| and gpio10) |
| - gpio1-gpio11 for pmx55 (holes on gpio3, gpio7, gpio10 |
| and gpio11) |
| |
| 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 |
| 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/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 = "gpio20", "gpio21"; |
| function = "normal"; |
| |
| input-enable; |
| bias-pull-up; |
| drive-push-pull; |
| qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>; |
| power-source = <PM8921_GPIO_S4>; |
| }; |
| }; |
| }; |
| ... |