Qualcomm's QPNP PMIC Battery Management System driver

QPNP PMIC BMS provides interface to clients to read properties related
to the battery. It's main function is to calculate the State of Charge (SOC),
a 0-100 percentage representing the amount of charge left in the battery.

There are two required peripherals in the BMS driver, both implemented as
subnodes in the example. These peripherals must not be disabled if the BMS
device is to enabled:
- qcom,bms-bms : The main BMS device. Supports battery monitoring controls and
		sensors.
- qcom,bms-iadc : The BMS IADC peripheral in the IADC device. This is required
		to determine whether the BMS is using an internal or external
		rsense to accumulate the Coulomb Counter and read current.

Parent node required properties:
- compatible : should be "qcom,qpnp-bms" for the BM driver.
- qcom,r-sense-uohm : sensor resistance in in micro-ohms.
- qcom,v-cutoff-uv : cutoff voltage where the battery is considered dead in
			micro-volts.
- qcom,max-voltage-uv : maximum voltage for the battery in micro-volts.
- qcom,r-conn-mohm : connector resistance in milli-ohms.
- qcom,shutdown-soc-valid-limit : If the ocv upon restart is within this
			distance of the shutdown ocv, the BMS will try to force
			the new SoC to the old one to provide charge continuity.
			That is to say,
				if (abs(shutdown-soc - current-soc) < limit)
				then use old SoC.
- qcom,adjust-soc-low-threshold : The low threshold for the "flat portion"
			of the charging curve. The BMS will not adjust SoC
			based on voltage during this time.
- qcom,adjust-soc-high-threshold : The high threshold for the "flat
			portion" of the charging curve. The BMS will not
			adjust SoC based on voltage during this time.
- qcom,ocv-voltage-low-threshold-uv : The low voltage threshold for the
			"flat portion" of the discharge curve. The bms will not
			accept new ocvs between these thresholds.
- qcom,ocv-voltage-high-threshold-uv : The high voltage threshold for
			the "flat portion" of the discharge curve.
			The bms will not accept new ocvs between these
			thresholds.
- qcom,low-soc-calculate-soc-threshold : The SoC threshold for when
			the periodic calculate_soc work speeds up. This ensures
			SoC is updated in userspace constantly when we are near
			shutdown.
- qcom,low-voltage-threshold : The battery voltage threshold in micro-volts for
			when the BMS tries to wake up and hold a wakelock to
			ensure a clean shutdown.
- qcom,low-soc-calculate-soc-ms : The time period between subsequent
			SoC recalculations when the current SoC is below
			qcom,low-soc-calculate-soc-threshold or when battery
			voltage is below qcom,low-voltage-threshold.
- qcom,soc-calculate-soc-ms : The time period between subsequent SoC
			recalculations when the current SoC is above or equal
			qcom,low-soc-calculate-soc-threshold.
- qcom,chg-term-ua : current in micro-amps when charging is considered done.
			As soon as current passes this point, charging is
			stopped.
- qcom,batt-type: Type of battery used. This is an integer that corresponds
			to the enum defined in
			include/linux/mfd/pm8xxx/batterydata-lib.h

Parent node optional properties:
- qcom,ignore-shutdown-soc: A boolean that controls whether BMS will
			try to force the startup SoC to be the same as the
			shutdown SoC. Defining it will make BMS ignore the
			shutdown SoC.
- qcom,use-voltage-soc : A boolean that controls whether BMS will use
			voltage-based SoC instead of a coulomb counter based
			one. Voltage-based SoC will not guarantee linearity.
- qcom,use-external-rsense : A boolean that controls whether BMS will use
			an external sensor resistor instead of the default
			RDS of the batfet.
- qcom,use-ocv-thresholds : A boolean that controls whether BMS will take
			new OCVs only between the defined thresholds.

All sub node required properties:
- reg : offset and length of the PMIC peripheral register map.

qcom,bms-bms node required properties:
- interrupts : the interrupt mappings.
		The format should be
		<slave-id peripheral-id interrupt-number>.
- interrupt-names : names for the mapped bms interrupt
		The following interrupts are required:
		0 : vsense_for_r
		1 : vsense_avg
		2 : sw_cc_thr
		3 : ocv_thr
		4 : charge_begin
		5 : good_ocv
		6 : ocv_for_r
		7 : cc_thr

Example:
pm8941_bms: qcom,bms {
	spmi-dev-container;
	compatible = "qcom,qpnp-bms";
	#address-cells = <1>;
	#size-cells = <1>;
	status = "disabled";

	qcom,r-sense-uohm = <10000>;
	qcom,v-cutoff-uv = <3400000>;
	qcom,max-voltage-uv = <4200000>;
	qcom,r-conn-mohm = <18>;
	qcom,shutdown-soc-valid-limit = <20>;
	qcom,ocv-voltage-low-threshold-uv = <3650000>;
	qcom,ocv-voltage-high-threshold-uv = <3750000>;
	qcom,adjust-soc-low-threshold = <25>;
	qcom,adjust-soc-high-threshold = <45>;
	qcom,low-soc-calculate-soc-threshold = <15>;
	qcom,low-voltage-threshold = <3420000>;
	qcom,low-soc-calculate-soc-ms = <5000>;
	qcom,calculate-soc-ms = <20000>;
	qcom,chg-term-ua = <100000>;
	qcom,batt-type = <0>;

	qcom,bms-iadc@3800 {
		reg = <0x3800 0x100>;
	};

	qcom,bms-bms@4000 {
		reg = <0x4000 0x100>;
		interrupts =	<0x0 0x40 0x0>,
				<0x0 0x40 0x1>,
				<0x0 0x40 0x2>,
				<0x0 0x40 0x3>,
				<0x0 0x40 0x4>,
				<0x0 0x40 0x5>,
				<0x0 0x40 0x6>,
				<0x0 0x40 0x7>;

		interrupt-names = "vsense_for_r",
				  "vsense_avg",
				  "sw_cc_thr",
				  "ocv_thr",
				  "charge_begin",
				  "good_ocv",
				  "ocv_for_r",
				  "cc_thr";
	};
};
