1Qualcomm Resource Power Manager (RPM)
2
3This driver is used to interface with the Resource Power Manager (RPM) found in
4various Qualcomm platforms. The RPM allows each component in the system to vote
5for state of the system resources, such as clocks, regulators and bus
6frequencies.
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
49The RPM exposes resources to its subnodes. The below bindings specify the set
50of valid subnodes that can operate on these resources.
51
52== Regulators
53
54Regulator 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
151The regulator node houses sub-nodes for each regulator within the device. Each
152sub-node is identified using the node's name, with valid values listed for each
153of the pmics below.
154
155pm8058:
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
160pm8901:
161	l0, l1, l2, l3, l4, l5, l6, s0, s1, s2, s3, s4, lvs0, lvs1, lvs2, lvs3,
162	mvs
163
164pm8921:
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
170pm8018:
171	s1, s2, s3, s4, s5, , l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
172	l12, l14, lvs1
173
174The content of each sub-node is defined by the standard binding for regulators -
175see 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 switch 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
280