QTI's LAB (LCD/AMOLED BOOST)/IBB (Inverting Buck-Boost) Regulator

LAB can be used as a standalone positive boost power supply for general purpose
applications. IBB can be used as a standalone negative power supply for general
applications. Also, LAB and IBB can be used together to provide power supply for
display panels, LCD or AMOLED.

Main node required properties:

- compatible:			Must be "qcom,qpnp-labibb-regulator"
- spmi-dev-container:		Must be present.
- qpnp,qpnp-labibb-mode:	A string used to specify the working mode of LAB/IBB
				regulators when bootloader does not turned on the
				display panel. Could be "lcd" or "amoled".
				"lcd" means using LAB and IBB regulators are
				configured for LCD mode.
				"amoled" means using LAB and IBB regulators are
				configured for AMOLED mode.
- qcom,pmic-revid:		Specifies the phandle of the PMIC revid module.
				Used to identify the PMIC subtype.

Main node optional properties:

- qcom,qpnp-labibb-touch-to-wake-en:	A boolean property which upon set will
					enable support for touch-to-wake mode
					by configuring the required settings
					in LAB and IBB modules. Make sure the
					hardware has needed support before
					enabling this property.
- qpnp,swire-control:			A bool property which indicates if the LAB/IBB is
					controlled by the SWIRE interface. Enable only
					if qpnp,qpnp-labibb-mode = "amoled".
- qcom,labibb-ttw-force-lab-on:		A boolean property which forces LAB to be
					always on during TTW mode.
- qcom,skip-2nd-swire-cmd:		A boolean property which indicates if
					the second SWIRE command needs to be skipped.
- qcom,swire-2nd-cmd-delay:		An integer value which specifes the
					delay in millisecs between the first and second
					SWIRE command. If not specified this value
					defaults to 20ms. This delay is applied only
					if 'qcom,skip-2nd-swire-cmd' is defined.
- qcom,swire-ibb-ps-enable-delay:	An integer value which specifes the delay
					in millisecs to enable IBB pulse-skipping
					after the skip-2nd-swire-cmd workaround is applied.
					If not specified this value default to 200ms.
					This property is applicable only if
					'qcom,skip-2nd-swire-cmd' is specified.
- qcom,labibb-standalone:		A boolean property which forces LAB and
					IBB to operate in standalone mode. If
					this is not specified, then LAB and IBB
					are controlled together in dual mode.
- parent-supply:			Parent supply that is needed for LAB
					and IBB regulators. This will be mostly
					needed when LAB and IBB are operating
					in standalone mode to vote for MBG.

LAB subnode required properties:

- reg:				Specifies the SPMI address and size for this peripheral.
- reg-names:			Register names. Must be "lab".
- regulator-name:		A string used to describe the regulator.
- regulator-min-microvolt:	Minimum voltage in microvolts supported by this regulator.
- regulator-max-microvolt:	Maximum voltage in microvolts supported by this regulator.

- qcom,qpnp-lab-min-voltage:	The minimum voltage in microvolts LAB regulator can support.
- qcom,qpnp-lab-step-size:	The step size in microvolts of LAB regulator.
- qcom,qpnp-lab-slew-rate:	The time in us taken by the regulator to change
				voltage value in one step.

- qcom,qpnp-lab-init-voltage:		The default initial voltage when the bootloader
					does not turn on LAB regulator.
- qcom,qpnp-lab-init-amoled-voltage:	The default output voltage when LAB regulator
					is configured in amoled mode.
- qcom,qpnp-lab-init-lcd-voltage: 	The default output voltage when LAB regulator
					is configured in lcd mode.
- qcom,qpnp-lab-soft-start:		The soft start time in us of LAB regulator.
					Supported value are 200, 400, 600 and 800.

- qcom,qpnp-lab-ps-threshold:		The threshold in mA of Pulse Skip Mode for
					LAB regulator. Supported values are 20, 30,
					40 and 50.
- qcom,qpnp-lab-pfet-size:		PFET size in percentage. Supported values
					are 25, 50, 75 and 100.
- qcom,qpnp-lab-nfet-size:		NFET size in percentage. Supported values
					are 25, 50, 75 and 100.
- qcom,qpnp-lab-max-precharge-time:	Precharge time in us of LAB regulator.
					Supported values are 200, 300, 400 and 500.
- qcom,qpnp-lab-switching-clock-frequency:	The PWM switching clock frequency in
						kHz of Lab regulator, Supported values
						are: 3200, 2740, 2400, 2130, 1920,
						1750, 1600, 1480, 1370, 1280, 1200,
						1130, 1070, 1010, 960, 910.
- qcom,qpnp-lab-limit-maximum-current:		The maximum inductor current limit in
						mA of LAB regulator. Supported values
						are 200, 400, 600 and 800.

