TI LMU (Lighting Management Unit) device tree bindings

TI LMU driver supports lighting devices below.

   Name                  Child nodes
  ------      ---------------------------------
  LM3631       Backlight and regulator
  LM3632       Backlight and regulator
  LM3633       Backlight, LED and fault monitor
  LM3695       Backlight
  LM36274      Backlight and regulator

Required properties:
  - compatible: Should be one of:
                "ti,lm3631"
                "ti,lm3632"
                "ti,lm3633"
                "ti,lm3695"
		"ti,lm36274"
  - reg: I2C slave address.
         0x11 for LM3632
         0x29 for LM3631
         0x36 for LM3633
         0x63 for LM3695
         0x11 for LM36274

Optional properties:
  - enable-gpios: A GPIO specifier for hardware enable pin.
  - ramp-up-us: Current ramping from one brightness level to
		the a higher brightness level.
		Range from 2048 us - 117.44 s
  - ramp-down-us: Current ramping from one brightness level to
		  the a lower brightness level.
		  Range from 2048 us - 117.44 s
  - ti,brightness-resolution - This determines whether to use 8 bit brightness
			       mode or 11 bit brightness mode.  If this value is
			       not set the device is defaulted to the preferred
			       8bit brightness mode per 7.3.4.1 of the data
			       sheet.  This setting can either be in the parent
			       node or as part of the LED child nodes.  This
			       is determined by the part itself if the strings
			       have a common brightness register or individual
			       brightness registers.
			       The values are 255 (8bit) or 2047 (11bit).

Required node:
  - backlight: All LMU devices have backlight child nodes.
               For the properties, please refer to [1].

Optional nodes:
  - fault-monitor: Hardware fault monitoring driver for LM3633 and LM3697.
    Required properties:
      - compatible: Should be one of:
                    "ti,lm3633-fault-monitor"
  - leds: LED properties for LM3633. Please refer to [2].
	  LED properties for LM36274. Please refer to [4].
  - regulators: Regulator properties for LM3631 and LM3632.
                Please refer to [3].

[1] ../leds/backlight/ti-lmu-backlight.txt
[2] ../leds/leds-lm3633.txt
[3] ../regulator/lm363x-regulator.txt
[4] ../leds/leds-lm36274.txt

lm3631@29 {
	compatible = "ti,lm3631";
	reg = <0x29>;

	regulators {
		compatible = "ti,lm363x-regulator";

		vboost {
			regulator-name = "lcd_boost";
			regulator-min-microvolt = <4500000>;
			regulator-max-microvolt = <6350000>;
			regulator-always-on;
		};

		vcont {
			regulator-name = "lcd_vcont";
			regulator-min-microvolt = <1800000>;
			regulator-max-microvolt = <3300000>;
		};

		voref {
			regulator-name = "lcd_voref";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};

		vpos {
			regulator-name = "lcd_vpos";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
			regulator-boot-on;
		};

		vneg {
			regulator-name = "lcd_vneg";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
			regulator-boot-on;
		};
	};

	backlight {
		compatible = "ti,lm3631-backlight";

		lcd_bl {
			led-sources = <0 1>;
			ramp-up-us = <300000>;
		};
	};
};

lm3632@11 {
	compatible = "ti,lm3632";
	reg = <0x11>;

	enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>; /* PC2 */

	regulators {
		compatible = "ti,lm363x-regulator";

		enable-gpios = <&pioC 0 GPIO_ACTIVE_HIGH>,
			       <&pioC 1 GPIO_ACTIVE_HIGH>;

		vboost {
			regulator-name = "lcd_boost";
			regulator-min-microvolt = <4500000>;
			regulator-max-microvolt = <6400000>;
			regulator-always-on;
		};

		vpos {
			regulator-name = "lcd_vpos";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};

		vneg {
			regulator-name = "lcd_vneg";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6000000>;
		};
	};

	backlight {
		compatible = "ti,lm3632-backlight";

		pwms = <&pwm0 0 10000 0>; /* pwm number, period, polarity */
		pwm-names = "lmu-backlight";

		lcd {
			led-sources = <0 1>;
			pwm-period = <10000>;
		};
	};
};

lm3633@36 {
	compatible = "ti,lm3633";
	reg = <0x36>;

	enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>;

	backlight {
		compatible = "ti,lm3633-backlight";

		main {
			label = "main_lcd";
			led-sources = <1 2>;
			ramp-up-us = <500000>;
			ramp-down-us = <500000>;
		};

		front {
			label = "front_lcd";
			led-sources = <0>;
			ramp-up-us = <1000000>;
			ramp-down-us = <0>;
		};
	};

	leds {
		compatible = "ti,lm3633-leds";

		chan1 {
			label = "status";
			led-sources = <1>;
			led-max-microamp = <6000>;
		};

		chan345 {
			label = "rgb";
			led-sources = <3 4 5>;
			led-max-microamp = <10000>;
		};
	};

	fault-monitor {
		compatible = "ti,lm3633-fault-monitor";
	};
};

lm3695@63 {
	compatible = "ti,lm3695";
	reg = <0x63>;

	enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>;

	backlight {
		compatible = "ti,lm3695-backlight";

		lcd {
			label = "bl";
			led-sources = <0 1>;
		};
	};
};

lm36274@11 {
	compatible = "ti,lm36274";
	#address-cells = <1>;
	#size-cells = <0>;
	reg = <0x11>;

	enable-gpios = <&pioC 2 GPIO_ACTIVE_HIGH>;
	regulators {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "ti,lm363x-regulator";

		enable-gpios = <&pioC 0 GPIO_ACTIVE_HIGH>,
			       <&pioC 1 GPIO_ACTIVE_HIGH>;

		vboost {
			regulator-name = "lcd_boost";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <7150000>;
			regulator-always-on;
		};

		vpos {
			regulator-name = "lcd_vpos";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6500000>;
		};

		vneg {
			regulator-name = "lcd_vneg";
			regulator-min-microvolt = <4000000>;
			regulator-max-microvolt = <6500000>;
		};
	};

	backlight {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "ti,lm36274-backlight";

		led@0 {
			reg = <0>;
			led-sources = <0 2>;
			label = "white:backlight_cluster";
			linux,default-trigger = "backlight";
		};
	};
};
