Voltage/Current Regulators

Optional properties:
- regulator-name: A string used as a descriptive name for regulator outputs
- regulator-min-microvolt: smallest voltage consumers may set
- regulator-max-microvolt: largest voltage consumers may set
- regulator-microvolt-offset: Offset applied to voltages to compensate for voltage drops
- regulator-min-microamp: smallest current consumers may set
- regulator-max-microamp: largest current consumers may set
- regulator-always-on: boolean, regulator should never be disabled
- regulator-boot-on: bootloader/firmware enabled regulator
- <name>-supply: phandle to the parent supply/regulator node
- regulator-ramp-delay: ramp delay for regulator(in uV/uS)
- regulator-init-microvolt: Initial microvolt need to be set during registration
- regulator-enable-ramp-delay: The time taken, in microseconds, for the supply
  rail to reach the target voltage, plus/minus whatever tolerance the board
  design requires. This property describes the total system ramp time
  required due to the combination of internal ramping of the regulator itself,
  and board design issues such as trace capacitance and load on the supply.

Deprecated properties:
- regulator-compatible: If a regulator chip contains multiple
  regulators, and if the chip's binding contains a child node that
  describes each regulator, then this property indicates which regulator
  this child node is intended to configure. If this property is missing,
  the node's name will be used instead.

Consumer name support from DT:
To support the consumer list of the rails from DT to map the power tree
so that driver who uses the regualtor can still be non-dt, adding following
properties.
The consumer list will be provided under subnode of each regualtor called
"consumer". The consumer list has the supply name and device name. This can
be set with properties:
regulator-consumer-supply: Consumer supply name.
regulator-consumer-device: Consumer device name.
The properties will be passed as
	consumers {
		c1 {
			regulator-consumer-supply = "vana";
			regulator-consumer-device = "2-0010";
		};

		c2 {
			regulator-consumer-supply = "vana";
			regulator-consumer-device = "2-0036";
		};

Example:

	xyzreg: regulator@0 {
		regulator-min-microvolt = <1000000>;
		regulator-max-microvolt = <2500000>;
		regulator-always-on;
		vin-supply = <&vin>;
	};

Regulator Consumers:
Consumer nodes can reference one or more of its supplies/
regulators using the below bindings.

- <name>-supply: phandle to the regulator node

These are the same bindings that a regulator in the above
example used to reference its own supply, in which case
its just seen as a special case of a regulator being a
consumer itself.

Example of a consumer device node (mmc) referencing two
regulators (twl_reg1 and twl_reg2),

	twl_reg1: regulator@0 {
		...
		...
		...
	};

	twl_reg2: regulator@1 {
		...
		...
		...
	};

	mmc: mmc@0x0 {
		...
		...
		vmmc-supply = <&twl_reg1>;
		vmmcaux-supply = <&twl_reg2>;
	};


Example: Consumer list from DT
	ldo3 {
		regulator-name = "vdd_rtc";
		regulator-min-microvolt = <800000>;
		regulator-max-microvolt = <800000>;
		regulator-always-on;
		ams,enable-tracking;
		consumers {
			c1 {
				regulator-consumer-supply = "vdd_rtc";
			};
		};
	};

	ldo4 {
		regulator-name = "avdd_cam";
		regulator-min-microvolt = <2700000>;
		regulator-max-microvolt = <2700000>;
		regulator-always-on;
		consumers {
			c1 {
				regulator-consumer-supply = "vana";
				regulator-consumer-device = "2-0010";
			};
			c2 {
				regulator-consumer-supply = "vana";
				regulator-consumer-device = "2-0036";
			};
		};
	};
