Qualcomm Resource Power Manager (RPM)

This driver is used to interface with the Resource Power Manager (RPM) found in
various Qualcomm platforms. The RPM allows each component in the system to vote
for state of the system resources, such as clocks, regulators and bus
frequencies.

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,rpm-apq8064"
		    "qcom,rpm-msm8660"
		    "qcom,rpm-msm8960"
		    "qcom,rpm-ipq8064"
		    "qcom,rpm-mdm9615"

- reg:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: base address and size of the RPM's message ram

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: three entries specifying the RPM's:
		    1. acknowledgement interrupt
		    2. error interrupt
		    3. wakeup interrupt

- interrupt-names:
	Usage: required
	Value type: <string-array>
	Definition: must be the three strings "ack", "err" and "wakeup", in order

- qcom,ipc:
	Usage: required
	Value type: <prop-encoded-array>

	Definition: three entries specifying the outgoing ipc bit used for
		    signaling the RPM:
		    - phandle to a syscon node representing the apcs registers
		    - u32 representing offset to the register within the syscon
		    - u32 representing the ipc bit within the register


= SUBNODES

The RPM exposes resources to its subnodes. The below bindings specify the set
of valid subnodes that can operate on these resources.

== Regulators

Regulator nodes are identified by their compatible:

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,rpm-pm8058-regulators"
		    "qcom,rpm-pm8901-regulators"
		    "qcom,rpm-pm8921-regulators"
		    "qcom,rpm-pm8018-regulators"

- vdd_l0_l1_lvs-supply:
- vdd_l2_l11_l12-supply:
- vdd_l3_l4_l5-supply:
- vdd_l6_l7-supply:
- vdd_l8-supply:
- vdd_l9-supply:
- vdd_l10-supply:
- vdd_l13_l16-supply:
- vdd_l14_l15-supply:
- vdd_l17_l18-supply:
- vdd_l19_l20-supply:
- vdd_l21-supply:
- vdd_l22-supply:
- vdd_l23_l24_l25-supply:
- vdd_ncp-supply:
- vdd_s0-supply:
- vdd_s1-supply:
- vdd_s2-supply:
- vdd_s3-supply:
- vdd_s4-supply:
	Usage: optional (pm8058 only)
	Value type: <phandle>
	Definition: reference to regulator supplying the input pin, as
		    described in the data sheet

- lvs0_in-supply:
- lvs1_in-supply:
- lvs2_in-supply:
- lvs3_in-supply:
- mvs_in-supply:
- vdd_l0-supply:
- vdd_l1-supply:
- vdd_l2-supply:
- vdd_l3-supply:
- vdd_l4-supply:
- vdd_l5-supply:
- vdd_l6-supply:
- vdd_s0-supply:
- vdd_s1-supply:
- vdd_s2-supply:
- vdd_s3-supply:
- vdd_s4-supply:
	Usage: optional (pm8901 only)
	Value type: <phandle>
	Definition: reference to regulator supplying the input pin, as
		    described in the data sheet

- vdd_l1_l2_l12_l18-supply:
- vdd_l3_l15_l17-supply:
- vdd_l4_l14-supply:
- vdd_l5_l8_l16-supply:
- vdd_l6_l7-supply:
- vdd_l9_l11-supply:
- vdd_l10_l22-supply:
- vdd_l21_l23_l29-supply:
- vdd_l24-supply:
- vdd_l25-supply:
- vdd_l26-supply:
- vdd_l27-supply:
- vdd_l28-supply:
- vdd_ncp-supply:
- vdd_s1-supply:
- vdd_s2-supply:
- vdd_s4-supply:
- vdd_s5-supply:
- vdd_s6-supply:
- vdd_s7-supply:
- vdd_s8-supply:
- vin_5vs-supply:
- vin_lvs1_3_6-supply:
- vin_lvs2-supply:
- vin_lvs4_5_7-supply:
	Usage: optional (pm8921 only)
	Value type: <phandle>
	Definition: reference to regulator supplying the input pin, as
		    described in the data sheet

- vin_lvs1-supply:
- vdd_l7-supply:
- vdd_l8-supply:
- vdd_l9_l10_l11_l12-supply:
	Usage: optional (pm8018 only)
	Value type: <phandle>
	Definition: reference to regulator supplying the input pin, as
		    described in the data sheet

The regulator node houses sub-nodes for each regulator within the device. Each
sub-node is identified using the node's name, with valid values listed for each
of the pmics below.

