1Qualcomm PMIC GPIO block
2
3This binding describes the GPIO block(s) found in the 8xxx series of
4PMIC'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
42Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
43a general description of GPIO and interrupt bindings.
44
45Please refer to pinctrl-bindings.txt in this directory for details of the
46common pinctrl bindings used by client devices, including the meaning of the
47phrase "pin configuration node".
48
49The pin configuration nodes act as a container for an arbitrary number of
50subnodes. Each of these subnodes represents some desired configuration for a
51pin or a list of pins. This configuration can include the
52mux function to select on those pin(s), and various pin configuration
53parameters, as listed below.
54
55
56SUBNODES:
57
58The name of each subnode is not important; all subnodes should be enumerated
59and processed purely based on their content.
60
61Each subnode only affects those parameters that are explicitly listed. In
62other words, a subnode that lists a mux function but no pin configuration
63parameters implies no information about any pin configuration parameters.
64Similarly, a pin subnode that describes a pullup parameter implies no
65information about e.g. the mux function.
66
67The following generic properties as defined in pinctrl-bindings.txt are valid
68to 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
181Example:
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	};
218