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", "amoled" or
				"stand-alone".
				"lcd" means using LAB and IBB regulators are
				configured for LCD mode together.
				"amoled" means using LAB and IBB regulators are
				configured for AMOLED mode together.
				"stand-alone" means using LAB and IBB regulators
				as stand alone regulators.

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".

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";

			lab_regulator: qcom,lab@de00 {
				reg = <0xde00 0x100>;
				reg-names = "lab";
				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;
			};

		};
	};
