| Qualcomm Technologies, Inc. RPMh Regulators |
| |
| rpmh-regulator devices support PMIC regulator management via the Voltage |
| Regulator Manager (VRM) and Oscillator Buffer (XOB) RPMh accelerators. The APPS |
| processor communicates with these hardware blocks via a Resource State |
| Coordinator (RSC) using command packets. The VRM allows changing three |
| parameters for a given regulator: enable state, output voltage, and operating |
| mode. The XOB allows changing only a single parameter for a given regulator: |
| its enable state. Despite its name, the XOB is capable of controlling the |
| enable state of any PMIC peripheral. It is used for clock buffers, low-voltage |
| switches, and LDO/SMPS regulators which have a fixed voltage and mode. |
| |
| ======================= |
| Required Node Structure |
| ======================= |
| |
| RPMh regulators must be described in two levels of device nodes. The first |
| level describes the PMIC containing the regulators and must reside within an |
| RPMh device node. The second level describes each regulator within the PMIC |
| which is to be used on the board. Each of these regulators maps to a single |
| RPMh resource. |
| |
| The names used for regulator nodes must match those supported by a given PMIC. |
| Supported regulator node names: |
| PM8005: smps1 - smps4 |
| PM8009: smps1 - smps2, ldo1 - ldo7 |
| PM8150: smps1 - smps10, ldo1 - ldo18 |
| PM8150L: smps1 - smps8, ldo1 - ldo11, bob, flash, rgb |
| PM8350: smps1 - smps12, ldo1 - ldo10, |
| PM8350C: smps1 - smps10, ldo1 - ldo13, bob |
| PM8998: smps1 - smps13, ldo1 - ldo28, lvs1 - lvs2 |
| PMI8998: bob |
| PM6150: smps1 - smps5, ldo1 - ldo19 |
| PM6150L: smps1 - smps8, ldo1 - ldo11, bob |
| PMX55: smps1 - smps7, ldo1 - ldo16 |
| |
| ======================== |
| First Level Nodes - PMIC |
| ======================== |
| |
| - compatible |
| Usage: required |
| Value type: <string> |
| Definition: Must be one of below: |
| "qcom,pm8005-rpmh-regulators" |
| "qcom,pm8009-rpmh-regulators" |
| "qcom,pm8150-rpmh-regulators" |
| "qcom,pm8150l-rpmh-regulators" |
| "qcom,pm8350-rpmh-regulators" |
| "qcom,pm8350c-rpmh-regulators" |
| "qcom,pm8998-rpmh-regulators" |
| "qcom,pmi8998-rpmh-regulators" |
| "qcom,pm6150-rpmh-regulators" |
| "qcom,pm6150l-rpmh-regulators" |
| "qcom,pmx55-rpmh-regulators" |
| |
| - qcom,pmic-id |
| Usage: required |
| Value type: <string> |
| Definition: RPMh resource name suffix used for the regulators found on |
| this PMIC. Typical values: "a", "b", "c", "d", "e", "f". |
| |
| - vdd-s1-supply |
| - vdd-s2-supply |
| - vdd-s3-supply |
| - vdd-s4-supply |
| Usage: optional (PM8998 and PM8005 only) |
| Value type: <phandle> |
| Definition: phandle of the parent supply regulator of one or more of the |
| regulators for this PMIC. |
| |
| - vdd-s5-supply |
| - vdd-s6-supply |
| - vdd-s7-supply |
| - vdd-s8-supply |
| - vdd-s9-supply |
| - vdd-s10-supply |
| - vdd-s11-supply |
| - vdd-s12-supply |
| - vdd-s13-supply |
| - vdd-l1-l27-supply |
| - vdd-l2-l8-l17-supply |
| - vdd-l3-l11-supply |
| - vdd-l4-l5-supply |
| - vdd-l6-supply |
| - vdd-l7-l12-l14-l15-supply |
| - vdd-l9-supply |
| - vdd-l10-l23-l25-supply |
| - vdd-l13-l19-l21-supply |
| - vdd-l16-l28-supply |
| - vdd-l18-l22-supply |
| - vdd-l20-l24-supply |
| - vdd-l26-supply |
| - vin-lvs-1-2-supply |
| Usage: optional (PM8998 only) |
| Value type: <phandle> |
| Definition: phandle of the parent supply regulator of one or more of the |
| regulators for this PMIC. |
| |
| - vdd-bob-supply |
| Usage: optional (PMI8998 only) |
| Value type: <phandle> |
| Definition: BOB regulator parent supply phandle |
| |
| =============================== |
| Second Level Nodes - Regulators |
| =============================== |
| |
| - qcom,always-wait-for-ack |
| Usage: optional |
| Value type: <empty> |
| Definition: Boolean flag which indicates that the application processor |
| must wait for an ACK or a NACK from RPMh for every request |
| sent for this regulator including those which are for a |
| strictly lower power state. |
| |
| Other properties defined in Documentation/devicetree/bindings/regulator/regulator.txt |
| may also be used. regulator-initial-mode and regulator-allowed-modes may be |
| specified for VRM regulators using mode values from |
| include/dt-bindings/regulator/qcom,rpmh-regulator.h. regulator-allow-bypass |
| may be specified for BOB type regulators managed via VRM. |
| regulator-allow-set-load may be specified for LDO type regulators managed via |
| VRM. |
| |
| ======== |
| Examples |
| ======== |
| |
| #include <dt-bindings/regulator/qcom,rpmh-regulator.h> |
| |
| &apps_rsc { |
| pm8998-rpmh-regulators { |
| compatible = "qcom,pm8998-rpmh-regulators"; |
| qcom,pmic-id = "a"; |
| |
| vdd-l7-l12-l14-l15-supply = <&pm8998_s5>; |
| |
| smps2 { |
| regulator-min-microvolt = <1100000>; |
| regulator-max-microvolt = <1100000>; |
| }; |
| |
| pm8998_s5: smps5 { |
| regulator-min-microvolt = <1904000>; |
| regulator-max-microvolt = <2040000>; |
| }; |
| |
| ldo7 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; |
| regulator-allowed-modes = |
| <RPMH_REGULATOR_MODE_LPM |
| RPMH_REGULATOR_MODE_HPM>; |
| regulator-allow-set-load; |
| }; |
| |
| lvs1 { |
| regulator-min-microvolt = <1800000>; |
| regulator-max-microvolt = <1800000>; |
| }; |
| }; |
| |
| pmi8998-rpmh-regulators { |
| compatible = "qcom,pmi8998-rpmh-regulators"; |
| qcom,pmic-id = "b"; |
| |
| bob { |
| regulator-min-microvolt = <3312000>; |
| regulator-max-microvolt = <3600000>; |
| regulator-allowed-modes = |
| <RPMH_REGULATOR_MODE_AUTO |
| RPMH_REGULATOR_MODE_HPM>; |
| regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>; |
| }; |
| }; |
| }; |