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
 - voltage-max-design-microvolt: fully charged 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.
 - resistance-temp-table: An array providing the temperature in degree Celsius
   and corresponding battery internal resistance percent, which is used to look
   up the resistance percent according to current temperature to get a accurate
   batterty internal resistance in different temperatures.

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>;
		voltage-max-design-microvolt = <4200000>;
		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>, ...;
		resistance-temp-table = <20 100>, <10 90>, <0 80>, <(-10) 60>;
	};

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

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