pm8058:
	l0, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11, l12, l13, l14, l15,
	l16, l17, l18, l19, l20, l21, l22, l23, l24, l25, s0, s1, s2, s3, s4,
	lvs0, lvs1, ncp

pm8901:
	l0, l1, l2, l3, l4, l5, l6, s0, s1, s2, s3, s4, lvs0, lvs1, lvs2, lvs3,
	mvs

pm8921:
	s1, s2, s3, s4, s7, s8, l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
	l12, l14, l15, l16, l17, l18, l21, l22, l23, l24, l25, l26, l27, l28,
	l29, lvs1, lvs2, lvs3, lvs4, lvs5, lvs6, lvs7, usb-switch, hdmi-switch,
	ncp

pm8018:
	s1, s2, s3, s4, s5, , l1, l2, l3, l4, l5, l6, l7, l8, l9, l10, l11,
	l12, l14, lvs1

The content of each sub-node is defined by the standard binding for regulators -
see regulator.txt - with additional custom properties described below:

=== Switch-mode Power Supply regulator custom properties

- bias-pull-down:
	Usage: optional
	Value type: <empty>
	Definition: enable pull down of the regulator when inactive

- qcom,switch-mode-frequency:
	Usage: required
	Value type: <u32>
	Definition: Frequency (Hz) of the switch-mode power supply;
		    must be one of:
		    19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
		    2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
		    1480000, 1370000, 1280000, 1200000

- qcom,force-mode:
	Usage: optional (default if no other qcom,force-mode is specified)
	Value type: <u32>
	Definition: indicates that the regulator should be forced to a
		   particular mode, valid values are:
		   QCOM_RPM_FORCE_MODE_NONE - do not force any mode
		   QCOM_RPM_FORCE_MODE_LPM - force into low power mode
		   QCOM_RPM_FORCE_MODE_HPM - force into high power mode
		   QCOM_RPM_FORCE_MODE_AUTO - allow regulator to automatically
					      select its own mode based on
					      realtime current draw, only for:
					      pm8921 smps and ftsmps

- qcom,power-mode-hysteretic:
	Usage: optional
	Value type: <empty>
	Definition: select that the power supply should operate in hysteretic
		    mode, instead of the default pwm mode

=== Low-dropout regulator custom properties

- bias-pull-down:
	Usage: optional
	Value type: <empty>
	Definition: enable pull down of the regulator when inactive

- qcom,force-mode:
	Usage: optional
	Value type: <u32>
	Definition: indicates that the regulator should not be forced to any
		   particular mode, valid values are:
		   QCOM_RPM_FORCE_MODE_NONE - do not force any mode
		   QCOM_RPM_FORCE_MODE_LPM - force into low power mode
		   QCOM_RPM_FORCE_MODE_HPM - force into high power mode
		   QCOM_RPM_FORCE_MODE_BYPASS - set regulator to use bypass
						mode, i.e.  to act as a switch
						and not regulate, only for:
						pm8921 pldo, nldo and nldo1200

=== Negative Charge Pump custom properties

- qcom,switch-mode-frequency:
	Usage: required
	Value type: <u32>
	Definition: Frequency (Hz) of the switch mode power supply;
		    must be one of:
		    19200000, 9600000, 6400000, 4800000, 3840000, 3200000,
		    2740000, 2400000, 2130000, 1920000, 1750000, 1600000,
		    1480000, 1370000, 1280000, 1200000

= EXAMPLE

	#include <dt-bindings/mfd/qcom-rpm.h>

	rpm@108000 {
		compatible = "qcom,rpm-msm8960";
		reg = <0x108000 0x1000>;
		qcom,ipc = <&apcs 0x8 2>;

		interrupts = <0 19 0>, <0 21 0>, <0 22 0>;
		interrupt-names = "ack", "err", "wakeup";

		regulators {
			compatible = "qcom,rpm-pm8921-regulators";
			vdd_l1_l2_l12_l18-supply = <&pm8921_s4>;

			s1 {
				regulator-min-microvolt = <1225000>;
				regulator-max-microvolt = <1225000>;

				bias-pull-down;

				qcom,switch-mode-frequency = <3200000>;
			};

			pm8921_s4: s4 {
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;

				qcom,switch-mode-frequency = <1600000>;
				bias-pull-down;

				qcom,force-mode = <QCOM_RPM_FORCE_MODE_AUTO>;
			};
		};
	};