LAB subnode optional properties:

- qpnp,qpnp-lab-current-sense:		If this property is specified, the LAB current
					sense gain will be programmed for LAB regulator.
					Otherwise, LAB current sense gain will be
					default to "1x". A string is used to specify the
					LAB current sense gain. Could be "0.5x" or "1x"
					or "1.5x" or "2x". For e.g. "0.5x" means current
					sense gain is 0.5.
- qcom,qpnp-lab-ps-enable:		A boolean proerty which upon set will enable
					pulse skip mode for LAB regulator. Otherwise,
					it is disabled.
- qcom,qpnp-lab-full-pull-down:		A boolean property which upon set will enable
					the pull down strength of LAB regulator to
					full. Otherwise, the pull down strength is
					configured to half.
- qcom,qpnp-lab-pull-down-enable:	A boolean property which upon set will enable
					the pull down for LAB regulator. Otherwise,
					it is disabled.
- qcom,qpnp-lab-max-precharge-enable:		A boolean property which upon set will
						enable fast precharge. Otherwise, it is
						disabled.
- qcom,qpnp-lab-ring-suppression-enable:	A boolean property which upon set will
						enable ring suppression for LAB
						regulator. Otherwise, it is disabled.
- qcom,qpnp-lab-limit-max-current-enable:	A boolean property which upon set will
						enforce maximum inductor current constraint
						for LAB regulator. Otherwise, there is no
						maximum current constraint.
- qcom,qpnp-lab-use-default-voltage:		A boolean property which upon set will
						use the value specified in
						qcom,qpnp-lab-init-voltage property.
						This will be used only if the bootloader
						doesn't configure the output voltage
						already. If it it not specified, then
						output voltage can be configured to
						any value in the allowed limit.

IBB subnode required properties:

- reg:				Specifies the SPMI address and size for this peripheral.
- reg-names:			Register names. Must be "ibb".
- regulator-name:		A string used to describe the regulator.
- regulator-min-microvolt:	Minimum voltage in microvolts supported by this regulator.
- regulator-max-microvolt:	Maximum voltage in microvolts supported by this regulator.

- qcom,qpnp-ibb-min-voltage:	The minimum voltage in microvolts IBB regulator can support.
- qcom,qpnp-ibb-step-size:	The step size in microvolts of IBB regulator.
- qcom,qpnp-ibb-slew-rate:	The time in us taken by the regulator to change
				voltage value in one step.
- qcom,qpnp-ibb-soft-start:	The soft start time in us of IBB regulator.

- qcom,qpnp-ibb-init-voltage:	The default initial voltage when the bootloader does
				not turn on IBB regulator.
- qcom,qpnp-ibb-init-amoled-voltage:	The default output voltage when IBB regulator
					is configured in amoled mode.
- qcom,qpnp-ibb-init-lcd-voltage: 	The default output voltage when IBB regulator
					is configured in lcd mode.

- qcom,qpnp-ibb-discharge-resistor:	The discharge resistor in Kilo Ohms which
					controls the soft start time. Supported values
					are 300, 64, 32 and 16.
- qcom,qpnp-ibb-lab-pwrup-delay:	Power up delay (in us) for IBB regulator when
					it is enabled or turned on. Supported values
					are 1000, 2000, 4000 and 8000.
- qcom,qpnp-ibb-lab-pwrdn-delay:	Power down delay (in us) for IBB regulator
					when it is disabled or turned off. Supported
					values are 1000, 2000, 4000 and 8000.

- qcom,qpnp-ibb-switching-clock-frequency:	The PWM switching clock frequency in
						kHz of IBB regulator. Supported values
						are: 3200, 2740, 2400, 2130, 1920,
						1750, 1600, 1480, 1370, 1280, 1200,
						1130, 1070, 1010, 960, 910.
- qcom,qpnp-ibb-limit-maximum-current:		The maximum inductor current limit in
						mA of IBB regulator. Supported values
						are: 0,	50, 100, 150, 200, 250,	300,
						350, 400, 450, 500, 550, 600, 650, 700,
						750, 800, 850, 900, 950, 1000, 1050,
						1100, 1150, 1200, 1250,	1300, 1350,
						1400, 1450, 1500 and 1550.
- qcom,qpnp-ibb-debounce-cycle:			The debounce cycle of IBB regulator.
						Supported values are 8, 16, 32 and 64.

IBB subnode optional properties:

- qcom,qpnp-ibb-ps-enable:		A boolean property which upon set will enable
					pulse skip mode for IBB regulator. Otherwise,
					it is disabled.
- qcom,qpnp-ibb-full-pull-down:		A boolean property which upon set will enable
					the pull down strength of IBB regulator to
					full. Otherwise, the pull down strength is
					configured to half.
