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