Merge tag 'cris-for-4.9' of git://git.kernel.org/pub/scm/linux/kernel/git/jesper...
[cascardo/linux.git] / Documentation / devicetree / bindings / mfd / qcom-rpm.txt
1 Qualcomm Resource Power Manager (RPM)
2
3 This driver is used to interface with the Resource Power Manager (RPM) found in
4 various Qualcomm platforms. The RPM allows each component in the system to vote
5 for state of the system resources, such as clocks, regulators and bus
6 frequencies.
7
8 - compatible:
9         Usage: required
10         Value type: <string>
11         Definition: must be one of:
12                     "qcom,rpm-apq8064"
13                     "qcom,rpm-msm8660"
14                     "qcom,rpm-msm8960"
15                     "qcom,rpm-ipq8064"
16                     "qcom,rpm-mdm9615"
17
18 - reg:
19         Usage: required
20         Value type: <prop-encoded-array>
21         Definition: base address and size of the RPM's message ram
22
23 - interrupts:
24         Usage: required
25         Value type: <prop-encoded-array>
26         Definition: three entries specifying the RPM's:
27                     1. acknowledgement interrupt
28                     2. error interrupt
29                     3. wakeup interrupt
30
31 - interrupt-names:
32         Usage: required
33         Value type: <string-array>
34         Definition: must be the three strings "ack", "err" and "wakeup", in order
35
36 - qcom,ipc:
37         Usage: required
38         Value type: <prop-encoded-array>
39
40         Definition: three entries specifying the outgoing ipc bit used for
41                     signaling the RPM:
42                     - phandle to a syscon node representing the apcs registers
43                     - u32 representing offset to the register within the syscon
44                     - u32 representing the ipc bit within the register
45
46
47 = SUBNODES
48
49 The RPM exposes resources to its subnodes. The below bindings specify the set
50 of valid subnodes that can operate on these resources.
51
52 == Regulators
53
54 Regulator nodes are identified by their compatible:
55
56 - compatible:
57         Usage: required
58         Value type: <string>
59         Definition: must be one of:
60                     "qcom,rpm-pm8058-regulators"
61                     "qcom,rpm-pm8901-regulators"
62                     "qcom,rpm-pm8921-regulators"
63                     "qcom,rpm-pm8018-regulators"
64
65 - vdd_l0_l1_lvs-supply:
66 - vdd_l2_l11_l12-supply:
67 - vdd_l3_l4_l5-supply:
68 - vdd_l6_l7-supply:
69 - vdd_l8-supply:
70 - vdd_l9-supply:
71 - vdd_l10-supply:
72 - vdd_l13_l16-supply:
73 - vdd_l14_l15-supply:
74 - vdd_l17_l18-supply:
75 - vdd_l19_l20-supply:
76 - vdd_l21-supply:
77 - vdd_l22-supply:
78 - vdd_l23_l24_l25-supply:
79 - vdd_ncp-supply:
80 - vdd_s0-supply:
81 - vdd_s1-supply:
82 - vdd_s2-supply:
83 - vdd_s3-supply:
84 - vdd_s4-supply:
85         Usage: optional (pm8058 only)
86         Value type: <phandle>
87         Definition: reference to regulator supplying the input pin, as
88                     described in the data sheet
89
90 - lvs0_in-supply:
91 - lvs1_in-supply:
92 - lvs2_in-supply:
93 - lvs3_in-supply:
94 - mvs_in-supply:
95 - vdd_l0-supply:
96 - vdd_l1-supply:
97 - vdd_l2-supply:
98 - vdd_l3-supply:
99 - vdd_l4-supply:
100 - vdd_l5-supply:
101 - vdd_l6-supply:
102 - vdd_s0-supply:
103 - vdd_s1-supply:
104 - vdd_s2-supply:
105 - vdd_s3-supply:
106 - vdd_s4-supply:
107         Usage: optional (pm8901 only)
108         Value type: <phandle>
109         Definition: reference to regulator supplying the input pin, as
110                     described in the data sheet
111
112 - vdd_l1_l2_l12_l18-supply:
113 - vdd_l3_l15_l17-supply:
114 - vdd_l4_l14-supply:
115 - vdd_l5_l8_l16-supply:
116 - vdd_l6_l7-supply:
117 - vdd_l9_l11-supply:
118 - vdd_l10_l22-supply:
119 - vdd_l21_l23_l29-supply:
120 - vdd_l24-supply:
121 - vdd_l25-supply:
122 - vdd_l26-supply:
123 - vdd_l27-supply:
124 - vdd_l28-supply:
125 - vdd_ncp-supply:
126 - vdd_s1-supply:
127 - vdd_s2-supply:
128 - vdd_s4-supply:
129 - vdd_s5-supply:
130 - vdd_s6-supply:
131 - vdd_s7-supply:
132 - vdd_s8-supply:
133 - vin_5vs-supply:
134 - vin_lvs1_3_6-supply:
135 - vin_lvs2-supply:
136 - vin_lvs4_5_7-supply:
137         Usage: optional (pm8921 only)
138         Value type: <phandle>
139         Definition: reference to regulator supplying the input pin, as
140                     described in the data sheet
141
142 - vin_lvs1-supply:
143 - vdd_l7-supply:
144 - vdd_l8-supply:
145 - vdd_l9_l10_l11_l12-supply:
146         Usage: optional (pm8018 only)
147         Value type: <phandle>
148         Definition: reference to regulator supplying the input pin, as
149                     described in the data sheet
150
151 The regulator node houses sub-nodes for each regulator within the device. Each
152 sub-node is identified using the node's name, with valid values listed for each
153 of the pmics below.
154
155 pm8058:
156         l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15,
157         l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, s0, s1, s2, s3, s4,
158         lvs0, lvs1, ncp
159
160 pm8901:
161         l0, l1, l2, l3, l4, l5, l6, s0, s1, s2, s3, s4, lvs0, lvs1, lvs2, lvs3,
162         mvs
163
164 pm8921:
165         s1, s2, s3, s4, s7, s8, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
166         l12, l14, l15, l16, l17, l18, l21, l22, l23, l24, l25, l26, l27, l28,
167         l29, lvs1, lvs2, lvs3, lvs4, lvs5, lvs6, lvs7, usb-switch, hdmi-switch,
168         ncp
169
170 pm8018:
171         s1, s2, s3, s4, s5, , l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
172         l12, l14, lvs1
173
174 The content of each sub-node is defined by the standard binding for regulators -
175 see regulator.txt - with additional custom properties described below:
176
177 === Switch-mode Power Supply regulator custom properties
178
179 - bias-pull-down:
180         Usage: optional
181         Value type: <empty>
182         Definition: enable pull down of the regulator when inactive
183
184 - qcom,switch-mode-frequency:
185         Usage: required
186         Value type: <u32>
187         Definition: Frequency (Hz) of the switch-mode power supply;
188                     must be one of:
189                     19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
190                     2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
191                     1480000, 1370000, 1280000, 1200000
192
193 - qcom,force-mode:
194         Usage: optional (default if no other qcom,force-mode is specified)
195         Value type: <u32>
196         Definition: indicates that the regulator should be forced to a
197                    particular mode, valid values are:
198                    QCOM_RPM_FORCE_MODE_NONE - do not force any mode
199                    QCOM_RPM_FORCE_MODE_LPM - force into low power mode
200                    QCOM_RPM_FORCE_MODE_HPM - force into high power mode
201                    QCOM_RPM_FORCE_MODE_AUTO - allow regulator to automatically
202                                               select its own mode based on
203                                               realtime current draw, only for:
204                                               pm8921 smps and ftsmps
205
206 - qcom,power-mode-hysteretic:
207         Usage: optional
208         Value type: <empty>
209         Definition: select that the power supply should operate in hysteretic
210                     mode, instead of the default pwm mode
211
212 === Low-dropout regulator custom properties
213
214 - bias-pull-down:
215         Usage: optional
216         Value type: <empty>
217         Definition: enable pull down of the regulator when inactive
218
219 - qcom,force-mode:
220         Usage: optional
221         Value type: <u32>
222         Definition: indicates that the regulator should not be forced to any
223                    particular mode, valid values are:
224                    QCOM_RPM_FORCE_MODE_NONE - do not force any mode
225                    QCOM_RPM_FORCE_MODE_LPM - force into low power mode
226                    QCOM_RPM_FORCE_MODE_HPM - force into high power mode
227                    QCOM_RPM_FORCE_MODE_BYPASS - set regulator to use bypass
228                                                 mode, i.e.  to act as a switch
229                                                 and not regulate, only for:
230                                                 pm8921 pldo, nldo and nldo1200
231
232 === Negative Charge Pump custom properties
233
234 - qcom,switch-mode-frequency:
235         Usage: required
236         Value type: <u32>
237         Definition: Frequency (Hz) of the swith mode power supply;
238                     must be one of:
239                     19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
240                     2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
241                     1480000, 1370000, 1280000, 1200000
242
243 = EXAMPLE
244
245         #include <dt-bindings/mfd/qcom-rpm.h>
246
247         rpm@108000 {
248                 compatible = "qcom,rpm-msm8960";
249                 reg = <0x108000 0x1000>;
250                 qcom,ipc = <&apcs 0x8 2>;
251
252                 interrupts = <0 19 0>, <0 21 0>, <0 22 0>;
253                 interrupt-names = "ack", "err", "wakeup";
254
255                 regulators {
256                         compatible = "qcom,rpm-pm8921-regulators";
257                         vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
258
259                         s1 {
260                                 regulator-min-microvolt = <1225000>;
261                                 regulator-max-microvolt = <1225000>;
262
263                                 bias-pull-down;
264
265                                 qcom,switch-mode-frequency = <3200000>;
266                         };
267
268                         pm8921_s4: s4 {
269                                 regulator-min-microvolt = <1800000>;
270                                 regulator-max-microvolt = <1800000>;
271
272                                 qcom,switch-mode-frequency = <1600000>;
273                                 bias-pull-down;
274
275                                 qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
276                         };
277                 };
278         };
279