Battery Characteristics

The devicetree battery node provides static battery characteristics.
In smart batteries, these are typically stored in non-volatile memory
on a fuel gauge chip. The battery node should be used where there is
no appropriate non-volatile memory, or it is unprogrammed/incorrect.

Upstream dts files should not include battery nodes, unless the battery
represented cannot easily be replaced in the system by one of a
different type. This prevents unpredictable, potentially harmful,
behavior should a replacement that changes the battery type occur
without a corresponding update to the dtb.

Required Properties:
 - compatible: Must be "simple-battery"

Optional Properties:
 - voltage-min-design-microvolt: drained battery voltage
 - energy-full-design-microwatt-hours: battery design energy
 - charge-full-design-microamp-hours: battery design capacity
 - precharge-current-microamp: current for pre-charge phase
 - charge-term-current-microamp: current for charge termination phase
 - constant-charge-current-max-microamp: maximum constant input current
 - constant-charge-voltage-max-microvolt: maximum constant input voltage
 - factory-internal-resistance-micro-ohms: battery factory internal resistance
 - ocv-capacity-table-0: An array providing the open circuit voltage (OCV)
   of the battery and corresponding battery capacity percent, which is used
   to look up battery capacity according to current OCV value. And the open
   circuit voltage unit is microvolt.
 - ocv-capacity-table-1: Same as ocv-capacity-table-0
 ......
 - ocv-capacity-table-n: Same as ocv-capacity-table-0
 - ocv-capacity-celsius: An array containing the temperature in degree Celsius,
   for each of the battery capacity lookup table. The first temperature value
   specifies the OCV table 0, and the second temperature value specifies the
   OCV table 1, and so on.
 - voltage-temp-table: An array providing the voltage in microvolt and
   corresponding temperature in degree Celsius, which is used to look up the
   temperature by one voltage value.
 - capacity-temp-table: An array providing the capacity percentage and corresponding
   temperature in degree Celsius, which is used to look up the capacity percentage
   by one temperature value.
 - resistance-temp-table: An array providing the resistance percentage and corresponding
   temperature in degree Celsius, which is used to look up the resistance percentage
   by one temperature value.
 - charge-sdp-current-microamp: An array providing the current and
   limit current for SDP charger type.
 - charge-dcp-current-microamp: An array providing the current and
   limit current for DCP charger type.
 - charge-cdp-current-microamp: An array providing the current and
   limit current for CDP charger type.
 - charge-aca-current-microamp: An array providing the current and
   limit current for ACA charger type.
 - charge-unknown-current-microamp: An array providing the current and
   limit current for unknown charger type.
 - charge-fchg-current-microamp: An array providing the current and
   limit current for fast charger type.
Battery properties are named, where possible, for the corresponding
elements in enum power_supply_property, defined in
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/power_supply.h

Batteries must be referenced by chargers and/or fuel-gauges
using a phandle. The phandle's property should be named
"monitored-battery".

Example:

	bat: battery {
		compatible = "simple-battery";
		voltage-min-design-microvolt = <3200000>;
		energy-full-design-microwatt-hours = <5290000>;
		charge-full-design-microamp-hours = <1430000>;
		precharge-current-microamp = <256000>;
		charge-term-current-microamp = <128000>;
		constant-charge-current-max-microamp = <900000>;
		constant-charge-voltage-max-microvolt = <4200000>;
		factory-internal-resistance-micro-ohms = <250000>;
		ocv-capacity-celsius = <(-10) 0 10>;
		ocv-capacity-table-0 = <4185000 100>, <4113000 95>, <4066000 90>, ...;
		ocv-capacity-table-1 = <4200000 100>, <4185000 95>, <4113000 90>, ...;
		ocv-capacity-table-2 = <4250000 100>, <4200000 95>, <4185000 90>, ...;
		voltage-temp-table = <1052000 100>, <953000 90>, <858000 80>, ...;
		capacity-temp-table = <20 100>, <10 90>, <0 80>, <(-10) 60>;
		resistance-temp-table = <20 100>, <10 90>, <0 80>, <(-10) 60>;
		charge-sdp-current-microamp = <500000 500000>;
		charge-dcp-current-microamp = <1500000 3000000>;
		charge-cdp-current-microamp = <1500000 1500000>;
		charge-aca-current-microamp = <1500000 5000000>;
		charge-unknown-current-microamp = <500000 500000>;
		charge-fchg-current-microamp = <3000000 3000000>;
	};

	charger: charger@11 {
		....
		monitored-battery = <&bat>;
		...
	};

	fuel_gauge: fuel-gauge@22 {
		....
		monitored-battery = <&bat>;
		...
	};
