* Maxim MAX8997 Voltage and Current Regulator

The Maxim MAX8997 is a multi-function device which includes voltage and
current regulators, rtc, charger controller and other sub-blocks. It is
interfaced to the host controller using a i2c interface. Each sub-block is
addressed by the host system using different i2c slave address. This document
describes the bindings for 'pmic' sub-block of max8997.

Required properties:
- compatible: Should be "maxim,max8997-pmic".
- reg: Specifies the i2c slave address of the pmic block. It should be 0x66.

- max8997,pmic-buck1-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
  units for buck1 when changing voltage using gpio dvs. Refer to [1] below
  for additional information.

- max8997,pmic-buck2-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
  units for buck2 when changing voltage using gpio dvs. Refer to [1] below
  for additional information.

- max8997,pmic-buck5-dvs-voltage: A set of 8 voltage values in micro-volt (uV)
  units for buck5 when changing voltage using gpio dvs. Refer to [1] below
  for additional information.

[1] If none of the 'max8997,pmic-buck[1/2/5]-uses-gpio-dvs' optional
    property is specified, the 'max8997,pmic-buck[1/2/5]-dvs-voltage'
    property should specify atleast one voltage level (which would be a
    safe operating voltage).

    If either of the 'max8997,pmic-buck[1/2/5]-uses-gpio-dvs' optional
    property is specified, then all the eight voltage values for the
    'max8997,pmic-buck[1/2/5]-dvs-voltage' should be specified.

Optional properties:
- interrupt-parent: Specifies the phandle of the interrupt controller to which
  the interrupts from max8997 are delivered to.
- interrupts: Interrupt specifiers for two interrupt sources.
  - First interrupt specifier is for 'irq1' interrupt.
  - Second interrupt specifier is for 'alert' interrupt.
- max8997,pmic-buck1-uses-gpio-dvs: 'buck1' can be controlled by gpio dvs.
- max8997,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs.
- max8997,pmic-buck5-uses-gpio-dvs: 'buck5' can be controlled by gpio dvs.

Additional properties required if either of the optional properties are used:
- max8997,pmic-ignore-gpiodvs-side-effect: When GPIO-DVS mode is used for
  multiple bucks, changing the voltage value of one of the bucks may affect
  that of another buck, which is the side effect of the change (set_voltage).
  Use this property to ignore such side effects and change the voltage.

- max8997,pmic-buck125-default-dvs-idx: Default voltage setting selected from
  the possible 8 options selectable by the dvs gpios. The value of this
  property should be between 0 and 7. If not specified or if out of range, the
  default value of this property is set to 0.

- max8997,pmic-buck125-dvs-gpios: GPIO specifiers for three host gpio's used
  for dvs. The format of the gpio specifier depends in the gpio controller.

Regulators: The regulators of max8997 that have to be instantiated should be
included in a sub-node named 'regulators'. Regulator nodes included in this
sub-node should be of the format as listed below.

	regulator_name {
		standard regulator bindings here
	};

The following are the names of the regulators that the max8997 pmic block
supports. Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
as per the datasheet of max8997.

	- LDOn
		  - valid values for n are 1 to 18 and 21
		  - Example: LDO0, LD01, LDO2, LDO21
	- BUCKn
		  - valid values for n are 1 to 7.
		  - Example: BUCK1, BUCK2, BUCK3, BUCK7

	- ENVICHG: Battery Charging Current Monitor Output. This is a fixed
		   voltage type regulator

	- ESAFEOUT1: (ldo19)
	- ESAFEOUT2: (ld020)

	- CHARGER_CV: main battery charger voltage control
	- CHARGER: main battery charger current control
	- CHARGER_TOPOFF: end of charge current threshold level

The bindings inside the regulator nodes use the standard regulator bindings
which are documented elsewhere.

Example:

	max8997_pmic@66 {
		compatible = "maxim,max8997-pmic";
		interrupt-parent = <&wakeup_eint>;
		reg = <0x66>;
		interrupts = <4 0>, <3 0>;

		max8997,pmic-buck1-uses-gpio-dvs;
		max8997,pmic-buck2-uses-gpio-dvs;
		max8997,pmic-buck5-uses-gpio-dvs;

		max8997,pmic-ignore-gpiodvs-side-effect;
		max8997,pmic-buck125-default-dvs-idx = <0>;

		max8997,pmic-buck125-dvs-gpios = <&gpx0 0 1 0 0>, /* SET1 */
						 <&gpx0 1 1 0 0>, /* SET2 */
						 <&gpx0 2 1 0 0>; /* SET3 */

		max8997,pmic-buck1-dvs-voltage = <1350000>, <1300000>,
						 <1250000>, <1200000>,
						 <1150000>, <1100000>,
						 <1000000>, <950000>;

		max8997,pmic-buck2-dvs-voltage = <1100000>, <1100000>,
						 <1100000>, <1100000>,
						 <1000000>, <1000000>,
						 <1000000>, <1000000>;

		max8997,pmic-buck5-dvs-voltage = <1200000>, <1200000>,
						 <1200000>, <1200000>,
						 <1200000>, <1200000>,
						 <1200000>, <1200000>;

		regulators {
			ldo1_reg: LDO1 {
				regulator-name = "VDD_ABB_3.3V";
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
			};

			ldo2_reg: LDO2 {
				regulator-name = "VDD_ALIVE_1.1V";
				regulator-min-microvolt = <1100000>;
				regulator-max-microvolt = <1100000>;
				regulator-always-on;
			};

			buck1_reg: BUCK1 {
				regulator-name = "VDD_ARM_1.2V";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};
		};
	};
