From: Sebastian Reichel <sebastian.reichel@collabora.com>
To: Itay Shem-tov <itayst@gmail.com>
Cc: rafael@kernel.org, lenb@kernel.org, linux-acpi@vger.kernel.org,
linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] ACPI: SBS: report relative state of charge as CAPACITY
Date: Sat, 5 Sep 2026 19:46:01 +0200 [thread overview]
Message-ID: <apxVEvGoao0iVGlh@venus> (raw)
In-Reply-To: <20260903104244.25556-1-itayst@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2748 bytes --]
Hi,
On Thu, Sep 03, 2026 at 01:42:44PM +0300, Itay Shem-tov wrote:
> acpi_sbs reads SBS command 0x0e (AbsoluteStateOfCharge) into
> battery->state_of_charge, which is exported unmodified as
> POWER_SUPPLY_PROP_CAPACITY.
>
> Per the Smart Battery Data Specification 1.1, 0x0e is expressed as a
> percentage of DesignCapacity and is explicitly permitted to exceed 100%.
> Documentation/ABI/testing/sysfs-class-power specifies the capacity
> attribute as "Valid values: 0 - 100 (percent)", so any pack whose
> FullChargeCapacity exceeds its DesignCapacity - the normal state of a
> new or recently replaced battery - makes the driver report out of range.
>
> The correct source is 0x0d (RelativeStateOfCharge), a percentage of
> FullChargeCapacity, which the specification bounds to 0..100.
>
> This is the same defect that was fixed in the i2c SBS driver by commit
> b1f092f6480e ("sbs-battery.c: Capacity attr = remaining relative
> capacity"), whose reasoning applies verbatim here; drivers/acpi/sbs.c was
> not updated at the time. drivers/power/supply/sbs-battery.c has used 0x0d
> since, so the two SBS drivers currently disagree about what CAPACITY
> means.
>
> Observed on a MacBookPro11,1 with an SMP/bq20z451 pack
> (FullChargeCapacity 6775 mAh, DesignCapacity 6400 mAh). Both registers
> read back-to-back from the pack at a full charge:
>
> 0x0d RelativeStateOfCharge = 100 %
> 0x0e AbsoluteStateOfCharge = 106 %
>
> /sys/class/power_supply/BAT0/capacity reported 106 while upower, which
> computes charge_now/charge_full itself rather than trusting the driver,
> reported 100.
>
> battery->state_of_charge has no other consumer, so no other property
> changes behaviour.
>
> Signed-off-by: Itay Shem-tov <itayst@gmail.com>
> ---
That also matches the sbs-battery driver (drivers/power/supply/sbs-battery.c):
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Greetings,
-- Sebastian
> drivers/acpi/sbs.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
> index 86b7c79..862cb94 100644
> --- a/drivers/acpi/sbs.c
> +++ b/drivers/acpi/sbs.c
> @@ -318,7 +318,7 @@ static struct acpi_battery_reader state_readers[] = {
> {0x0a, SMBUS_READ_WORD, offsetof(struct acpi_battery, rate_now)},
> {0x0b, SMBUS_READ_WORD, offsetof(struct acpi_battery, rate_avg)},
> {0x0f, SMBUS_READ_WORD, offsetof(struct acpi_battery, capacity_now)},
> - {0x0e, SMBUS_READ_WORD, offsetof(struct acpi_battery, state_of_charge)},
> + {0x0d, SMBUS_READ_WORD, offsetof(struct acpi_battery, state_of_charge)},
> {0x16, SMBUS_READ_WORD, offsetof(struct acpi_battery, state)},
> };
>
> --
> 2.51.0
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
prev parent reply other threads:[~2026-09-05 17:46 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-03 10:42 [PATCH] ACPI: SBS: report relative state of charge as CAPACITY Itay Shem-tov
2026-09-05 17:46 ` Sebastian Reichel [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=apxVEvGoao0iVGlh@venus \
--to=sebastian.reichel@collabora.com \
--cc=itayst@gmail.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rafael@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.