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