Bindings for the Generic PWM Regulator
======================================

Currently supports 2 modes of operation:

Voltage Table:		When in this mode, a voltage table (See below) of
			predefined voltage <=> duty-cycle values must be
			provided via DT. Limitations are that the regulator can
			only operate at the voltages supplied in the table.
			Intermediary duty-cycle values which would normally
			allow finer grained voltage selection are ignored and
			rendered useless.  Although more control is given to
			the user if the assumptions made in continuous-voltage
			mode do not reign true.

Continuous Voltage:	This mode uses the regulator's maximum and minimum
			supplied voltages specified in the
			regulator-{min,max}-microvolt properties to calculate
			appropriate duty-cycle values.  This allows for a much
			more fine grained solution when compared with
			voltage-table mode above.  This solution does make an
			assumption that a %50 duty-cycle value will cause the
			regulator voltage to run at half way between the
			supplied max_uV and min_uV values.

Required properties:
--------------------
- compatible:		Should be "pwm-regulator"

- pwms:			PWM specification (See: ../pwm/pwm.txt)

Only required for Voltage Table Mode:
- voltage-table: 	Voltage and Duty-Cycle table consisting of 2 cells
			    First cell is voltage in microvolts (uV)
			    Second cell is duty-cycle in percent (%)

Optional properties for Continuous mode:
- pwm-dutycycle-unit:	Integer value encoding the duty cycle unit. If not
			defined, <100> is assumed, meaning that
			pwm-dutycycle-range contains values expressed in
			percent.

- pwm-dutycycle-range:	Should contain 2 entries. The first entry is encoding
			the dutycycle for regulator-min-microvolt and the
			second one the dutycycle for regulator-max-microvolt.
			Duty cycle values are expressed in pwm-dutycycle-unit.
			If not defined, <0 100> is assumed.

NB: To be clear, if voltage-table is provided, then the device will be used
in Voltage Table Mode.  If no voltage-table is provided, then the device will
be used in Continuous Voltage Mode.

Optional properties:
--------------------
- enable-gpios:		GPIO to use to enable/disable the regulator

Any property defined as part of the core regulator binding can also be used.
(See: ../regulator/regulator.txt)

Continuous Voltage With Enable GPIO Example:
	pwm_regulator {
		compatible = "pwm-regulator";
		pwms = <&pwm1 0 8448 0>;
		enable-gpios = <&gpio0 23 GPIO_ACTIVE_HIGH>;
		regulator-min-microvolt = <1016000>;
		regulator-max-microvolt = <1114000>;
		regulator-name = "vdd_logic";
		/* unit == per-mille */
		pwm-dutycycle-unit = <1000>;
		/*
		 * Inverted PWM logic, and the duty cycle range is limited
		 * to 30%-70%.
		 */
		pwm-dutycycle-range = <700 300>; /* */
	};

Voltage Table Example:
	pwm_regulator {
		compatible = "pwm-regulator";
		pwms = <&pwm1 0 8448 0>;
		regulator-min-microvolt = <1016000>;
		regulator-max-microvolt = <1114000>;
		regulator-name = "vdd_logic";

			      /* Voltage Duty-Cycle */
		voltage-table = <1114000 0>,
				<1095000 10>,
				<1076000 20>,
				<1056000 30>,
				<1036000 40>,
				<1016000 50>;
	};
