xref: /linux/Documentation/devicetree/bindings/pinctrl/qcom,pmic-mpp.yaml (revision c532de5a67a70f8533d495f8f2aaa9a0491c3ad0)
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-mpp.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm PMIC Multi-Purpose Pin (MPP) block
8
9maintainers:
10  - Bjorn Andersson <bjorn.andersson@linaro.org>
11
12description:
13  This binding describes the MPP block(s) found in the 8xxx series of
14  PMIC's from Qualcomm.
15
16properties:
17  compatible:
18    oneOf:
19      - items:
20          - enum:
21              - qcom,pm8019-mpp
22              - qcom,pm8226-mpp
23              - qcom,pm8841-mpp
24              - qcom,pm8916-mpp
25              - qcom,pm8941-mpp
26              - qcom,pm8950-mpp
27              - qcom,pmi8950-mpp
28              - qcom,pm8994-mpp
29              - qcom,pma8084-mpp
30              - qcom,pmi8994-mpp
31          - const: qcom,spmi-mpp
32      - items:
33          - enum:
34              - qcom,pm8018-mpp
35              - qcom,pm8038-mpp
36              - qcom,pm8058-mpp
37              - qcom,pm8821-mpp
38              - qcom,pm8901-mpp
39              - qcom,pm8917-mpp
40              - qcom,pm8921-mpp
41          - const: qcom,ssbi-mpp
42
43  reg:
44    maxItems: 1
45
46  interrupt-controller: true
47
48  '#interrupt-cells':
49    const: 2
50
51  gpio-controller: true
52  gpio-line-names: true
53
54  gpio-ranges:
55    maxItems: 1
56
57  '#gpio-cells':
58    const: 2
59    description:
60      The first cell will be used to define gpio number and the
61      second denotes the flags for this gpio
62
63additionalProperties: false
64
65required:
66  - compatible
67  - reg
68  - gpio-controller
69  - '#gpio-cells'
70  - gpio-ranges
71  - interrupt-controller
72
73patternProperties:
74  '-state$':
75    oneOf:
76      - $ref: "#/$defs/qcom-pmic-mpp-state"
77      - patternProperties:
78          '-pins$':
79            $ref: "#/$defs/qcom-pmic-mpp-state"
80        additionalProperties: false
81
82$defs:
83  qcom-pmic-mpp-state:
84    type: object
85    allOf:
86      - $ref: pinmux-node.yaml
87      - $ref: pincfg-node.yaml
88    properties:
89      pins:
90        description:
91          List of gpio pins affected by the properties specified in
92          this subnode.  Valid pins are
93                 - mpp1-mpp4 for pm8841
94                 - mpp1-mpp4 for pm8916
95                 - mpp1-mpp8 for pm8941
96                 - mpp1-mpp4 for pm8950
97                 - mpp1-mpp4 for pmi8950
98                 - mpp1-mpp4 for pma8084
99
100        items:
101          pattern: "^mpp([0-9]+)$"
102
103      function:
104        items:
105          - enum:
106              - digital
107              - analog
108              - sink
109
110      bias-disable: true
111      bias-pull-up: true
112      bias-high-impedance: true
113      input-enable: true
114      output-high: true
115      output-low: true
116      power-source: true
117
118      qcom,analog-level:
119        $ref: /schemas/types.yaml#/definitions/uint32
120        description:
121          Selects the source for analog output. Valued values are defined in
122          <dt-binding/pinctrl/qcom,pmic-mpp.h> PMIC_MPP_AOUT_LVL_*
123        enum: [0, 1, 2, 3, 4, 5, 6, 7]
124
125      qcom,atest:
126        $ref: /schemas/types.yaml#/definitions/uint32
127        description:
128          Selects ATEST rail to route to GPIO when it's
129          configured in analog-pass-through mode.
130        enum: [1, 2, 3, 4]
131
132      qcom,dtest:
133        $ref: /schemas/types.yaml#/definitions/uint32
134        description:
135          Selects DTEST rail to route to GPIO when it's
136          configured as digital input.
137        enum: [1, 2, 3, 4]
138
139      qcom,amux-route:
140        $ref: /schemas/types.yaml#/definitions/uint32
141        description:
142          Selects the source for analog input. Valid values are defined in
143          <dt-bindings/pinctrl/qcom,pmic-mpp.h> PMIC_MPP_AMUX_ROUTE_CH5,
144          PMIC_MPP_AMUX_ROUTE_CH6...
145        enum: [0, 1, 2, 3, 4, 5, 6, 7]
146
147      qcom,paired:
148        type: boolean
149        description:
150          Indicates that the pin should be operating in paired mode.
151
152    required:
153      - pins
154      - function
155
156    additionalProperties: false
157
158examples:
159  - |
160    #include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
161
162    pmic {
163        #address-cells = <1>;
164        #size-cells = <0>;
165
166        pm8841_mpp: mpps@a000 {
167            compatible = "qcom,pm8841-mpp", "qcom,spmi-mpp";
168            reg = <0xa000>;
169
170            gpio-controller;
171            #gpio-cells = <2>;
172            gpio-ranges = <&pm8841_mpp 0 0 4>;
173            gpio-line-names = "VDD_PX_BIAS", "WLAN_LED_CTRL",
174                              "BT_LED_CTRL", "GPIO-F";
175            interrupt-controller;
176            #interrupt-cells = <2>;
177
178            pinctrl-names = "default";
179            pinctrl-0 = <&pm8841_default>;
180
181            mpp1-state {
182                pins = "mpp1";
183                function = "digital";
184                input-enable;
185                power-source = <PM8841_MPP_S3>;
186            };
187
188            default-state {
189                gpio-pins {
190                    pins = "mpp1", "mpp2", "mpp3", "mpp4";
191                    function = "digital";
192                    input-enable;
193                    power-source = <PM8841_MPP_S3>;
194                };
195            };
196        };
197    };
198...
199