Binding for Maxim MAX77802 regulators

This is a part of device tree bindings of MAX77802 multi-function device.
More information can be found in bindings/mfd/max77802.txt file.

The MAX77802 PMIC has 10 high-efficiency Buck and 32 Low-dropout (LDO)
regulators that can be controlled over I2C.

Following properties should be present in main device node of the MFD chip.

Optional properties:
- inb1-supply:  The input supply for BUCK1
- inb2-supply:  The input supply for BUCK2
- inb3-supply:  The input supply for BUCK3
- inb4-supply:  The input supply for BUCK4
- inb5-supply:  The input supply for BUCK5
- inb6-supply:  The input supply for BUCK6
- inb7-supply:  The input supply for BUCK7
- inb8-supply:  The input supply for BUCK8
- inb9-supply:  The input supply for BUCK9
- inb10-supply: The input supply for BUCK10
- inl1-supply:  The input supply for LDO8 and LDO15
- inl2-supply:  The input supply for LDO17, LDO27, LDO30 and LDO35
- inl3-supply:  The input supply for LDO3, LDO5, LDO6 and LDO7
- inl4-supply:  The input supply for LDO10, LDO11, LDO13 and LDO14
- inl5-supply:  The input supply for LDO9 and LDO19
- inl6-supply:  The input supply for LDO4, LDO21, LDO24 and LDO33
- inl7-supply:  The input supply for LDO18, LDO20, LDO28 and LDO29
- inl9-supply:  The input supply for LDO12, LDO23, LDO25, LDO26, LDO32 and LDO34
- inl10-supply: The input supply for LDO1 and LDO2

Optional nodes:
- regulators : The regulators of max77802 have to be instantiated
  under subnode named "regulators" using the following format.

	regulator-name {
		standard regulator constraints....
	};
	refer Documentation/devicetree/bindings/regulator/regulator.txt

The regulator node name should be initialized with a string to get matched
with their hardware counterparts as follow. The valid names are:

	-LDOn 	:	for LDOs, where n can lie in ranges 1-15, 17-21, 23-30
			and 32-35.
			example: LDO1, LDO2, LDO35.
	-BUCKn 	:	for BUCKs, where n can lie in range 1 to 10.
			example: BUCK1, BUCK5, BUCK10.

The max77802 regulator supports two different operating modes: Normal and Low
Power Mode. Some regulators support the modes to be changed at startup or by
the consumers during normal operation while others only support to change the
mode during system suspend. The standard regulator suspend states binding can
be used to configure the regulator operating mode.

The regulators that support the standard "regulator-initial-mode" property,
changing their mode during normal operation are: LDOs 1, 3, 20 and 21.

The possible values for "regulator-initial-mode" and "regulator-mode" are:
	1: Normal regulator voltage output mode.
	3: Low Power which reduces the quiescent current down to only 1uA

The valid modes list is defined in the dt-bindings/regulator/maxim,max77802.h
header and can be included by device tree source files.

The standard "regulator-mode" property can only be used for regulators that
support changing their mode to Low Power Mode during suspend. These regulators
are: BUCKs 2-4 and LDOs 1-35. Also, it only takes effect if the regulator has
been enabled for the given suspend state using "regulator-on-in-suspend" and
has not been disabled for that state using "regulator-off-in-suspend".

Example:

	max77802@09 {
		compatible = "maxim,max77802";
		interrupt-parent = <&wakeup_eint>;
		interrupts = <26 0>;
		reg = <0x09>;
		#address-cells = <1>;
		#size-cells = <0>;

		inb1-supply = <&parent_reg>;

		regulators {
			ldo1_reg: LDO1 {
				regulator-name = "vdd_1v0";
				regulator-min-microvolt = <1000000>;
				regulator-max-microvolt = <1000000>;
				regulator-always-on;
				regulator-initial-mode = <MAX77802_OPMODE_LP>;
			};

			ldo11_reg: LDO11 {
				regulator-name = "vdd_ldo11";
				regulator-min-microvolt = <1900000>;
				regulator-max-microvolt = <1900000>;
				regulator-always-on;
				regulator-state-mem {
					regulator-on-in-suspend;
					regulator-mode = <MAX77802_OPMODE_LP>;
				};
			};

			buck1_reg: BUCK1 {
				regulator-name = "vdd_mif";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1300000>;
				regulator-always-on;
				regulator-boot-on;
			};
	};