- qcom,qpnp-ibb-pull-down-enable:	A boolean property which upon set will enable
					the pull down for IBB regulator. Otherwise,
					it is disabled.
- qcom,qpnp-ibb-en-discharge:			A boolean property which upon set will
						enable discharge for IBB regulator.
						Otherwise, it is kept disabled.
- qcom,qpnp-ibb-ring-suppression-enable:	A boolean property which upon set will
						enable ring suppression for IBB
						regulator. Otherwise, it is disabled.
- qcom,qpnp-ibb-limit-max-current-enable:	A boolean property which upon set will
						enforce maximum inductor current constraint
						for IBB regulator. Otherwise, there is no
						maximum current constraint.
- qcom,qpnp-ibb-use-default-voltage:		A boolean property which upon set will
						use the value specified in
						qcom,qpnp-ibb-init-voltage property.
						This will be used only if the bootloader
						doesn't configure the output voltage
						already. If it it not specified, then
						output voltage can be configured to
						any value in the allowed limit.
- qcom,output-voltage-one-pulse			The expected voltage (in mV) of VDISN signal
						on the first SWIRE pulse. This property
						can be specified only if 'qpnp,swire-control'
						is defined. The minimum and maximum values
						are 1400mV and 7700mV.

Example:
	qcom,pmi8994@3 {
		qpnp-labibb-regulator {
			spmi-dev-container;
			compatible = "qcom,qpnp-labibb-regulator";
			#address-cells = <1>;
			#size-cells = <1>;
			qpnp,qpnp-labibb-mode = "lcd";
			qcom,pmic-revid = <&pmi8994_revid>;
			qcom,skip-2nd-swire-cmd;

			lab_regulator: qcom,lab@de00 {
				reg = <0xde00 0x100>;
				reg-names = "lab";

				interrupts = <0x3 0xde 0x0>;
                                interrupt-names = "lab-vreg-ok";

				regulator-name = "lab_reg";
				regulator-min-microvolt = <4600000>;
				regulator-max-microvolt = <6000000>;

				qcom,qpnp-lab-min-voltage = <4600000>;
				qcom,qpnp-lab-step-size = <100000>;
				qcom,qpnp-lab-slew-rate = <5000>;
				qcom,qpnp-lab-use-default-voltage;
				qcom,qpnp-lab-init-voltage = <5500000>;
				qcom,qpnp-lab-init-amoled-voltage = <4600000>;
				qcom,qpnp-lab-init-lcd-voltage = <5500000>;

				qcom,qpnp-lab-soft-start = <400>;

				qcom,qpnp-lab-full-pull-down;
				qcom,qpnp-lab-pull-down-enable;
				qcom,qpnp-lab-switching-clock-frequency = <1600>;
				qcom,qpnp-lab-limit-maximum-current = <800>;
				qcom,qpnp-lab-limit-max-current-enable;
				qcom,qpnp-lab-ps-threshold = <40>;
				qcom,qpnp-lab-ps-enable;
				qcom,qpnp-lab-nfet-size = <100>;
				qcom,qpnp-lab-pfet-size = <100>;
				qcom,qpnp-lab-max-precharge-time = <200>;
			};

			ibb_regulator: qcom,ibb@dc00 {
				reg = <0xdc00 0x100>;
				reg-names = "ibb_reg";
				regulator-name = "ibb_reg";

				regulator-min-microvolt = <4600000>;
				regulator-max-microvolt = <6000000>;

				qcom,qpnp-ibb-min-voltage = <1400000>;
				qcom,qpnp-ibb-step-size = <100000>;
				qcom,qpnp-ibb-slew-rate = <2000000>;
				qcom,qpnp-ibb-use-default-voltage;
				qcom,qpnp-ibb-init-voltage = <5500000>;
				qcom,qpnp-ibb-init-amoled-voltage = <4000000>;
				qcom,qpnp-ibb-init-lcd-voltage = <5500000>;

				qcom,qpnp-ibb-soft-start = <400>;

				qcom,qpnp-ibb-discharge-resistor = <300>;
				qcom,qpnp-ibb-lab-pwrup-delay = <8000>;
				qcom,qpnp-ibb-lab-pwrdn-delay = <8000>;
				qcom,qpnp-ibb-en-discharge;

				qcom,qpnp-ibb-full-pull-down;
				qcom,qpnp-ibb-pull-down-enable;
				qcom,qpnp-ibb-switching-clock-frequency = <1480>;
				qcom,qpnp-ibb-limit-maximum-current = <1550>;
				qcom,qpnp-ibb-debounce-cycle = <16>;
				qcom,qpnp-ibb-limit-max-current-enable;
				qcom,qpnp-ibb-ps-enable;
			};

		};
	};
