]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-client.git/commitdiff
platform/x86: thinkpad_acpi: Fix errors reading battery thresholds
authorJonathan Teh <jonathan.teh@outlook.com>
Mon, 16 Feb 2026 01:01:29 +0000 (01:01 +0000)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 23 Feb 2026 14:29:00 +0000 (16:29 +0200)
Check whether the battery supports the relevant charge threshold before
reading the value to silence these errors:

thinkpad_acpi: acpi_evalf(BCTG, dd, ...) failed: AE_NOT_FOUND
ACPI: \_SB_.PCI0.LPC_.EC__.HKEY: BCTG: evaluate failed
thinkpad_acpi: acpi_evalf(BCSG, dd, ...) failed: AE_NOT_FOUND
ACPI: \_SB_.PCI0.LPC_.EC__.HKEY: BCSG: evaluate failed

when reading the charge thresholds via sysfs on platforms that do not
support them such as the ThinkPad T400.

Fixes: 2801b9683f74 ("thinkpad_acpi: Add support for battery thresholds")
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=202619
Signed-off-by: Jonathan Teh <jonathan.teh@outlook.com>
Reviewed-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Link: https://patch.msgid.link/MI0P293MB01967B206E1CA6F337EBFB12926CA@MI0P293MB0196.ITAP293.PROD.OUTLOOK.COM
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/lenovo/thinkpad_acpi.c

index f9c736777908ffeb8579fdd8f469a9c3dff80be4..8982d92dfd977097c0086bb7187c46517df56737 100644 (file)
@@ -9525,14 +9525,16 @@ static int tpacpi_battery_get(int what, int battery, int *ret)
 {
        switch (what) {
        case THRESHOLD_START:
-               if ACPI_FAILURE(tpacpi_battery_acpi_eval(GET_START, ret, battery))
+               if (!battery_info.batteries[battery].start_support ||
+                   ACPI_FAILURE(tpacpi_battery_acpi_eval(GET_START, ret, battery)))
                        return -ENODEV;
 
                /* The value is in the low 8 bits of the response */
                *ret = *ret & 0xFF;
                return 0;
        case THRESHOLD_STOP:
-               if ACPI_FAILURE(tpacpi_battery_acpi_eval(GET_STOP, ret, battery))
+               if (!battery_info.batteries[battery].stop_support ||
+                   ACPI_FAILURE(tpacpi_battery_acpi_eval(GET_STOP, ret, battery)))
                        return -ENODEV;
                /* Value is in lower 8 bits */
                *ret = *ret & 0xFF;