Message ID | 20250213-patch-qcomm-bat-uint-power-v1-1-16e7e2a77a02@mailbox.org |
---|---|
State | New |
Headers | show |
Series | [RESEND] power: supply: qcom_battmgr: abs() on POWER_NOW property | expand |
On Sat, Feb 15, 2025 at 04:08:25AM +0100, Sebastian Reichel wrote: > Hi, > > There are other drivers reporting negative values as documented. > Most of the embedded ones do this actually and there surely are > (embedded) userspace programs relying on this by now. But the > most used driver - generic ACPI battery - does not. That's why > quite a few userspace tools handle it wrong without anyone > noticing for quite some time. Fixing it to follow the ABI would > obviously end up in a bunch of regression reports, so things are > a bit messy :( > > > I think it is a problem of the 'acpi' tool. At least 'upower -d' uses > > fabs internally since the initial commit in 2008. > > It's definitely sensible to fix the userspace tools. We can't change > the documented ABI for current_now after that many years and while > documentation for power_now is missing, it would be quite unexpected > to have it behave differently than current_now. Also userspace > tooling needs to handle current_now and power_now anyways. And we > surely can't change the behaviour for all drivers reporting signed > data. So let's keep qcom_battmgr as is. It follows the documented > ABI and hopefully helps giving this more exposure (I'm typing this > on a X1E laptop right now and can see your problem with waybar). > > But we should document the power_now property. It somehow fell > through the cracks :) > > -- Sebastian Hi, As an update around this topic, I sent some patches in the different tools I'm using to correctly handle negative values in current_now and power_now: * Waybar (included in release 0.12.0): https://github.com/Alexays/Waybar/pull/3942 * Powertop (merged): https://github.com/fenrus75/powertop/pull/173 * acpi-client (included in release 1.8): https://sourceforge.net/p/acpiclient/code/merge-requests/1/ It was quicker to get this merged than what I expected, which is good news! There's probably other tools to fix, I just fixed the tools I'm using. I encounter the issue on other tools, I'll send a patch. -- Anthony Ruhier
Hi, On Fri, Feb 28, 2025 at 04:25:47PM +0100, Anthony Ruhier wrote: > On Sat, Feb 15, 2025 at 04:08:25AM +0100, Sebastian Reichel wrote: > > There are other drivers reporting negative values as documented. > > Most of the embedded ones do this actually and there surely are > > (embedded) userspace programs relying on this by now. But the > > most used driver - generic ACPI battery - does not. That's why > > quite a few userspace tools handle it wrong without anyone > > noticing for quite some time. Fixing it to follow the ABI would > > obviously end up in a bunch of regression reports, so things are > > a bit messy :( > > > > > I think it is a problem of the 'acpi' tool. At least 'upower -d' uses > > > fabs internally since the initial commit in 2008. > > > > It's definitely sensible to fix the userspace tools. We can't change > > the documented ABI for current_now after that many years and while > > documentation for power_now is missing, it would be quite unexpected > > to have it behave differently than current_now. Also userspace > > tooling needs to handle current_now and power_now anyways. And we > > surely can't change the behaviour for all drivers reporting signed > > data. So let's keep qcom_battmgr as is. It follows the documented > > ABI and hopefully helps giving this more exposure (I'm typing this > > on a X1E laptop right now and can see your problem with waybar). > > > > But we should document the power_now property. It somehow fell > > through the cracks :) > > > > -- Sebastian > > Hi, > As an update around this topic, I sent some patches in the different tools I'm > using to correctly handle negative values in current_now and power_now: > > * Waybar (included in release 0.12.0): https://github.com/Alexays/Waybar/pull/3942 > * Powertop (merged): https://github.com/fenrus75/powertop/pull/173 > * acpi-client (included in release 1.8): https://sourceforge.net/p/acpiclient/code/merge-requests/1/ > > It was quicker to get this merged than what I expected, which is good news! > > There's probably other tools to fix, I just fixed the tools I'm using. I > encounter the issue on other tools, I'll send a patch. Thanks, appreciated. Greetings, -- Sebastian
diff --git a/drivers/power/supply/qcom_battmgr.c b/drivers/power/supply/qcom_battmgr.c index 47d29271ddf400b76dd5b0a1b8d1ba86c017afc0..3e2e0c5af2814df0eb0bfc408d4b3d26399ab4e4 100644 --- a/drivers/power/supply/qcom_battmgr.c +++ b/drivers/power/supply/qcom_battmgr.c @@ -530,7 +530,7 @@ static int qcom_battmgr_bat_get_property(struct power_supply *psy, val->intval = battmgr->status.current_now; break; case POWER_SUPPLY_PROP_POWER_NOW: - val->intval = battmgr->status.power_now; + val->intval = abs(battmgr->status.power_now); break; case POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN: if (unit != QCOM_BATTMGR_UNIT_mAh)