On Thu, Sep 27, 2018 at 03:26:55PM +0800, Baolin Wang wrote: > Some battery driver will use the open circuit voltage (OCV) value to look > up the corresponding battery capacity percent in one certain degree Celsius. > Thus this patch provides some battery properties to present the OCV table > temperatures and OCV capacity table values. Moreover it also provides some > helper functions to use the OCV capacity table for users. > > Suggested-by: Sebastian Reichel <sre@xxxxxxxxxx> > Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxx> > Reviewed-by: Linus Walleij <linus.walleij@xxxxxxxxxx> > --- > Changes from v2: > - Use type __be32 to calculate the table length. > - Update error messages. > - Add some helper functions. > > Changes from v1: > - New patch in v2. > --- > .../devicetree/bindings/power/supply/battery.txt | 14 +++ Please split binding patches. > drivers/power/supply/power_supply_core.c | 125 +++++++++++++++++++- > include/linux/power_supply.h | 19 +++ > 3 files changed, 157 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/power/supply/battery.txt b/Documentation/devicetree/bindings/power/supply/battery.txt > index 938d027..cad38df 100644 > --- a/Documentation/devicetree/bindings/power/supply/battery.txt > +++ b/Documentation/devicetree/bindings/power/supply/battery.txt > @@ -23,6 +23,16 @@ Optional Properties: > - 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 battery capacity percent > + with corresponding open circuit voltage (OCV) of the battery, which > + is used to look up battery capacity according to current OCV value. > + - ocv-capacity-table-1: Same as ocv-capacity-table-0 > + ...... > + - ocv-capacity-table-n: Same as ocv-capacity-table-0 So it is tubles of (percent, voltage)? What's the units for voltage? What determines the # of entries for each table? Do all tables have the same number of entries? > + - ocv-capacity-table-temperatures: 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. This should have unit suffix. Perhaps just "ocv-capacity-celsius" to avoid being too long. > Battery properties are named, where possible, for the corresponding > elements in enum power_supply_property, defined in > @@ -44,6 +54,10 @@ Example: > constant-charge-current-max-microamp = <900000>; > constant-charge-voltage-max-microvolt = <4200000>; > factory-internal-resistance-micro-ohms = <250000>; > + ocv-capacity-table-temperatures = <(-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>, ...; > }; > > charger: charger@11 {