Maxim MAX77693 multi-function device

MAX77693 is a Multifunction device with the following submodules:
- PMIC,
- CHARGER,
- LED,
- MUIC,
- HAPTIC

It is interfaced to host controller using i2c.
This document describes the bindings for the mfd device.

Required properties:
- compatible : Must be "maxim,max77693".
- reg : Specifies the i2c slave address of PMIC block.
- interrupts : This i2c device has an IRQ line connected to the main SoC.
- interrupt-parent :  The parent interrupt controller.

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

	regulators {
		regulator-compatible = ESAFEOUT1/ESAFEOUT2/CHARGER
		standard regulator constraints[*].
	};

	[*] refer Documentation/devicetree/bindings/regulator/regulator.txt

- haptic : The MAX77693 haptic device utilises a PWM controlled motor to provide
  users with tactile feedback. PWM period and duty-cycle are varied in
  order to provide the appropriate level of feedback.

 Required properties:
	- compatible : Must be "maxim,max77693-haptic"
	- haptic-supply : power supply for the haptic motor
	[*] refer Documentation/devicetree/bindings/regulator/regulator.txt
	- pwms : phandle to the physical PWM(Pulse Width Modulation) device.
	 PWM properties should be named "pwms". And number of cell is different
	 for each pwm device.
	 To get more information, please refer to documentation.
	[*] refer Documentation/devicetree/bindings/pwm/pwm.txt

- charger : Node configuring the charger driver.
  If present, required properties:
  - compatible : Must be "maxim,max77693-charger".

  Optional properties (if not set, defaults will be used):
  - maxim,constant-microvolt : Battery constant voltage in uV. The charger
    will operate in fast charge constant current mode till battery voltage
    reaches this level. Then the charger will switch to fast charge constant
    voltage mode. Also vsys (system voltage) will be set to this value when
    DC power is supplied but charger is not enabled.
    Valid values: 3650000 - 4400000, step by 25000 (rounded down)
    Default: 4200000

  - maxim,min-system-microvolt : Minimal system voltage in uV.
    Valid values: 3000000 - 3700000, step by 100000 (rounded down)
    Default: 3600000

  - maxim,thermal-regulation-celsius : Temperature in Celsius for entering
    high temperature charging mode. If die temperature exceeds this value
    the charging current will be reduced by 105 mA/Celsius.
    Valid values: 70, 85, 100, 115
    Default: 100

  - maxim,battery-overcurrent-microamp : Overcurrent protection threshold
    in uA (current from battery to system).
    Valid values: 2000000 - 3500000, step by 250000 (rounded down)
    Default: 3500000

  - maxim,charge-input-threshold-microvolt : Threshold voltage in uV for
    triggering input voltage regulation loop. If input voltage decreases
    below this value, the input current will be reduced to reach the
    threshold voltage.
    Valid values: 4300000, 4700000, 4800000, 4900000
    Default: 4300000

- led : the LED submodule device node

There are two LED outputs available - FLED1 and FLED2. Each of them can
control a separate LED or they can be connected together to double
the maximum current for a single connected LED. One LED is represented
by one child node.

Required properties:
- compatible : Must be "maxim,max77693-led".

Optional properties:
- maxim,boost-mode :
	In boost mode the device can produce up to 1.2A of total current
	on both outputs. The maximum current on each output is reduced
	to 625mA then. If not enabled explicitly, boost setting defaults to
	LEDS_BOOST_FIXED in case both current sources are used.
	Possible values:
		LEDS_BOOST_OFF (0) - no boost,
		LEDS_BOOST_ADAPTIVE (1) - adaptive mode,
		LEDS_BOOST_FIXED (2) - fixed mode.
- maxim,boost-mvout : Output voltage of the boost module in millivolts.
	Valid values: 3300 - 5500, step by 25 (rounded down)
	Default: 3300
- maxim,mvsys-min : Low input voltage level in millivolts. Flash is not fired
	if chip estimates that system voltage could drop below this level due
	to flash power consumption.
	Valid values: 2400 - 3400, step by 33 (rounded down)
	Default: 2400

Required properties for the LED child node:
- led-sources : see Documentation/devicetree/bindings/leds/common.txt;
		device current output identifiers: 0 - FLED1, 1 - FLED2
- led-max-microamp : see Documentation/devicetree/bindings/leds/common.txt
	Valid values for a LED connected to one FLED output:
		15625 - 250000, step by 15625 (rounded down)
	Valid values for a LED connected to both FLED outputs:
		15625 - 500000, step by 15625 (rounded down)
- flash-max-microamp : see Documentation/devicetree/bindings/leds/common.txt
	Valid values for a single LED connected to one FLED output
	(boost mode must be turned off):
		15625 - 1000000, step by 15625 (rounded down)
	Valid values for a single LED connected to both FLED outputs:
		15625 - 1250000, step by 15625 (rounded down)
	Valid values for two LEDs case:
		15625 - 625000, step by 15625 (rounded down)
- flash-max-timeout-us : see Documentation/devicetree/bindings/leds/common.txt
	Valid values: 62500 - 1000000, step by 62500 (rounded down)

Optional properties for the LED child node:
- label : see Documentation/devicetree/bindings/leds/common.txt

Example:
#include <dt-bindings/leds/common.h>

	max77693@66 {
		compatible = "maxim,max77693";
		reg = <0x66>;
		interrupt-parent = <&gpx1>;
		interrupts = <5 2>;

		regulators {
			esafeout@1 {
				regulator-compatible = "ESAFEOUT1";
				regulator-name = "ESAFEOUT1";
				regulator-boot-on;
			};
			esafeout@2 {
				regulator-compatible = "ESAFEOUT2";
				regulator-name = "ESAFEOUT2";
				};
			charger@0 {
				regulator-compatible = "CHARGER";
				regulator-name = "CHARGER";
				regulator-min-microamp = <60000>;
				regulator-max-microamp = <2580000>;
					regulator-boot-on;
			};
		};

		haptic {
			compatible = "maxim,max77693-haptic";
			haptic-supply = <&haptic_supply>;
			pwms = <&pwm 0 40000 0>;
			pwm-names = "haptic";
		};

		charger {
			compatible = "maxim,max77693-charger";

			maxim,constant-microvolt = <4200000>;
			maxim,min-system-microvolt = <3600000>;
			maxim,thermal-regulation-celsius = <75>;
			maxim,battery-overcurrent-microamp = <3000000>;
			maxim,charge-input-threshold-microvolt = <4300000>;

		led {
			compatible = "maxim,max77693-led";
			maxim,boost-mode = <LEDS_BOOST_FIXED>;
			maxim,boost-mvout = <5000>;
			maxim,mvsys-min = <2400>;

			camera_flash: flash-led {
				label = "max77693-flash";
				led-sources = <0>, <1>;
				led-max-microamp = <500000>;
				flash-max-microamp = <1250000>;
				flash-max-timeout-us = <1000000>;
			};
		};
	};
