GNU Linux-libre 4.9.332-gnu1
[releases.git] / Documentation / devicetree / bindings / pinctrl / qcom,pmic-mpp.txt
1 Qualcomm PMIC Multi-Purpose Pin (MPP) block
2
3 This binding describes the MPP block(s) found in the 8xxx series
4 of PMIC's from Qualcomm.
5
6 - compatible:
7         Usage: required
8         Value type: <string>
9         Definition: Should contain one of:
10                     "qcom,pm8018-mpp",
11                     "qcom,pm8038-mpp",
12                     "qcom,pm8058-mpp",
13                     "qcom,pm8821-mpp",
14                     "qcom,pm8841-mpp",
15                     "qcom,pm8916-mpp",
16                     "qcom,pm8917-mpp",
17                     "qcom,pm8921-mpp",
18                     "qcom,pm8941-mpp",
19                     "qcom,pm8994-mpp",
20                     "qcom,pma8084-mpp",
21
22                     And must contain either "qcom,spmi-mpp" or "qcom,ssbi-mpp"
23                     if the device is on an spmi bus or an ssbi bus respectively.
24
25 - reg:
26         Usage: required
27         Value type: <prop-encoded-array>
28         Definition: Register base of the MPP block and length.
29
30 - interrupts:
31         Usage: required
32         Value type: <prop-encoded-array>
33         Definition: Must contain an array of encoded interrupt specifiers for
34                     each available MPP
35
36 - gpio-controller:
37         Usage: required
38         Value type: <none>
39         Definition: Mark the device node as a GPIO controller
40
41 - #gpio-cells:
42         Usage: required
43         Value type: <u32>
44         Definition: Must be 2;
45                     the first cell will be used to define MPP number and the
46                     second denotes the flags for this MPP
47
48 Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
49 a general description of GPIO and interrupt bindings.
50
51 Please refer to pinctrl-bindings.txt in this directory for details of the
52 common pinctrl bindings used by client devices, including the meaning of the
53 phrase "pin configuration node".
54
55 The pin configuration nodes act as a container for an arbitrary number of
56 subnodes. Each of these subnodes represents some desired configuration for a
57 pin or a list of pins. This configuration can include the
58 mux function to select on those pin(s), and various pin configuration
59 parameters, as listed below.
60
61 SUBNODES:
62
63 The name of each subnode is not important; all subnodes should be enumerated
64 and processed purely based on their content.
65
66 Each subnode only affects those parameters that are explicitly listed. In
67 other words, a subnode that lists a mux function but no pin configuration
68 parameters implies no information about any pin configuration parameters.
69 Similarly, a pin subnode that describes a pullup parameter implies no
70 information about e.g. the mux function.
71
72 The following generic properties as defined in pinctrl-bindings.txt are valid
73 to specify in a pin configuration subnode:
74
75 - pins:
76         Usage: required
77         Value type: <string-array>
78         Definition: List of MPP pins affected by the properties specified in
79                     this subnode.  Valid pins are:
80                     mpp1-mpp4 for pm8841
81                     mpp1-mpp4 for pm8916
82                     mpp1-mpp8 for pm8941
83                     mpp1-mpp4 for pma8084
84
85 - function:
86         Usage: required
87         Value type: <string>
88         Definition: Specify the alternative function to be configured for the
89                     specified pins.  Valid values are:
90                     "digital",
91                     "analog",
92                     "sink"
93
94 - bias-disable:
95         Usage: optional
96         Value type: <none>
97         Definition: The specified pins should be configured as no pull.
98
99 - bias-pull-up:
100         Usage: optional
101         Value type: <u32>
102         Definition: The specified pins should be configured as pull up.
103                     Valid values are 600, 10000 and 30000 in bidirectional mode
104                     only, i.e. when operating in qcom,analog-mode and input and
105                     outputs are enabled. The hardware ignores the configuration
106                     when operating in other modes.
107
108 - bias-high-impedance:
109         Usage: optional
110         Value type: <none>
111         Definition: The specified pins will put in high-Z mode and disabled.
112
113 - input-enable:
114         Usage: optional
115         Value type: <none>
116         Definition: The specified pins are put in input mode, i.e. their input
117                     buffer is enabled
118
119 - output-high:
120         Usage: optional
121         Value type: <none>
122         Definition: The specified pins are configured in output mode, driven
123                     high.
124
125 - output-low:
126         Usage: optional
127         Value type: <none>
128         Definition: The specified pins are configured in output mode, driven
129                     low.
130
131 - power-source:
132         Usage: optional
133         Value type: <u32>
134         Definition: Selects the power source for the specified pins. Valid power
135                     sources are defined in <dt-bindings/pinctrl/qcom,pmic-mpp.h>
136
137 - qcom,analog-level:
138         Usage: optional
139         Value type: <u32>
140         Definition: Selects the source for analog output. Valued values are
141                     defined in <dt-binding/pinctrl/qcom,pmic-mpp.h>
142                     PMIC_MPP_AOUT_LVL_*
143
144 - qcom,dtest:
145         Usage: optional
146         Value type: <u32>
147         Definition: Selects which dtest rail to be routed in the various functions.
148                     Valid values are 1-4
149
150 - qcom,amux-route:
151         Usage: optional
152         Value type: <u32>
153         Definition: Selects the source for analog input. Valid values are
154                     defined in <dt-bindings/pinctrl/qcom,pmic-mpp.h>
155                     PMIC_MPP_AMUX_ROUTE_CH5, PMIC_MPP_AMUX_ROUTE_CH6...
156 - qcom,paired:
157         Usage: optional
158         Value type: <none>
159         Definition: Indicates that the pin should be operating in paired mode.
160
161 Example:
162
163         mpps@a000 {
164                 compatible = "qcom,pm8841-mpp", "qcom,spmi-mpp";
165                 reg = <0xa000>;
166                 gpio-controller;
167                 #gpio-cells = <2>;
168                 interrupts = <4 0xa0 0 0>, <4 0xa1 0 0>, <4 0xa2 0 0>, <4 0xa3 0 0>;
169
170                 pinctrl-names = "default";
171                 pinctrl-0 = <&pm8841_default>;
172
173                 pm8841_default: default {
174                         gpio {
175                                 pins = "mpp1", "mpp2", "mpp3", "mpp4";
176                                 function = "digital";
177                                 input-enable;
178                                 power-source = <PM8841_MPP_S3>;
179                         };
180                 };
181         };