Krait Voltage regulators

The cpus are powered using a single supply powered by PMIC ganged regulators operating in
different phases. Individual kraits further can draw power from the single supply via
a LDO or a head switch (BHS).  The first level node represents the PMIC ganged regulator
and its properties and encompasses second level nodes that represent the individual
krait LDO/BHS control regulator.

[First Level Nodes]
Required properties:
- compatible:			Must be "qcom,krait-pdn"
- reg:				This property contains a list of physical
				addresses for Krait PDN features.  The list
				should contain the address of the APCS GCC
				register base and the address of the phase
				scaling factor eFuse.
- reg-names:			This property contains a list of strings naming
				the registers listed in the reg property.
				"apcs_gcc" is a string to identify the area
				where the APCS GCC registers reside.
				"phase-scaling-efuse" should be used to identify
				the phase scaling factor eFuse address.
- qcom,cores-per-phase		Value that indicates the number of cores running at max frequency
				a phase can support.
- qcom,valid-phases		An array containing the phase count the platform supports. The phase count
				entries must be in increasing order.
- qcom,phase-coeff-threshold	An array representing the coeff values supported by the phase counts
				mentioned in qcom,valid-phases array. The location of 0-based index
				of an element in the list corresponds to the max coefficient supported
				by the phase count mentioned in qcom,valid-phases array at that index. The
				coefficient entries must be in increasing order.
- qcom,phase-scaling-factor-bits-pos	indicates bit position of scaling factor data within the efuse
					register.
- qcom,valid-scaling-factor-versions	This is an array holding four boolean values and indicates whether
					the version read from efuses is valid.
					The version is a two bit field and the value read from hardware is
					used as an index in this array to check for validity.
Optional properties:
- qcom,use-phase-switching	indicates whether the driver should add/shed phases on the PMIC
				ganged regulator as cpus are hotplugged.
- qcom,use-phase-scaling-factor	Boolean which indicates if the value stored in
				the phase scaling eFuse should be used or not.
				If this property is not specified, then worst
				case scaling will be assumed.
- qcom,force-auto-mode		indicates whether auto mode should be used i.e. disable pfm/pwm
				mode switching for the pmic ganged regulator. If this is not specified
				qcom,pfm-threshold must be specified.
- qcom,pfm-threshold		The power coeff threshold in abstract power units below which
				pmic will be made to operate in PFM mode.

[Second Level Nodes]
Required properties:
- compatible:			Must be "qcom,krait-regulator"
- reg:				Specifies the address and size for this regulator device,
				also specifies the address and the size for the MDD area
				to be used along with the regulator
- reg-names:			"acs" -string to identify the area where main power control
					registers reside.
				"mdd" - string to identify the area where mdd registers reside.
- qcom,headroom-voltage:	The minimum required voltage drop between the input
			 	voltage and the output voltage for the LDO to be
			 	operational, in microvolts. Acceptable values are from
				50000uV to 250000uV
- qcom,retention-voltage:	The value for retention voltage in microvolts. Acceptable
				values are from 465000uV to 750000uV
- qcom,ldo-default-voltage:	The default value for LDO voltage in microvolts. Acceptable
				values are from 465000uV to 750000uV
- qcom,ldo-threshold-voltage:	The voltage value above which LDO is nonfunctional.
				Acceptable values are from 600000uV to 900000uV
- qcom,ldo-delta-voltage:	The delta used to reduce the requested voltage in order
				to derive the LDO output voltage while switching
				to LDO mode. Acceptable values are from 1000uV to 100000uV
- qcom,cpu-num:			Indicates what cpu this regulator controls

Optional properties:
- qcom,ldo-disable:		Indicates whether to disable using LDO mode

Any property defined as part of the core regulator
binding, defined in regulator.txt, can also be used.

[Third Level Nodes]
This Third level node represents a regulator which when enabled reduces
coeff1 component of the load by a defined percentage amount. This Third Level
Node is optional.
Required properties:
- regulator-name:		A string used as a descriptive name for the regulator
Optional properties:
- qcom,coeff1-reduction:	percentage to reduce the coeff1 component
				of the load by. If this is not specified
				a default of 75 percent is assumed.

Any property defined as part of the core regulator
binding, defined in regulator.txt, can also be used.

Example:
	krait_pdn: krait-pdn@f9011000 {
		reg = <0xf9011000 0x1000>,
		      <0xfc4b80b0 8>;
		reg-names = "apcs_gcc", "phase-scaling-efuse";
		compatible = "qcom,krait-pdn";
		qcom,use-phase-switching;
		qcom,use-phase-scaling-factor;
		qcom,pfm-threshold = <376975>;
		qcom,valid-phases = <1 2 4>;
		qcom,phase-coeff-threshold = <1000000 2000000 4000000>;
		qcom,phase-scaling-factor-bits-pos = <18>;
		qcom,valid-scaling-factor-versions = <0 1 1 0>;

		#address-cells = <1>;
		#size-cells = <1>;
		ranges;

		krait0_vreg: regulator@f9088000 {
			compatible = "qcom,krait-regulator";
			regulator-name = "krait0";
			reg = <0xf9088000 0x1000>, /* APCS_ALIAS0_KPSS_ACS */
				<0xf908a800 0x1000>; /* APCS_ALIAS0_KPSS_MDD */
			reg-names = "acs", "mdd";
			regulator-min-microvolt = <500000>;
			regulator-max-microvolt = <1100000>;
			qcom,headroom-voltage = <150000>;
			qcom,retention-voltage = <675000>;
			qcom,ldo-default-voltage = <750000>;
			qcom,ldo-threshold-voltage = <850000>;
			qcom,ldo-delta-voltage = <50000>;
			qcom,cpu-num = <0>;
			krait0_adj_reg: regulator@0 {
				regulator-name = "krait-adjustment0";
				qcom,coeff1-reduction = <75>;
			};
		};
	};
