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