diff mbox series

[v3,2/6] dt-bindings: power: supply: Extend max17040 compatibility

Message ID 20200624155633.3557401-3-iskren.chernev@gmail.com
State Accepted
Commit 11a2bdc10f5b5e092ee84f8dc2966c78471909fd
Headers show
Series [v3,1/6] power: supply: max17040: Use regmap i2c | expand

Commit Message

Iskren Chernev June 24, 2020, 3:56 p.m. UTC
Maxim max17040 is a fuel gauge from a larger family utilising the Model
Gauge technology. Document all different compatible strings that the
max17040 driver recognizes.

Some devices in the wild report double the capacity. The
maxim,double-soc (from State-Of-Charge) property fixes that.

Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>
---
 .../bindings/power/supply/max17040_battery.txt    | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

Comments

Rob Herring July 13, 2020, 7:03 p.m. UTC | #1
On Wed, Jun 24, 2020 at 06:56:29PM +0300, Iskren Chernev wrote:
> Maxim max17040 is a fuel gauge from a larger family utilising the Model

> Gauge technology. Document all different compatible strings that the

> max17040 driver recognizes.

> 

> Some devices in the wild report double the capacity. The

> maxim,double-soc (from State-Of-Charge) property fixes that.

> 

> Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>

> ---

>  .../bindings/power/supply/max17040_battery.txt    | 15 ++++++++++++++-

>  1 file changed, 14 insertions(+), 1 deletion(-)

> 

> diff --git a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

> index 4e0186b8380fa..554bce82a08e6 100644

> --- a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

> +++ b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

> @@ -2,7 +2,9 @@ max17040_battery

>  ~~~~~~~~~~~~~~~~

>  

>  Required properties :

> - - compatible : "maxim,max17040" or "maxim,max77836-battery"

> + - compatible : "maxim,max17040", "maxim,max17041", "maxim,max17043",

> + 		"maxim,max17044", "maxim,max17048", "maxim,max17049",

> +		"maxim,max17058", "maxim,max17059" or "maxim,max77836-battery"

>   - reg: i2c slave address

>  

>  Optional properties :

> @@ -11,6 +13,10 @@ Optional properties :

>  				generated. Can be configured from 1 up to 32

>  				(%). If skipped the power up default value of

>  				4 (%) will be used.

> +- maxim,double-soc : 		Certain devices return double the capacity.

> +				Specify this boolean property to divide the

> +				reported value in 2 and thus normalize it.

> +				SOC == State of Charge == Capacity.


This can't be implied by the compatible string?

>  - interrupts : 			Interrupt line see Documentation/devicetree/

>  				bindings/interrupt-controller/interrupts.txt

>  - wakeup-source :		This device has wakeup capabilities. Use this

> @@ -31,3 +37,10 @@ Example:

>  		interrupts = <2 IRQ_TYPE_EDGE_FALLING>;

>  		wakeup-source;

>  	};

> +

> +	battery-fuel-gauge@36 {

> +		compatible = "maxim,max17048";

> +		reg = <0x36>;

> +		maxim,alert-low-soc-level = <10>;

> +		maxim,double-soc;

> +	};

> -- 

> 2.27.0

>
Iskren Chernev July 14, 2020, 8:49 a.m. UTC | #2
On 7/13/20 10:03 PM, Rob Herring wrote:
> On Wed, Jun 24, 2020 at 06:56:29PM +0300, Iskren Chernev wrote:

>> Maxim max17040 is a fuel gauge from a larger family utilising the Model

>> Gauge technology. Document all different compatible strings that the

>> max17040 driver recognizes.

>>

>> Some devices in the wild report double the capacity. The

>> maxim,double-soc (from State-Of-Charge) property fixes that.

>>

>> Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>

>> ---

>>  .../bindings/power/supply/max17040_battery.txt    | 15 ++++++++++++++-

>>  1 file changed, 14 insertions(+), 1 deletion(-)

>>

>> diff --git a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

>> index 4e0186b8380fa..554bce82a08e6 100644

>> --- a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

