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"

- 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"

- 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

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

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 swith 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>;
			};
		};
	};

