xref: /freebsd/sys/contrib/device-tree/Bindings/pinctrl/qcom,pmic-gpio.txt (revision c66ec88fed842fbaad62c30d510644ceb7bd2d71)
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,pm8005-gpio"
11		    "qcom,pm8018-gpio"
12		    "qcom,pm8038-gpio"
13		    "qcom,pm8058-gpio"
14		    "qcom,pm8916-gpio"
15		    "qcom,pm8917-gpio"
16		    "qcom,pm8921-gpio"
17		    "qcom,pm8941-gpio"
18		    "qcom,pm8950-gpio"
19		    "qcom,pm8994-gpio"
20		    "qcom,pm8998-gpio"
21		    "qcom,pma8084-gpio"
22		    "qcom,pmi8950-gpio"
23		    "qcom,pmi8994-gpio"
24		    "qcom,pmi8998-gpio"
25		    "qcom,pms405-gpio"
26		    "qcom,pm660-gpio"
27		    "qcom,pm660l-gpio"
28		    "qcom,pm8150-gpio"
29		    "qcom,pm8150b-gpio"
30		    "qcom,pm6150-gpio"
31		    "qcom,pm6150l-gpio"
32
33		    And must contain either "qcom,spmi-gpio" or "qcom,ssbi-gpio"
34		    if the device is on an spmi bus or an ssbi bus respectively
35
36- reg:
37	Usage: required
38	Value type: <prop-encoded-array>
39	Definition: Register base of the GPIO block and length.
40
41- interrupts:
42	Usage: required
43	Value type: <prop-encoded-array>
44	Definition: Must contain an array of encoded interrupt specifiers for
45		    each available GPIO
46
47- gpio-controller:
48	Usage: required
49	Value type: <none>
50	Definition: Mark the device node as a GPIO controller
51
52- #gpio-cells:
53	Usage: required
54	Value type: <u32>
55	Definition: Must be 2;
56		    the first cell will be used to define gpio number and the
57		    second denotes the flags for this gpio
58
59Please refer to ../gpio/gpio.txt and ../interrupt-controller/interrupts.txt for
60a general description of GPIO and interrupt bindings.
61
62Please refer to pinctrl-bindings.txt in this directory for details of the
63common pinctrl bindings used by client devices, including the meaning of the
64phrase "pin configuration node".
65
66The pin configuration nodes act as a container for an arbitrary number of
67subnodes. Each of these subnodes represents some desired configuration for a
68pin or a list of pins. This configuration can include the
69mux function to select on those pin(s), and various pin configuration
70parameters, as listed below.
71
72
73SUBNODES:
74
75The name of each subnode is not important; all subnodes should be enumerated
76and processed purely based on their content.
77
78Each subnode only affects those parameters that are explicitly listed. In
79other words, a subnode that lists a mux function but no pin configuration
80parameters implies no information about any pin configuration parameters.
81Similarly, a pin subnode that describes a pullup parameter implies no
82information about e.g. the mux function.
83
84The following generic properties as defined in pinctrl-bindings.txt are valid
85to specify in a pin configuration subnode:
86
87- pins:
88	Usage: required
89	Value type: <string-array>
90	Definition: List of gpio pins affected by the properties specified in
91		    this subnode.  Valid pins are:
92		    gpio1-gpio4 for pm8005
93		    gpio1-gpio6 for pm8018
94		    gpio1-gpio12 for pm8038
95		    gpio1-gpio40 for pm8058
96		    gpio1-gpio4 for pm8916
97		    gpio1-gpio38 for pm8917
98		    gpio1-gpio44 for pm8921
99		    gpio1-gpio36 for pm8941
100		    gpio1-gpio8 for pm8950 (hole on gpio3)
101		    gpio1-gpio22 for pm8994
102		    gpio1-gpio26 for pm8998
103		    gpio1-gpio22 for pma8084
104		    gpio1-gpio2 for pmi8950
105		    gpio1-gpio10 for pmi8994
106		    gpio1-gpio12 for pms405 (holes on gpio1, gpio9 and gpio10)
107		    gpio1-gpio10 for pm8150 (holes on gpio2, gpio5, gpio7
108					     and gpio8)
109		    gpio1-gpio12 for pm8150b (holes on gpio3, gpio4, gpio7)
110		    gpio1-gpio12 for pm8150l (hole on gpio7)
111		    gpio1-gpio10 for pm6150
112		    gpio1-gpio12 for pm6150l
113
114- function:
115	Usage: required
116	Value type: <string>
117	Definition: Specify the alternative function to be configured for the
118		    specified pins.  Valid values are:
119		    "normal",
120		    "paired",
121		    "func1",
122		    "func2",
123		    "dtest1",
124		    "dtest2",
125		    "dtest3",
126		    "dtest4",
127		    And following values are supported by LV/MV GPIO subtypes:
128		    "func3",
129		    "func4"
130
131- bias-disable:
132	Usage: optional
133	Value type: <none>
134	Definition: The specified pins should be configured as no pull.
135
136- bias-pull-down:
137	Usage: optional
138	Value type: <none>
139	Definition: The specified pins should be configured as pull down.
140
141- bias-pull-up:
142	Usage: optional
143	Value type: <empty>
144	Definition: The specified pins should be configured as pull up.
145
146- qcom,pull-up-strength:
147	Usage: optional
148	Value type: <u32>
149	Definition: Specifies the strength to use for pull up, if selected.
150		    Valid values are; as defined in
151		    <dt-bindings/pinctrl/qcom,pmic-gpio.h>:
152		    1: 30uA                     (PMIC_GPIO_PULL_UP_30)
153		    2: 1.5uA                    (PMIC_GPIO_PULL_UP_1P5)
154		    3: 31.5uA                   (PMIC_GPIO_PULL_UP_31P5)
155		    4: 1.5uA + 30uA boost       (PMIC_GPIO_PULL_UP_1P5_30)
156		    If this property is omitted 30uA strength will be used if
157		    pull up is selected
158
159- bias-high-impedance:
160	Usage: optional
161	Value type: <none>
162	Definition: The specified pins will put in high-Z mode and disabled.
163
164- input-enable:
165	Usage: optional
166	Value type: <none>
167	Definition: The specified pins are put in input mode.
168
169- output-high:
170	Usage: optional
171	Value type: <none>
172	Definition: The specified pins are configured in output mode, driven
173		    high.
174
175- output-low:
176	Usage: optional
177	Value type: <none>
178	Definition: The specified pins are configured in output mode, driven
179		    low.
180
181- power-source:
182	Usage: optional
183	Value type: <u32>
184	Definition: Selects the power source for the specified pins. Valid
185		    power sources are defined per chip in
186		    <dt-bindings/pinctrl/qcom,pmic-gpio.h>
187
188- qcom,drive-strength:
189	Usage: optional
190	Value type: <u32>
191	Definition: Selects the drive strength for the specified pins. Value
192		    drive strengths are:
193		    0: no (PMIC_GPIO_STRENGTH_NO)
194		    1: high (PMIC_GPIO_STRENGTH_HIGH) 0.9mA @ 1.8V - 1.9mA @ 2.6V
195		    2: medium (PMIC_GPIO_STRENGTH_MED) 0.6mA @ 1.8V - 1.25mA @ 2.6V
196		    3: low (PMIC_GPIO_STRENGTH_LOW) 0.15mA @ 1.8V - 0.3mA @ 2.6V
197		    as defined in <dt-bindings/pinctrl/qcom,pmic-gpio.h>
198
199- drive-push-pull:
200	Usage: optional
201	Value type: <none>
202	Definition: The specified pins are configured in push-pull mode.
203
204- drive-open-drain:
205	Usage: optional
206	Value type: <none>
207	Definition: The specified pins are configured in open-drain mode.
208
209- drive-open-source:
210	Usage: optional
211	Value type: <none>
212	Definition: The specified pins are configured in open-source mode.
213
214- qcom,analog-pass:
215	Usage: optional
216	Value type: <none>
217	Definition: The specified pins are configured in analog-pass-through mode.
218
219- qcom,atest:
220	Usage: optional
221	Value type: <u32>
222	Definition: Selects ATEST rail to route to GPIO when it's configured
223		    in analog-pass-through mode.
224		    Valid values are 1-4 corresponding to ATEST1 to ATEST4.
225
226- qcom,dtest-buffer:
227	Usage: optional
228	Value type: <u32>
229	Definition: Selects DTEST rail to route to GPIO when it's configured
230		    as digital input.
231		    Valid values are 1-4 corresponding to DTEST1 to DTEST4.
232
233Example:
234
235	pm8921_gpio: gpio@150 {
236		compatible = "qcom,pm8921-gpio", "qcom,ssbi-gpio";
237		reg = <0x150 0x160>;
238		interrupts = <192 1>, <193 1>, <194 1>,
239			     <195 1>, <196 1>, <197 1>,
240			     <198 1>, <199 1>, <200 1>,
241			     <201 1>, <202 1>, <203 1>,
242			     <204 1>, <205 1>, <206 1>,
243			     <207 1>, <208 1>, <209 1>,
244			     <210 1>, <211 1>, <212 1>,
245			     <213 1>, <214 1>, <215 1>,
246			     <216 1>, <217 1>, <218 1>,
247			     <219 1>, <220 1>, <221 1>,
248			     <222 1>, <223 1>, <224 1>,
249			     <225 1>, <226 1>, <227 1>,
250			     <228 1>, <229 1>, <230 1>,
251			     <231 1>, <232 1>, <233 1>,
252			     <234 1>, <235 1>;
253
254		gpio-controller;
255		#gpio-cells = <2>;
256
257		pm8921_gpio_keys: gpio-keys {
258			volume-keys {
259				pins = "gpio20", "gpio21";
260				function = "normal";
261
262				input-enable;
263				bias-pull-up;
264				drive-push-pull;
265				qcom,drive-strength = <PMIC_GPIO_STRENGTH_NO>;
266				power-source = <PM8921_GPIO_S4>;
267			};
268		};
269	};
270