From: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
Some battery drivers provide the ability to export resistance as a
parameter. Add resistance power supply property for that purpose.
Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
---
Documentation/ABI/testing/sysfs-class-power | 10 ++++++++++
drivers/power/supply/power_supply_sysfs.c | 1 +
include/linux/power_supply.h | 1 +
3 files changed, 12 insertions(+)
diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
index 560124cc31770cde03bcdbbba0d85a5bd78b15a0..22a565a6a1c509461b8c483e12975295765121d6 100644
--- a/Documentation/ABI/testing/sysfs-class-power
+++ b/Documentation/ABI/testing/sysfs-class-power
@@ -552,6 +552,16 @@ Description:
Integer > 0: representing full cycles
Integer = 0: cycle_count info is not available
+What: /sys/class/power_supply/<supply_name>/resistance
+Date: May 2025
+Contact: linux-arm-msm@vger.kernel.org
+Description:
+ Reports the resistance of the battery power supply.
+
+ Access: Read
+
+ Valid values: Represented in microohms
+
**USB Properties**
What: /sys/class/power_supply/<supply_name>/input_current_limit
diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
index a438f7983d4f6a832e9d479184c7c35453e1757c..dd829148eb6fda5dcd7eab53fc70f99081763714 100644
--- a/drivers/power/supply/power_supply_sysfs.c
+++ b/drivers/power/supply/power_supply_sysfs.c
@@ -220,6 +220,7 @@ static struct power_supply_attr power_supply_attrs[] __ro_after_init = {
POWER_SUPPLY_ATTR(MANUFACTURE_YEAR),
POWER_SUPPLY_ATTR(MANUFACTURE_MONTH),
POWER_SUPPLY_ATTR(MANUFACTURE_DAY),
+ POWER_SUPPLY_ATTR(RESISTANCE),
/* Properties of type `const char *' */
POWER_SUPPLY_ATTR(MODEL_NAME),
POWER_SUPPLY_ATTR(MANUFACTURER),
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
index c4cb854971f53a244ba7742a15ce7a5515da6199..de3e88810e322546470b21258913abc7707c86a7 100644
--- a/include/linux/power_supply.h
+++ b/include/linux/power_supply.h
@@ -174,6 +174,7 @@ enum power_supply_property {
POWER_SUPPLY_PROP_MANUFACTURE_YEAR,
POWER_SUPPLY_PROP_MANUFACTURE_MONTH,
POWER_SUPPLY_PROP_MANUFACTURE_DAY,
+ POWER_SUPPLY_PROP_RESISTANCE,
/* Properties of type `const char *' */
POWER_SUPPLY_PROP_MODEL_NAME,
POWER_SUPPLY_PROP_MANUFACTURER,
--
2.34.1
Hi,
On Fri, May 30, 2025 at 03:35:06PM +0800, Fenglin Wu via B4 Relay wrote:
> From: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
>
> Some battery drivers provide the ability to export resistance as a
> parameter. Add resistance power supply property for that purpose.
This is missing some information and the naming is bad.
Which resistance (I suppose battery internal resistance)?
That is heavily dependent on the battery temperature. So this needs
to document if this is for the current temperature or for some
specific one.
-- Sebastian
> Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
> ---
> Documentation/ABI/testing/sysfs-class-power | 10 ++++++++++
> drivers/power/supply/power_supply_sysfs.c | 1 +
> include/linux/power_supply.h | 1 +
> 3 files changed, 12 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
> index 560124cc31770cde03bcdbbba0d85a5bd78b15a0..22a565a6a1c509461b8c483e12975295765121d6 100644
> --- a/Documentation/ABI/testing/sysfs-class-power
> +++ b/Documentation/ABI/testing/sysfs-class-power
> @@ -552,6 +552,16 @@ Description:
> Integer > 0: representing full cycles
> Integer = 0: cycle_count info is not available
>
> +What: /sys/class/power_supply/<supply_name>/resistance
> +Date: May 2025
> +Contact: linux-arm-msm@vger.kernel.org
> +Description:
> + Reports the resistance of the battery power supply.
> +
> + Access: Read
> +
> + Valid values: Represented in microohms
> +
> **USB Properties**
>
> What: /sys/class/power_supply/<supply_name>/input_current_limit
> diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
> index a438f7983d4f6a832e9d479184c7c35453e1757c..dd829148eb6fda5dcd7eab53fc70f99081763714 100644
> --- a/drivers/power/supply/power_supply_sysfs.c
> +++ b/drivers/power/supply/power_supply_sysfs.c
> @@ -220,6 +220,7 @@ static struct power_supply_attr power_supply_attrs[] __ro_after_init = {
> POWER_SUPPLY_ATTR(MANUFACTURE_YEAR),
> POWER_SUPPLY_ATTR(MANUFACTURE_MONTH),
> POWER_SUPPLY_ATTR(MANUFACTURE_DAY),
> + POWER_SUPPLY_ATTR(RESISTANCE),
> /* Properties of type `const char *' */
> POWER_SUPPLY_ATTR(MODEL_NAME),
> POWER_SUPPLY_ATTR(MANUFACTURER),
> diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
> index c4cb854971f53a244ba7742a15ce7a5515da6199..de3e88810e322546470b21258913abc7707c86a7 100644
> --- a/include/linux/power_supply.h
> +++ b/include/linux/power_supply.h
> @@ -174,6 +174,7 @@ enum power_supply_property {
> POWER_SUPPLY_PROP_MANUFACTURE_YEAR,
> POWER_SUPPLY_PROP_MANUFACTURE_MONTH,
> POWER_SUPPLY_PROP_MANUFACTURE_DAY,
> + POWER_SUPPLY_PROP_RESISTANCE,
> /* Properties of type `const char *' */
> POWER_SUPPLY_PROP_MODEL_NAME,
> POWER_SUPPLY_PROP_MANUFACTURER,
>
> --
> 2.34.1
>
>
On 6/22/2025 9:26 AM, Sebastian Reichel wrote:
> Hi,
>
> On Fri, May 30, 2025 at 03:35:06PM +0800, Fenglin Wu via B4 Relay wrote:
>> From: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
>>
>> Some battery drivers provide the ability to export resistance as a
>> parameter. Add resistance power supply property for that purpose.
> This is missing some information and the naming is bad.
>
> Which resistance (I suppose battery internal resistance)?
>
> That is heavily dependent on the battery temperature. So this needs
> to document if this is for the current temperature or for some
> specific one.
>
> -- Sebastian
This is battery internal resistance calculated by battery management
system, using the real-time temperature measured by the thermistor
inside the battery pack.
I can update the name to something like "rt_internal_resistance" and
update the description accordingly.
>> Signed-off-by: Fenglin Wu <fenglin.wu@oss.qualcomm.com>
>> ---
>> Documentation/ABI/testing/sysfs-class-power | 10 ++++++++++
>> drivers/power/supply/power_supply_sysfs.c | 1 +
>> include/linux/power_supply.h | 1 +
>> 3 files changed, 12 insertions(+)
>>
>> diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
>> index 560124cc31770cde03bcdbbba0d85a5bd78b15a0..22a565a6a1c509461b8c483e12975295765121d6 100644
>> --- a/Documentation/ABI/testing/sysfs-class-power
>> +++ b/Documentation/ABI/testing/sysfs-class-power
>> @@ -552,6 +552,16 @@ Description:
>> Integer > 0: representing full cycles
>> Integer = 0: cycle_count info is not available
>>
>> +What: /sys/class/power_supply/<supply_name>/resistance
>> +Date: May 2025
>> +Contact: linux-arm-msm@vger.kernel.org
>> +Description:
>> + Reports the resistance of the battery power supply.
>> +
>> + Access: Read
>> +
>> + Valid values: Represented in microohms
>> +
>> **USB Properties**
>>
>> What: /sys/class/power_supply/<supply_name>/input_current_limit
>> diff --git a/drivers/power/supply/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c
>> index a438f7983d4f6a832e9d479184c7c35453e1757c..dd829148eb6fda5dcd7eab53fc70f99081763714 100644
>> --- a/drivers/power/supply/power_supply_sysfs.c
>> +++ b/drivers/power/supply/power_supply_sysfs.c
>> @@ -220,6 +220,7 @@ static struct power_supply_attr power_supply_attrs[] __ro_after_init = {
>> POWER_SUPPLY_ATTR(MANUFACTURE_YEAR),
>> POWER_SUPPLY_ATTR(MANUFACTURE_MONTH),
>> POWER_SUPPLY_ATTR(MANUFACTURE_DAY),
>> + POWER_SUPPLY_ATTR(RESISTANCE),
>> /* Properties of type `const char *' */
>> POWER_SUPPLY_ATTR(MODEL_NAME),
>> POWER_SUPPLY_ATTR(MANUFACTURER),
>> diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h
>> index c4cb854971f53a244ba7742a15ce7a5515da6199..de3e88810e322546470b21258913abc7707c86a7 100644
>> --- a/include/linux/power_supply.h
>> +++ b/include/linux/power_supply.h
>> @@ -174,6 +174,7 @@ enum power_supply_property {
>> POWER_SUPPLY_PROP_MANUFACTURE_YEAR,
>> POWER_SUPPLY_PROP_MANUFACTURE_MONTH,
>> POWER_SUPPLY_PROP_MANUFACTURE_DAY,
>> + POWER_SUPPLY_PROP_RESISTANCE,
>> /* Properties of type `const char *' */
>> POWER_SUPPLY_PROP_MODEL_NAME,
>> POWER_SUPPLY_PROP_MANUFACTURER,
>>
>> --
>> 2.34.1
>>
>>
Hi, On Mon, Jun 30, 2025 at 04:28:14PM +0800, Fenglin Wu wrote: > On 6/22/2025 9:26 AM, Sebastian Reichel wrote: > > On Fri, May 30, 2025 at 03:35:06PM +0800, Fenglin Wu via B4 Relay wrote: > > > From: Fenglin Wu <fenglin.wu@oss.qualcomm.com> > > > > > > Some battery drivers provide the ability to export resistance as a > > > parameter. Add resistance power supply property for that purpose. > > This is missing some information and the naming is bad. > > > > Which resistance (I suppose battery internal resistance)? > > > > That is heavily dependent on the battery temperature. So this needs > > to document if this is for the current temperature or for some > > specific one. > > > > -- Sebastian > > This is battery internal resistance calculated by battery management system, > using the real-time temperature measured by the thermistor inside the > battery pack. > > I can update the name to something like "rt_internal_resistance" and update > the description accordingly. Your message is kind of mixed signal to me. If the BMS needs the thermistor to calculate the internal resistance, it means the data is either not real-time, but just adopting some fixed value to the current temperature, or the internal resistance is adopted from the current temperature to some fixed temperature. My expectation would be, that the BMS instead actually measures the internal resistance via ohm's and law and Kirchhoff's voltage law. So please make sure to understand what data is actually provided by the BMS for a proper ABI description. Depending on the description I think 'internal_resistance' is a good name. Greetings, -- Sebastian
On 7/7/2025 8:15 AM, Sebastian Reichel wrote: > Hi, > > On Mon, Jun 30, 2025 at 04:28:14PM +0800, Fenglin Wu wrote: >> On 6/22/2025 9:26 AM, Sebastian Reichel wrote: >>> On Fri, May 30, 2025 at 03:35:06PM +0800, Fenglin Wu via B4 Relay wrote: >>>> From: Fenglin Wu <fenglin.wu@oss.qualcomm.com> >>>> >>>> Some battery drivers provide the ability to export resistance as a >>>> parameter. Add resistance power supply property for that purpose. >>> This is missing some information and the naming is bad. >>> >>> Which resistance (I suppose battery internal resistance)? >>> >>> That is heavily dependent on the battery temperature. So this needs >>> to document if this is for the current temperature or for some >>> specific one. >>> >>> -- Sebastian >> This is battery internal resistance calculated by battery management system, >> using the real-time temperature measured by the thermistor inside the >> battery pack. >> >> I can update the name to something like "rt_internal_resistance" and update >> the description accordingly. > Your message is kind of mixed signal to me. > > If the BMS needs the thermistor to calculate the internal > resistance, it means the data is either not real-time, but > just adopting some fixed value to the current temperature, > or the internal resistance is adopted from the current > temperature to some fixed temperature. > > My expectation would be, that the BMS instead actually measures the > internal resistance via ohm's and law and Kirchhoff's voltage law. > So please make sure to understand what data is actually provided by > the BMS for a proper ABI description. > > Depending on the description I think 'internal_resistance' is a good > name. > > Greetings, > > -- Sebastian Hi Sebastian, Sorry for causing the confusion. I will try to clear it by explaining how the battery resistance is calculated in Qcom BMS. In Qcom BMS, it uses the Equivalent Series Resistance (ESR) parameter to represent the battery’s real-time internal resistance. ESR changes dynamically depending on factors like the battery’s state of charge (SoC), temperature, charging or discharging status. To estimate ESR accurately under different conditions, the BMS uses data obtained from characterizing representative battery samples, mapping ESR values across various temperatures and SoC levels under charging or discharging status. The characterization process with those battery samples on test bench would use ohm's law to calculate the battery resistance I think. These data points serve as a reference for real-time resistance estimation. During operation, the BMS software refers to this data and adjusts ESR values according to real-time inputs, especially temperature, which is typically measured by a thermistor inside the battery pack. I can use 'internal_resistance' if you think this is good to represent this ESR parameter. Thanks Fenglin
© 2016 - 2026 Red Hat, Inc.