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