Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / pinctrl / qcom,pmic-gpio.txt
1 Qualcomm PMIC GPIO block
2
3 This binding describes the GPIO block(s) found in the 8xxx series of
4 PMIC's from Qualcomm.
5
6 - compatible:
7         Usage: required
8         Value type: <string>
9         Definition: must be one of:
10                     "qcom,pm8018-gpio"
11                     "qcom,pm8038-gpio"
12                     "qcom,pm8058-gpio"
13                     "qcom,pm8916-gpio"
14                     "qcom,pm8917-gpio"
15                     "qcom,pm8921-gpio"
16                     "qcom,pm8941-gpio"
17                     "qcom,pma8084-gpio"
18
19 - reg:
20         Usage: required
21         Value type: <prop-encoded-array>
22         Definition: Register base of the GPIO block and length.
23
24 - interrupts:
25         Usage: required
26         Value type: <prop-encoded-array>
27         Definition: Must contain an array of encoded interrupt specifiers for
28                     each available GPIO
29
30 - gpio-controller:
31         Usage: required
32         Value type: <none>
33         Definition: Mark the device node as a GPIO controller
34
35 - #gpio-cells:
36         Usage: required
37         Value type: <u32>
38         Definition: Must be 2;
39                     the first cell will be used to define gpio number and the
40                     second denotes the flags for this gpio
41
42 Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
43 a general description of GPIO and interrupt bindings.
44
45 Please refer to pinctrl-bindings.txt in this directory for details of the
46 common pinctrl bindings used by client devices, including the meaning of the
47 phrase "pin configuration node".
48
49 The pin configuration nodes act as a container for an arbitrary number of
50 subnodes. Each of these subnodes represents some desired configuration for a
51 pin or a list of pins. This configuration can include the
52 mux function to select on those pin(s), and various pin configuration
53 parameters, as listed below.
54
55
56 SUBNODES:
57
58 The name of each subnode is not important; all subnodes should be enumerated
59 and processed purely based on their content.
60
61 Each subnode only affects those parameters that are explicitly listed. In
62 other words, a subnode that lists a mux function but no pin configuration
63 parameters implies no information about any pin configuration parameters.
64 Similarly, a pin subnode that describes a pullup parameter implies no
65 information about e.g. the mux function.
66
67 The following generic properties as defined in pinctrl-bindings.txt are valid
68 to specify in a pin configuration subnode:
69
70 - pins:
71         Usage: required
72         Value type: <string-array>
73         Definition: List of gpio pins affected by the properties specified in
74                     this subnode.  Valid pins are:
75                     gpio1-gpio6 for pm8018
76                     gpio1-gpio12 for pm8038
77                     gpio1-gpio40 for pm8058
78                     gpio1-gpio4 for pm8916
79                     gpio1-gpio38 for pm8917
80                     gpio1-gpio44 for pm8921
81                     gpio1-gpio36 for pm8941
82                     gpio1-gpio22 for pma8084
83
84 - function:
85         Usage: required
86         Value type: <string>
87         Definition: Specify the alternative function to be configured for the
88                     specified pins.  Valid values are:
89                     "normal",
90                     "paired",
91                     "func1",
92                     "func2",
93                     "dtest1",
94                     "dtest2",
95                     "dtest3",
96                     "dtest4"
97
98 - bias-disable:
99         Usage: optional
100         Value type: <none>
101         Definition: The specified pins should be configured as no pull.
102
103 - bias-pull-down:
104         Usage: optional
105         Value type: <none>
106         Definition: The specified pins should be configured as pull down.
107
108 - bias-pull-up:
109         Usage: optional
110         Value type: <empty>
111         Definition: The specified pins should be configured as pull up.
112
113 - qcom,pull-up-strength:
114         Usage: optional
115         Value type: <u32>
116         Definition: Specifies the strength to use for pull up, if selected.
117                     Valid values are; as defined in
118                     <dt-bindings/pinctrl/qcom,pmic-gpio.h>:
119                     1: 30uA                     (PMIC_GPIO_PULL_UP_30)
120                     2: 1.5uA                    (PMIC_GPIO_PULL_UP_1P5)
121                     3: 31.5uA                   (PMIC_GPIO_PULL_UP_31P5)
122                     4: 1.5uA + 30uA boost       (PMIC_GPIO_PULL_UP_1P5_30)
123                     If this property is ommited 30uA strength will be used if
124                     pull up is selected
125
126 - bias-high-impedance:
127         Usage: optional
128         Value type: <none>
129         Definition: The specified pins will put in high-Z mode and disabled.
130
131 - input-enable:
132         Usage: optional
133         Value type: <none>
134         Definition: The specified pins are put in input mode.
135
136 - output-high:
137         Usage: optional
138         Value type: <none>
139         Definition: The specified pins are configured in output mode, driven
140                     high.
141
142 - output-low:
143         Usage: optional
144         Value type: <none>
145         Definition: The specified pins are configured in output mode, driven
146                     low.
147
148 - power-source:
149         Usage: optional
150         Value type: <u32>
151         Definition: Selects the power source for the specified pins. Valid
152                     power sources are defined per chip in
153                     <dt-bindings/pinctrl/qcom,pmic-gpio.h>
154
155 - qcom,drive-strength:
156         Usage: optional
157         Value type: <u32>
158         Definition: Selects the drive strength for the specified pins. Value
159                     drive strengths are:
160                     0: no (PMIC_GPIO_STRENGTH_NO)
161                     1: high (PMIC_GPIO_STRENGTH_HIGH) 0.9mA @ 1.8V - 1.9mA @ 2.6V
162                     2: medium (PMIC_GPIO_STRENGTH_MED) 0.6mA @ 1.8V - 1.25mA @ 2.6V
163                     3: low (PMIC_GPIO_STRENGTH_LOW) 0.15mA @ 1.8V - 0.3mA @ 2.6V
164                     as defined in <dt-bindings/pinctrl/qcom,pmic-gpio.h>
165
166 - drive-push-pull:
167         Usage: optional
168         Value type: <none>
169         Definition: The specified pins are configured in push-pull mode.
170
171 - drive-open-drain:
172         Usage: optional
173         Value type: <none>
174         Definition: The specified pins are configured in open-drain mode.
175
176 - drive-open-source:
177         Usage: optional
178         Value type: <none>
179         Definition: The specified pins are configured in open-source mode.
180
181 Example:
182
183         pm8921_gpio: gpio@150 {
184                 compatible = "qcom,pm8921-gpio";
185                 reg = <0x150 0x160>;
186                 interrupts = <192 1>, <193 1>, <194 1>,
187                              <195 1>, <196 1>, <197 1>,
188                              <198 1>, <199 1>, <200 1>,
189                              <201 1>, <202 1>, <203 1>,
190                              <204 1>, <205 1>, <206 1>,
191                              <207 1>, <208 1>, <209 1>,
192                              <210 1>, <211 1>, <212 1>,
193                              <213 1>, <214 1>, <215 1>,
194                              <216 1>, <217 1>, <218 1>,
195                              <219 1>, <220 1>, <221 1>,
196                              <222 1>, <223 1>, <224 1>,
197                              <225 1>, <226 1>, <227 1>,
198                              <228 1>, <229 1>, <230 1>,
199                              <231 1>, <232 1>, <233 1>,
200                              <234 1>, <235 1>;
201
202                 gpio-controller;
203                 #gpio-cells = <2>;
204
205                 pm8921_gpio_keys: gpio-keys {
206                         volume-keys {
207                                 pins = "gpio20", "gpio21";
208                                 function = "normal";
209
210                                 input-enable;
211                                 bias-pull-up;
212                                 drive-push-pull;
213                                 qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
214                                 power-source = <PM8921_GPIO_S4>;
215                         };
216                 };
217         };