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:
187ec00664SKrzysztof Kozlowski    oneOf:
197ec00664SKrzysztof Kozlowski      - items:
20f9a06b81SDmitry Baryshkov          - enum:
21f9a06b81SDmitry Baryshkov              - qcom,pm8019-mpp
22620d9400SRayyan Ansari              - qcom,pm8226-mpp
23f9a06b81SDmitry Baryshkov              - qcom,pm8841-mpp
24f9a06b81SDmitry Baryshkov              - qcom,pm8916-mpp
25f9a06b81SDmitry Baryshkov              - qcom,pm8941-mpp
26f9a06b81SDmitry Baryshkov              - qcom,pm8950-mpp
27f9a06b81SDmitry Baryshkov              - qcom,pmi8950-mpp
28f9a06b81SDmitry Baryshkov              - qcom,pm8994-mpp
29f9a06b81SDmitry Baryshkov              - qcom,pma8084-mpp
30f9a06b81SDmitry Baryshkov              - qcom,pmi8994-mpp
317ec00664SKrzysztof Kozlowski          - const: qcom,spmi-mpp
327ec00664SKrzysztof Kozlowski      - items:
33f9a06b81SDmitry Baryshkov          - enum:
347ec00664SKrzysztof Kozlowski              - qcom,pm8018-mpp
357ec00664SKrzysztof Kozlowski              - qcom,pm8038-mpp
367ec00664SKrzysztof Kozlowski              - qcom,pm8058-mpp
377ec00664SKrzysztof Kozlowski              - qcom,pm8821-mpp
387ec00664SKrzysztof Kozlowski              - qcom,pm8917-mpp
397ec00664SKrzysztof Kozlowski              - qcom,pm8921-mpp
407ec00664SKrzysztof Kozlowski          - const: qcom,ssbi-mpp
41f9a06b81SDmitry Baryshkov
42f9a06b81SDmitry Baryshkov  reg:
43f9a06b81SDmitry Baryshkov    maxItems: 1
44f9a06b81SDmitry Baryshkov
458ec664ffSDmitry Baryshkov  interrupt-controller: true
468ec664ffSDmitry Baryshkov
478ec664ffSDmitry Baryshkov  '#interrupt-cells':
488ec664ffSDmitry Baryshkov    const: 2
49f9a06b81SDmitry Baryshkov
50f9a06b81SDmitry Baryshkov  gpio-controller: true
51f9a06b81SDmitry Baryshkov  gpio-line-names: true
52f9a06b81SDmitry Baryshkov
53f9a06b81SDmitry Baryshkov  gpio-ranges:
54f9a06b81SDmitry Baryshkov    maxItems: 1
55f9a06b81SDmitry Baryshkov
56f9a06b81SDmitry Baryshkov  '#gpio-cells':
57f9a06b81SDmitry Baryshkov    const: 2
58f9a06b81SDmitry Baryshkov    description:
59f9a06b81SDmitry Baryshkov      The first cell will be used to define gpio number and the
60f9a06b81SDmitry Baryshkov      second denotes the flags for this gpio
61f9a06b81SDmitry Baryshkov
62f9a06b81SDmitry BaryshkovadditionalProperties: false
63f9a06b81SDmitry Baryshkov
64f9a06b81SDmitry Baryshkovrequired:
65f9a06b81SDmitry Baryshkov  - compatible
66f9a06b81SDmitry Baryshkov  - reg
67f9a06b81SDmitry Baryshkov  - gpio-controller
68f9a06b81SDmitry Baryshkov  - '#gpio-cells'
69f9a06b81SDmitry Baryshkov  - gpio-ranges
708ec664ffSDmitry Baryshkov  - interrupt-controller
71f9a06b81SDmitry Baryshkov
72f9a06b81SDmitry BaryshkovpatternProperties:
73f9a06b81SDmitry Baryshkov  '-state$':
74f9a06b81SDmitry Baryshkov    oneOf:
75f9a06b81SDmitry Baryshkov      - $ref: "#/$defs/qcom-pmic-mpp-state"
76f9a06b81SDmitry Baryshkov      - patternProperties:
775b8c304cSRob Herring          '-pins$':
78f9a06b81SDmitry Baryshkov            $ref: "#/$defs/qcom-pmic-mpp-state"
79f9a06b81SDmitry Baryshkov        additionalProperties: false
80f9a06b81SDmitry Baryshkov
81f9a06b81SDmitry Baryshkov$defs:
82f9a06b81SDmitry Baryshkov  qcom-pmic-mpp-state:
83f9a06b81SDmitry Baryshkov    type: object
84f9a06b81SDmitry Baryshkov    allOf:
8549cd1dd1SRob Herring      - $ref: pinmux-node.yaml
8649cd1dd1SRob Herring      - $ref: pincfg-node.yaml
87f9a06b81SDmitry Baryshkov    properties:
88f9a06b81SDmitry Baryshkov      pins:
89f9a06b81SDmitry Baryshkov        description:
90f9a06b81SDmitry Baryshkov          List of gpio pins affected by the properties specified in
91f9a06b81SDmitry Baryshkov          this subnode.  Valid pins are
92f9a06b81SDmitry Baryshkov                 - mpp1-mpp4 for pm8841
93f9a06b81SDmitry Baryshkov                 - mpp1-mpp4 for pm8916
94f9a06b81SDmitry Baryshkov                 - mpp1-mpp8 for pm8941
95f9a06b81SDmitry Baryshkov                 - mpp1-mpp4 for pm8950
96f9a06b81SDmitry Baryshkov                 - mpp1-mpp4 for pmi8950
97f9a06b81SDmitry Baryshkov                 - mpp1-mpp4 for pma8084
98f9a06b81SDmitry Baryshkov
99f9a06b81SDmitry Baryshkov        items:
100f9a06b81SDmitry Baryshkov          pattern: "^mpp([0-9]+)$"
101f9a06b81SDmitry Baryshkov
102f9a06b81SDmitry Baryshkov      function:
103f9a06b81SDmitry Baryshkov        items:
104f9a06b81SDmitry Baryshkov          - enum:
105f9a06b81SDmitry Baryshkov              - digital
106f9a06b81SDmitry Baryshkov              - analog
107f9a06b81SDmitry Baryshkov              - sink
108f9a06b81SDmitry Baryshkov
109f9a06b81SDmitry Baryshkov      bias-disable: true
110f9a06b81SDmitry Baryshkov      bias-pull-up: true
111f9a06b81SDmitry Baryshkov      bias-high-impedance: true
112f9a06b81SDmitry Baryshkov      input-enable: true
113f9a06b81SDmitry Baryshkov      output-high: true
114f9a06b81SDmitry Baryshkov      output-low: true
115f9a06b81SDmitry Baryshkov      power-source: true
116f9a06b81SDmitry Baryshkov
117f9a06b81SDmitry Baryshkov      qcom,analog-level:
118f9a06b81SDmitry Baryshkov        $ref: /schemas/types.yaml#/definitions/uint32
119f9a06b81SDmitry Baryshkov        description:
120f9a06b81SDmitry Baryshkov          Selects the source for analog output. Valued values are defined in
121f9a06b81SDmitry Baryshkov          <dt-binding/pinctrl/qcom,pmic-mpp.h> PMIC_MPP_AOUT_LVL_*
122f9a06b81SDmitry Baryshkov        enum: [0, 1, 2, 3, 4, 5, 6, 7]
123f9a06b81SDmitry Baryshkov
124f9a06b81SDmitry Baryshkov      qcom,atest:
125f9a06b81SDmitry Baryshkov        $ref: /schemas/types.yaml#/definitions/uint32
126f9a06b81SDmitry Baryshkov        description:
127f9a06b81SDmitry Baryshkov          Selects ATEST rail to route to GPIO when it's
128f9a06b81SDmitry Baryshkov          configured in analog-pass-through mode.
129f9a06b81SDmitry Baryshkov        enum: [1, 2, 3, 4]
130f9a06b81SDmitry Baryshkov
131f9a06b81SDmitry Baryshkov      qcom,dtest:
132f9a06b81SDmitry Baryshkov        $ref: /schemas/types.yaml#/definitions/uint32
133f9a06b81SDmitry Baryshkov        description:
134f9a06b81SDmitry Baryshkov          Selects DTEST rail to route to GPIO when it's
135f9a06b81SDmitry Baryshkov          configured as digital input.
136f9a06b81SDmitry Baryshkov        enum: [1, 2, 3, 4]
137f9a06b81SDmitry Baryshkov
138f9a06b81SDmitry Baryshkov      qcom,amux-route:
139f9a06b81SDmitry Baryshkov        $ref: /schemas/types.yaml#/definitions/uint32
140f9a06b81SDmitry Baryshkov        description:
141f9a06b81SDmitry Baryshkov          Selects the source for analog input. Valid values are defined in
142f9a06b81SDmitry Baryshkov          <dt-bindings/pinctrl/qcom,pmic-mpp.h> PMIC_MPP_AMUX_ROUTE_CH5,
143f9a06b81SDmitry Baryshkov          PMIC_MPP_AMUX_ROUTE_CH6...
144f9a06b81SDmitry Baryshkov        enum: [0, 1, 2, 3, 4, 5, 6, 7]
145f9a06b81SDmitry Baryshkov
146f9a06b81SDmitry Baryshkov      qcom,paired:
147*c7753ed7SRob Herring        type: boolean
148*c7753ed7SRob Herring        description:
149f9a06b81SDmitry Baryshkov          Indicates that the pin should be operating in paired mode.
150f9a06b81SDmitry Baryshkov
151f9a06b81SDmitry Baryshkov    required:
152f9a06b81SDmitry Baryshkov      - pins
153f9a06b81SDmitry Baryshkov      - function
154f9a06b81SDmitry Baryshkov
155f9a06b81SDmitry Baryshkov    additionalProperties: false
156f9a06b81SDmitry Baryshkov
157f9a06b81SDmitry Baryshkovexamples:
158f9a06b81SDmitry Baryshkov  - |
159f9a06b81SDmitry Baryshkov    #include <dt-bindings/pinctrl/qcom,pmic-mpp.h>
160f9a06b81SDmitry Baryshkov
161f9a06b81SDmitry Baryshkov    pm8841_mpp: mpps@a000 {
162f9a06b81SDmitry Baryshkov      compatible = "qcom,pm8841-mpp", "qcom,spmi-mpp";
163f9a06b81SDmitry Baryshkov      reg = <0xa000 0>;
164f9a06b81SDmitry Baryshkov      gpio-controller;
165f9a06b81SDmitry Baryshkov      #gpio-cells = <2>;
166f9a06b81SDmitry Baryshkov      gpio-ranges = <&pm8841_mpp 0 0 4>;
167f9a06b81SDmitry Baryshkov      gpio-line-names = "VDD_PX_BIAS", "WLAN_LED_CTRL",
168f9a06b81SDmitry Baryshkov              "BT_LED_CTRL", "GPIO-F";
1698ec664ffSDmitry Baryshkov      interrupt-controller;
1708ec664ffSDmitry Baryshkov      #interrupt-cells = <2>;
171f9a06b81SDmitry Baryshkov
172f9a06b81SDmitry Baryshkov      pinctrl-names = "default";
173f9a06b81SDmitry Baryshkov      pinctrl-0 = <&pm8841_default>;
174f9a06b81SDmitry Baryshkov
175f9a06b81SDmitry Baryshkov      mpp1-state {
176f9a06b81SDmitry Baryshkov        pins = "mpp1";
177f9a06b81SDmitry Baryshkov        function = "digital";
178f9a06b81SDmitry Baryshkov        input-enable;
179f9a06b81SDmitry Baryshkov        power-source = <PM8841_MPP_S3>;
180f9a06b81SDmitry Baryshkov      };
181f9a06b81SDmitry Baryshkov
182f9a06b81SDmitry Baryshkov      default-state {
1835b8c304cSRob Herring        gpio-pins {
184f9a06b81SDmitry Baryshkov          pins = "mpp1", "mpp2", "mpp3", "mpp4";
185f9a06b81SDmitry Baryshkov          function = "digital";
186f9a06b81SDmitry Baryshkov          input-enable;
187f9a06b81SDmitry Baryshkov          power-source = <PM8841_MPP_S3>;
188f9a06b81SDmitry Baryshkov        };
189f9a06b81SDmitry Baryshkov      };
190f9a06b81SDmitry Baryshkov    };
191f9a06b81SDmitry Baryshkov...
192