Voltage/Current regulator

Binding:
The regulator devices don't use the "compatible" property. The binding is done
by the prefix of regulator node's name, or, if this fails, by the prefix of the
regulator's "regulator-name" property. Usually the pmic I/O driver will provide
the array of 'struct pmic_child_info' with the prefixes and compatible drivers.
The bind is done by calling function: pmic_bind_childs().
Example drivers:
pmic: drivers/power/pmic/max77686.c
regulator: drivers/power/regulator/max77686.c

For the node name e.g.: "prefix[:alpha:]num { ... }":
- the driver prefix should be: "prefix" - case sensitive
- the node name's "num" is set as "dev->driver_data" on bind

Example the prefix "ldo" will pass for: "ldo1", "ldo@1", "ldoreg@1, ...

Binding by means of the node's name is preferred. However if the node names
would produce ambiguous prefixes (like "regulator@1" and "regualtor@11") and you
can't or do not want to change them then binding against the "regulator-name"
property is possible. The syntax for the prefix of the "regulator-name" property
is the same as the one for the regulator's node name.
Use case: a regulator named "regulator@1" to be bound to a driver named
"LDO_DRV" and a regulator named "regualator@11" to be bound to an other driver
named "BOOST_DRV". Using prefix "regualtor@1" for driver matching would load
the same driver for both regulators, hence the prefix is ambiguous.

Optional properties:
- regulator-name: a string, required by the regulator uclass, used for driver
                  binding if binding by node's name prefix fails
- regulator-min-microvolt: a minimum allowed Voltage value
- regulator-max-microvolt: a maximum allowed Voltage value
- regulator-min-microamp: a minimum allowed Current value
- regulator-max-microamp: a maximum allowed Current value
- regulator-always-on: regulator should never be disabled
- regulator-boot-on: enabled by bootloader/firmware
- regulator-ramp-delay: ramp delay for regulator (in uV/us)
- regulator-init-microvolt: a init allowed Voltage value
- regulator-state-(standby|mem|disk)
  type: object
  description:
    sub-nodes for regulator state in Standby, Suspend-to-RAM, and
    Suspend-to-DISK modes. Equivalent with standby, mem, and disk Linux
    sleep states.

    properties:
      regulator-on-in-suspend:
        description: regulator should be on in suspend state.
        type: boolean

      regulator-off-in-suspend:
        description: regulator should be off in suspend state.
        type: boolean

      regulator-suspend-microvolt:
        description: the default voltage which regulator would be set in
          suspend. This property is now deprecated, instead setting voltage
          for suspend mode via the API which regulator driver provides is
          recommended.

Note
The "regulator-name" constraint is used for setting the device's uclass
platform data '.name' field. And the regulator device name is set from
it's node name. If "regulator-name" is not provided in dts, node name
is chosen for setting the device's uclass platform data '.name' field.

Other kernel-style properties, are currently not used.

Note:
For the regulator autoset from constraints, the framework expects that:
- regulator-min-microvolt is equal to regulator-max-microvolt
- regulator-min-microamp is equal to regulator-max-microamp
- regulator-always-on or regulator-boot-on is set

Example:
ldo0 {
	/* Optional */
	regulator-name = "VDDQ_EMMC_1.8V";
	regulator-min-microvolt = <1800000>;
	regulator-max-microvolt = <1800000>;
	regulator-min-microamp = <100000>;
	regulator-max-microamp = <100000>;
	regulator-init-microvolt = <1800000>;
	regulator-always-on;
	regulator-boot-on;
	regulator-ramp-delay = <12000>;
	regulator-state-mem {
		regulator-on-in-suspend;
		regulator-suspend-microvolt = <1800000>;
	};
};
