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