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