>> +++ b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

>> @@ -2,7 +2,9 @@ max17040_battery

>>  ~~~~~~~~~~~~~~~~

>>

>>  Required properties :

>> - - compatible : "maxim,max17040" or "maxim,max77836-battery"

>> + - compatible : "maxim,max17040", "maxim,max17041", "maxim,max17043",

>> +         "maxim,max17044", "maxim,max17048", "maxim,max17049",

>> +        "maxim,max17058", "maxim,max17059" or "maxim,max77836-battery"

>>   - reg: i2c slave address

>>

>>  Optional properties :

>> @@ -11,6 +13,10 @@ Optional properties :

>>                  generated. Can be configured from 1 up to 32

>>                  (%). If skipped the power up default value of

>>                  4 (%) will be used.

>> +- maxim,double-soc :         Certain devices return double the capacity.

>> +                Specify this boolean property to divide the

>> +                reported value in 2 and thus normalize it.

>> +                SOC == State of Charge == Capacity.

>

> This can't be implied by the compatible string?

>


From what I can tell - no. Here are multiple examples of downstream code:

For max17043:
- single soc [1]
- double soc [2]
- both (toggle with macro) [3]

For max17048:
- single soc [4]
- double soc [5]
- both (toggle with dts) [6], docs [7]

For max17058:
- both (toggle with macro) [8], this device is single
- both (toggle with dts) [9], this device is double [10]

[1] https://github.com/LineageOS/lge-kernel-sniper/blob/9907b1312e9b4c5c4f73ac9bf2e772b12e1c9145/drivers/power/max17043_fuelgauge.c#L383
[2] https://github.com/LineageOS/android_kernel_lge_v500/blob/b4fe00e1f8f09c173a6c28a42ca69ff9529cc13b/drivers/power/max17043_fuelgauge.c#L307
[3] https://github.com/LineageOS/lge-kernel-p880/blob/c5795644a60338f88c7aa29208efadde835ea769/drivers/power/max17043_fuelgauge.c#L406
[4] https://github.com/LineageOS/lge-kernel-star/blob/d963160ebd8e64263ed740d5f1e1a0324085a826/drivers/power/max17048_battery.c#L168
[5] https://github.com/LineageOS/android_kernel_samsung_p4/blob/b190cf1bf4ca0e597a51c820a323f2aa3b2c8585/drivers/power/max17048_battery.c#L192
[6] https://github.com/LineageOS/android_kernel_htc_flounder/blob/03e0b4f36fc60c226adacdb48306df9ec65de33b/drivers/power/max17048_battery.c#L248
[7] https://github.com/LineageOS/android_kernel_htc_flounder/blob/03e0b4f36fc60c226adacdb48306df9ec65de33b/Documentation/devicetree/bindings/power_supply/max17048_battery.txt#L23
[8] https://github.com/LineageOS/android_kernel_asus_moorefield/blob/c3eae894ce8092c2a9a51f9a4924c8df714d6b3c/drivers/power/ASUS_BATTERY/max17058_battery.c#L551
[9] https://github.com/LineageOS/android_kernel_motorola_msm8916/blob/415000d938de1aa46206043e06f033edf33557ce/drivers/power/max17058_battery.c#L225
[10] https://github.com/LineageOS/android_kernel_motorola_msm8916/blob/415000d938de1aa46206043e06f033edf33557ce/arch/arm/boot/dts/qcom/msm8916-harpia-p0a.dts#L59

>>  - interrupts :             Interrupt line see Documentation/devicetree/

>>                  bindings/interrupt-controller/interrupts.txt

>>  - wakeup-source :        This device has wakeup capabilities. Use this

>> @@ -31,3 +37,10 @@ Example:

>>          interrupts = <2 IRQ_TYPE_EDGE_FALLING>;

>>          wakeup-source;

>>      };

>> +

>> +    battery-fuel-gauge@36 {

>> +        compatible = "maxim,max17048";

>> +        reg = <0x36>;

>> +        maxim,alert-low-soc-level = <10>;

>> +        maxim,double-soc;

>> +    };

