mfd: qcom-rpm: Add support for pm8018 RPM Regulator
[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
64 - vdd_l0_l1_lvs-supply:
65 - vdd_l2_l11_l12-supply:
66 - vdd_l3_l4_l5-supply:
67 - vdd_l6_l7-supply:
68 - vdd_l8-supply:
69 - vdd_l9-supply:
70 - vdd_l10-supply:
71 - vdd_l13_l16-supply:
72 - vdd_l14_l15-supply:
73 - vdd_l17_l18-supply:
74 - vdd_l19_l20-supply:
75 - vdd_l21-supply:
76 - vdd_l22-supply:
77 - vdd_l23_l24_l25-supply:
78 - vdd_ncp-supply:
79 - vdd_s0-supply:
80 - vdd_s1-supply:
81 - vdd_s2-supply:
82 - vdd_s3-supply:
83 - vdd_s4-supply:
84         Usage: optional (pm8058 only)
85         Value type: <phandle>
86         Definition: reference to regulator supplying the input pin, as
87                     described in the data sheet
88
89 - lvs0_in-supply:
90 - lvs1_in-supply:
91 - lvs2_in-supply:
92 - lvs3_in-supply:
93 - mvs_in-supply:
94 - vdd_l0-supply:
95 - vdd_l1-supply:
96 - vdd_l2-supply:
97 - vdd_l3-supply:
98 - vdd_l4-supply:
99 - vdd_l5-supply:
100 - vdd_l6-supply:
101 - vdd_s0-supply:
102 - vdd_s1-supply:
103 - vdd_s2-supply:
104 - vdd_s3-supply:
105 - vdd_s4-supply:
106         Usage: optional (pm8901 only)
107         Value type: <phandle>
108         Definition: reference to regulator supplying the input pin, as
109                     described in the data sheet
110
111 - vdd_l1_l2_l12_l18-supply:
112 - vdd_l3_l15_l17-supply:
113 - vdd_l4_l14-supply:
114 - vdd_l5_l8_l16-supply:
115 - vdd_l6_l7-supply:
116 - vdd_l9_l11-supply:
117 - vdd_l10_l22-supply:
118 - vdd_l21_l23_l29-supply:
119 - vdd_l24-supply:
120 - vdd_l25-supply:
121 - vdd_l26-supply:
122 - vdd_l27-supply:
123 - vdd_l28-supply:
124 - vdd_ncp-supply:
125 - vdd_s1-supply:
126 - vdd_s2-supply:
127 - vdd_s4-supply:
128 - vdd_s5-supply:
129 - vdd_s6-supply:
130 - vdd_s7-supply:
131 - vdd_s8-supply:
132 - vin_5vs-supply:
133 - vin_lvs1_3_6-supply:
134 - vin_lvs2-supply:
135 - vin_lvs4_5_7-supply:
136         Usage: optional (pm8921 only)
137         Value type: <phandle>
138         Definition: reference to regulator supplying the input pin, as
139                     described in the data sheet
140
141 The regulator node houses sub-nodes for each regulator within the device. Each
142 sub-node is identified using the node's name, with valid values listed for each
143 of the pmics below.
144
145 pm8058:
146         l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15,
147         l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, s0, s1, s2, s3, s4,
148         lvs0, lvs1, ncp
149
150 pm8901:
151         l0, l1, l2, l3, l4, l5, l6, s0, s1, s2, s3, s4, lvs0, lvs1, lvs2, lvs3,
152         mvs
153
154 pm8921:
155         s1, s2, s3, s4, s7, s8, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
156         l12, l14, l15, l16, l17, l18, l21, l22, l23, l24, l25, l26, l27, l28,
157         l29, lvs1, lvs2, lvs3, lvs4, lvs5, lvs6, lvs7, usb-switch, hdmi-switch,
158         ncp
159
160 The content of each sub-node is defined by the standard binding for regulators -
161 see regulator.txt - with additional custom properties described below:
162
163 === Switch-mode Power Supply regulator custom properties
164
165 - bias-pull-down:
166         Usage: optional
167         Value type: <empty>
168         Definition: enable pull down of the regulator when inactive
169
170 - qcom,switch-mode-frequency:
171         Usage: required
172         Value type: <u32>
173         Definition: Frequency (Hz) of the switch-mode power supply;
174                     must be one of:
175                     19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
176                     2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
177                     1480000, 1370000, 1280000, 1200000
178
179 - qcom,force-mode:
180         Usage: optional (default if no other qcom,force-mode is specified)
181         Value type: <u32>
182         Definition: indicates that the regulator should be forced to a
183                    particular mode, valid values are:
184                    QCOM_RPM_FORCE_MODE_NONE - do not force any mode
185                    QCOM_RPM_FORCE_MODE_LPM - force into low power mode
186                    QCOM_RPM_FORCE_MODE_HPM - force into high power mode
187                    QCOM_RPM_FORCE_MODE_AUTO - allow regulator to automatically
188                                               select its own mode based on
189                                               realtime current draw, only for:
190                                               pm8921 smps and ftsmps
191
192 - qcom,power-mode-hysteretic:
193         Usage: optional
194         Value type: <empty>
195         Definition: select that the power supply should operate in hysteretic
196                     mode, instead of the default pwm mode
197
198 === Low-dropout regulator custom properties
199
200 - bias-pull-down:
201         Usage: optional
202         Value type: <empty>
203         Definition: enable pull down of the regulator when inactive
204
205 - qcom,force-mode:
206         Usage: optional
207         Value type: <u32>
208         Definition: indicates that the regulator should not be forced to any
209                    particular mode, valid values are:
210                    QCOM_RPM_FORCE_MODE_NONE - do not force any mode
211                    QCOM_RPM_FORCE_MODE_LPM - force into low power mode
212                    QCOM_RPM_FORCE_MODE_HPM - force into high power mode
213                    QCOM_RPM_FORCE_MODE_BYPASS - set regulator to use bypass
214                                                 mode, i.e.  to act as a switch
215                                                 and not regulate, only for:
216                                                 pm8921 pldo, nldo and nldo1200
217
218 === Negative Charge Pump custom properties
219
220 - qcom,switch-mode-frequency:
221         Usage: required
222         Value type: <u32>
223         Definition: Frequency (Hz) of the swith mode power supply;
224                     must be one of:
225                     19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
226                     2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
227                     1480000, 1370000, 1280000, 1200000
228
229 = EXAMPLE
230
231         #include <dt-bindings/mfd/qcom-rpm.h>
232
233         rpm@108000 {
234                 compatible = "qcom,rpm-msm8960";
235                 reg = <0x108000 0x1000>;
236                 qcom,ipc = <&apcs 0x8 2>;
237
238                 interrupts = <0 19 0>, <0 21 0>, <0 22 0>;
239                 interrupt-names = "ack", "err", "wakeup";
240
241                 regulators {
242                         compatible = "qcom,rpm-pm8921-regulators";
243                         vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
244
245                         s1 {
246                                 regulator-min-microvolt = <1225000>;
247                                 regulator-max-microvolt = <1225000>;
248
249                                 bias-pull-down;
250
251                                 qcom,switch-mode-frequency = <3200000>;
252                         };
253
254                         pm8921_s4: s4 {
255                                 regulator-min-microvolt = <1800000>;
256                                 regulator-max-microvolt = <1800000>;
257
258                                 qcom,switch-mode-frequency = <1600000>;
259                                 bias-pull-down;
260
261                                 qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
262                         };
263                 };
264         };
265