0001 Qualcomm Resource Power Manager (RPM)
0002
0003 This driver is used to interface with the Resource Power Manager (RPM) found in
0004 various Qualcomm platforms. The RPM allows each component in the system to vote
0005 for state of the system resources, such as clocks, regulators and bus
0006 frequencies.
0007
0008 - compatible:
0009 Usage: required
0010 Value type: <string>
0011 Definition: must be one of:
0012 "qcom,rpm-apq8064"
0013 "qcom,rpm-msm8660"
0014 "qcom,rpm-msm8960"
0015 "qcom,rpm-ipq8064"
0016 "qcom,rpm-mdm9615"
0017
0018 - reg:
0019 Usage: required
0020 Value type: <prop-encoded-array>
0021 Definition: base address and size of the RPM's message ram
0022
0023 - interrupts:
0024 Usage: required
0025 Value type: <prop-encoded-array>
0026 Definition: three entries specifying the RPM's:
0027 1. acknowledgement interrupt
0028 2. error interrupt
0029 3. wakeup interrupt
0030
0031 - interrupt-names:
0032 Usage: required
0033 Value type: <string-array>
0034 Definition: must be the three strings "ack", "err" and "wakeup", in order
0035
0036 - qcom,ipc:
0037 Usage: required
0038 Value type: <prop-encoded-array>
0039
0040 Definition: three entries specifying the outgoing ipc bit used for
0041 signaling the RPM:
0042 - phandle to a syscon node representing the apcs registers
0043 - u32 representing offset to the register within the syscon
0044 - u32 representing the ipc bit within the register
0045
0046
0047 = SUBNODES
0048
0049 The RPM exposes resources to its subnodes. The below bindings specify the set
0050 of valid subnodes that can operate on these resources.
0051
0052 == Regulators
0053
0054 Regulator nodes are identified by their compatible:
0055
0056 - compatible:
0057 Usage: required
0058 Value type: <string>
0059 Definition: must be one of:
0060 "qcom,rpm-pm8058-regulators"
0061 "qcom,rpm-pm8901-regulators"
0062 "qcom,rpm-pm8921-regulators"
0063 "qcom,rpm-pm8018-regulators"
0064 "qcom,rpm-smb208-regulators"
0065
0066 - vdd_l0_l1_lvs-supply:
0067 - vdd_l2_l11_l12-supply:
0068 - vdd_l3_l4_l5-supply:
0069 - vdd_l6_l7-supply:
0070 - vdd_l8-supply:
0071 - vdd_l9-supply:
0072 - vdd_l10-supply:
0073 - vdd_l13_l16-supply:
0074 - vdd_l14_l15-supply:
0075 - vdd_l17_l18-supply:
0076 - vdd_l19_l20-supply:
0077 - vdd_l21-supply:
0078 - vdd_l22-supply:
0079 - vdd_l23_l24_l25-supply:
0080 - vdd_ncp-supply:
0081 - vdd_s0-supply:
0082 - vdd_s1-supply:
0083 - vdd_s2-supply:
0084 - vdd_s3-supply:
0085 - vdd_s4-supply:
0086 Usage: optional (pm8058 only)
0087 Value type: <phandle>
0088 Definition: reference to regulator supplying the input pin, as
0089 described in the data sheet
0090
0091 - lvs0_in-supply:
0092 - lvs1_in-supply:
0093 - lvs2_in-supply:
0094 - lvs3_in-supply:
0095 - mvs_in-supply:
0096 - vdd_l0-supply:
0097 - vdd_l1-supply:
0098 - vdd_l2-supply:
0099 - vdd_l3-supply:
0100 - vdd_l4-supply:
0101 - vdd_l5-supply:
0102 - vdd_l6-supply:
0103 - vdd_s0-supply:
0104 - vdd_s1-supply:
0105 - vdd_s2-supply:
0106 - vdd_s3-supply:
0107 - vdd_s4-supply:
0108 Usage: optional (pm8901 only)
0109 Value type: <phandle>
0110 Definition: reference to regulator supplying the input pin, as
0111 described in the data sheet
0112
0113 - vdd_l1_l2_l12_l18-supply:
0114 - vdd_l3_l15_l17-supply:
0115 - vdd_l4_l14-supply:
0116 - vdd_l5_l8_l16-supply:
0117 - vdd_l6_l7-supply:
0118 - vdd_l9_l11-supply:
0119 - vdd_l10_l22-supply:
0120 - vdd_l21_l23_l29-supply:
0121 - vdd_l24-supply:
0122 - vdd_l25-supply:
0123 - vdd_l26-supply:
0124 - vdd_l27-supply:
0125 - vdd_l28-supply:
0126 - vdd_ncp-supply:
0127 - vdd_s1-supply:
0128 - vdd_s2-supply:
0129 - vdd_s4-supply:
0130 - vdd_s5-supply:
0131 - vdd_s6-supply:
0132 - vdd_s7-supply:
0133 - vdd_s8-supply:
0134 - vin_5vs-supply:
0135 - vin_lvs1_3_6-supply:
0136 - vin_lvs2-supply:
0137 - vin_lvs4_5_7-supply:
0138 Usage: optional (pm8921 only)
0139 Value type: <phandle>
0140 Definition: reference to regulator supplying the input pin, as
0141 described in the data sheet
0142
0143 - vin_lvs1-supply:
0144 - vdd_l7-supply:
0145 - vdd_l8-supply:
0146 - vdd_l9_l10_l11_l12-supply:
0147 Usage: optional (pm8018 only)
0148 Value type: <phandle>
0149 Definition: reference to regulator supplying the input pin, as
0150 described in the data sheet
0151
0152 The regulator node houses sub-nodes for each regulator within the device. Each
0153 sub-node is identified using the node's name, with valid values listed for each
0154 of the pmics below.
0155
0156 pm8058:
0157 l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15,
0158 l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, s0, s1, s2, s3, s4,
0159 lvs0, lvs1, ncp
0160
0161 pm8901:
0162 l0, l1, l2, l3, l4, l5, l6, s0, s1, s2, s3, s4, lvs0, lvs1, lvs2, lvs3,
0163 mvs
0164
0165 pm8921:
0166 s1, s2, s3, s4, s7, s8, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
0167 l12, l14, l15, l16, l17, l18, l21, l22, l23, l24, l25, l26, l27, l28,
0168 l29, lvs1, lvs2, lvs3, lvs4, lvs5, lvs6, lvs7, usb-switch, hdmi-switch,
0169 ncp
0170
0171 pm8018:
0172 s1, s2, s3, s4, s5, , l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
0173 l12, l14, lvs1
0174
0175 smb208:
0176 s1a, s1b, s2a, s2b
0177
0178 The content of each sub-node is defined by the standard binding for regulators -
0179 see regulator.txt - with additional custom properties described below:
0180
0181 === Switch-mode Power Supply regulator custom properties
0182
0183 - bias-pull-down:
0184 Usage: optional
0185 Value type: <empty>
0186 Definition: enable pull down of the regulator when inactive
0187
0188 - qcom,switch-mode-frequency:
0189 Usage: required
0190 Value type: <u32>
0191 Definition: Frequency (Hz) of the switch-mode power supply;
0192 must be one of:
0193 19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
0194 2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
0195 1480000, 1370000, 1280000, 1200000
0196
0197 - qcom,force-mode:
0198 Usage: optional (default if no other qcom,force-mode is specified)
0199 Value type: <u32>
0200 Definition: indicates that the regulator should be forced to a
0201 particular mode, valid values are:
0202 QCOM_RPM_FORCE_MODE_NONE - do not force any mode
0203 QCOM_RPM_FORCE_MODE_LPM - force into low power mode
0204 QCOM_RPM_FORCE_MODE_HPM - force into high power mode
0205 QCOM_RPM_FORCE_MODE_AUTO - allow regulator to automatically
0206 select its own mode based on
0207 realtime current draw, only for:
0208 pm8921 smps and ftsmps
0209
0210 - qcom,power-mode-hysteretic:
0211 Usage: optional
0212 Value type: <empty>
0213 Definition: select that the power supply should operate in hysteretic
0214 mode, instead of the default pwm mode
0215
0216 === Low-dropout regulator custom properties
0217
0218 - bias-pull-down:
0219 Usage: optional
0220 Value type: <empty>
0221 Definition: enable pull down of the regulator when inactive
0222
0223 - qcom,force-mode:
0224 Usage: optional
0225 Value type: <u32>
0226 Definition: indicates that the regulator should not be forced to any
0227 particular mode, valid values are:
0228 QCOM_RPM_FORCE_MODE_NONE - do not force any mode
0229 QCOM_RPM_FORCE_MODE_LPM - force into low power mode
0230 QCOM_RPM_FORCE_MODE_HPM - force into high power mode
0231 QCOM_RPM_FORCE_MODE_BYPASS - set regulator to use bypass
0232 mode, i.e. to act as a switch
0233 and not regulate, only for:
0234 pm8921 pldo, nldo and nldo1200
0235
0236 === Negative Charge Pump custom properties
0237
0238 - qcom,switch-mode-frequency:
0239 Usage: required
0240 Value type: <u32>
0241 Definition: Frequency (Hz) of the switch mode power supply;
0242 must be one of:
0243 19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
0244 2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
0245 1480000, 1370000, 1280000, 1200000
0246
0247 = EXAMPLE
0248
0249 #include <dt-bindings/mfd/qcom-rpm.h>
0250
0251 rpm@108000 {
0252 compatible = "qcom,rpm-msm8960";
0253 reg = <0x108000 0x1000>;
0254 qcom,ipc = <&apcs 0x8 2>;
0255
0256 interrupts = <0 19 0>, <0 21 0>, <0 22 0>;
0257 interrupt-names = "ack", "err", "wakeup";
0258
0259 regulators {
0260 compatible = "qcom,rpm-pm8921-regulators";
0261 vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;
0262
0263 s1 {
0264 regulator-min-microvolt = <1225000>;
0265 regulator-max-microvolt = <1225000>;
0266
0267 bias-pull-down;
0268
0269 qcom,switch-mode-frequency = <3200000>;
0270 };
0271
0272 pm8921_s4: s4 {
0273 regulator-min-microvolt = <1800000>;
0274 regulator-max-microvolt = <1800000>;
0275
0276 qcom,switch-mode-frequency = <1600000>;
0277 bias-pull-down;
0278
0279 qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
0280 };
0281 };
0282 };
0283