>> --

>> 2.27.0

>>
Rob Herring July 14, 2020, 9:08 p.m. UTC | #3
On Tue, Jul 14, 2020 at 11:49:44AM +0300, Iskren Chernev wrote:
> 

> On 7/13/20 10:03 PM, Rob Herring wrote:

> > On Wed, Jun 24, 2020 at 06:56:29PM +0300, Iskren Chernev wrote:

> >> Maxim max17040 is a fuel gauge from a larger family utilising the Model

> >> Gauge technology. Document all different compatible strings that the

> >> max17040 driver recognizes.

> >>

> >> Some devices in the wild report double the capacity. The

> >> maxim,double-soc (from State-Of-Charge) property fixes that.

> >>

> >> Signed-off-by: Iskren Chernev <iskren.chernev@gmail.com>

> >> ---

> >>  .../bindings/power/supply/max17040_battery.txt    | 15 ++++++++++++++-

> >>  1 file changed, 14 insertions(+), 1 deletion(-)

> >>

> >> diff --git a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

> >> index 4e0186b8380fa..554bce82a08e6 100644

> >> --- a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

> >> +++ b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt

> >> @@ -2,7 +2,9 @@ max17040_battery

> >>  ~~~~~~~~~~~~~~~~

> >>

> >>  Required properties :

> >> - - compatible : "maxim,max17040" or "maxim,max77836-battery"

> >> + - compatible : "maxim,max17040", "maxim,max17041", "maxim,max17043",

> >> +         "maxim,max17044", "maxim,max17048", "maxim,max17049",

> >> +        "maxim,max17058", "maxim,max17059" or "maxim,max77836-battery"

> >>   - reg: i2c slave address

> >>

> >>  Optional properties :

> >> @@ -11,6 +13,10 @@ Optional properties :

> >>                  generated. Can be configured from 1 up to 32

> >>                  (%). If skipped the power up default value of

> >>                  4 (%) will be used.

> >> +- maxim,double-soc :         Certain devices return double the capacity.

> >> +                Specify this boolean property to divide the

> >> +                reported value in 2 and thus normalize it.

> >> +                SOC == State of Charge == Capacity.

> >

> > This can't be implied by the compatible string?

> >

> 

> >From what I can tell - no. Here are multiple examples of downstream code:


Okay,

Reviewed-by: Rob Herring <robh@kernel.org>
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt
index 4e0186b8380fa..554bce82a08e6 100644
--- a/Documentation/devicetree/bindings/power/supply/max17040_battery.txt
+++ b/Documentation/devicetree/bindings/power/supply/max17040_battery.txt
@@ -2,7 +2,9 @@  max17040_battery
 ~~~~~~~~~~~~~~~~
 
 Required properties :
- - compatible : "maxim,max17040" or "maxim,max77836-battery"
+ - compatible : "maxim,max17040", "maxim,max17041", "maxim,max17043",
+ 		"maxim,max17044", "maxim,max17048", "maxim,max17049",
+		"maxim,max17058", "maxim,max17059" or "maxim,max77836-battery"
  - reg: i2c slave address
 
 Optional properties :
@@ -11,6 +13,10 @@  Optional properties :
 				generated. Can be configured from 1 up to 32
 				(%). If skipped the power up default value of
 				4 (%) will be used.
+- maxim,double-soc : 		Certain devices return double the capacity.
+				Specify this boolean property to divide the
+				reported value in 2 and thus normalize it.
+				SOC == State of Charge == Capacity.
 - interrupts : 			Interrupt line see Documentation/devicetree/
 				bindings/interrupt-controller/interrupts.txt
 - wakeup-source :		This device has wakeup capabilities. Use this
@@ -31,3 +37,10 @@  Example:
 		interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
 		wakeup-source;
 	};
+
+	battery-fuel-gauge@36 {
+		compatible = "maxim,max17048";
+		reg = <0x36>;
+		maxim,alert-low-soc-level = <10>;
+		maxim,double-soc;
+	};