Binding for Samsung S5M8767 regulator block
===========================================

This is a part of device tree bindings for S5M family multi-function devices.
More information can be found in bindings/mfd/sec-core.txt file.

The S5M8767 device provide buck and LDO regulators.

To register these with regulator framework instantiate under main device node
a sub-node named "regulators" with more sub-nodes for each regulator using the
common regulator binding documented in:
 - Documentation/devicetree/bindings/regulator/regulator.txt


Required properties of the main device node (the parent!):
 - s5m8767,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.

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

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

 - s5m8767,pmic-buck-ds-gpios: GPIO specifiers for three host gpio's used
   for selecting GPIO DVS lines. It is one-to-one mapped to dvs gpio lines.

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

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

Optional properties of the main device node (the parent!):
 - s5m8767,pmic-buck2-uses-gpio-dvs: 'buck2' can be controlled by gpio dvs.
 - s5m8767,pmic-buck3-uses-gpio-dvs: 'buck3' can be controlled by gpio dvs.
 - s5m8767,pmic-buck4-uses-gpio-dvs: 'buck4' can be controlled by gpio dvs.

Additional properties required if either of the optional properties are used:

 - s5m8767,pmic-buck234-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.

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


Names of regulators supported by S5M8767 device:
	- LDOn
		  - valid values for n are 1 to 28
		  - Example: LDO1, LDO2, LDO28
	- BUCKn
		  - valid values for n are 1 to 9.
		  - Example: BUCK1, BUCK2, BUCK9
Note: The 'n' in LDOn and BUCKn represents the LDO or BUCK number
as per the datasheet of device.


Optional properties of the nodes under "regulators" sub-node:
 - op_mode: describes the different operating modes of the LDO's with
            power mode change in SOC. The different possible values are,
             0 - always off mode
             1 - on in normal mode
             2 - low power mode
             3 - suspend mode
 - s5m8767,pmic-ext-control-gpios: (optional) GPIO specifier for one
                                   GPIO controlling this regulator
                                   (enable/disable); This is valid only
                                   for buck9.

Example:

	s5m8767_pmic@66 {
		compatible = "samsung,s5m8767-pmic";
		reg = <0x66>;

		s5m8767,pmic-buck2-uses-gpio-dvs;
		s5m8767,pmic-buck3-uses-gpio-dvs;
		s5m8767,pmic-buck4-uses-gpio-dvs;

		s5m8767,pmic-buck-default-dvs-idx = <0>;

		s5m8767,pmic-buck-dvs-gpios = <&gpx0 0 0>, /* DVS1 */
						 <&gpx0 1 0>, /* DVS2 */
						 <&gpx0 2 0>; /* DVS3 */

		s5m8767,pmic-buck-ds-gpios = <&gpx2 3 0>, /* SET1 */
						<&gpx2 4 0>, /* SET2 */
						<&gpx2 5 0>; /* SET3 */

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

		s5m8767,pmic-buck3-dvs-voltage = <1100000>, <1100000>,
						 <1100000>, <1100000>,
						 <1000000>, <1000000>,
						 <1000000>, <1000000>;

		s5m8767,pmic-buck4-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>;
				op_mode = <1>; /* Normal Mode */
			};

			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_MIF_1.2V";
				regulator-min-microvolt = <950000>;
				regulator-max-microvolt = <1350000>;
				regulator-always-on;
				regulator-boot-on;
			};

			vemmc_reg: BUCK9 {
				regulator-name = "VMEM_VDD_2.8V";
				regulator-min-microvolt = <2800000>;
				regulator-max-microvolt = <2800000>;
				op_mode = <3>; /* Standby Mode */
				s5m8767,pmic-ext-control-gpios = <&gpk0 2 0>;
			};
		};
	};
