From nobody Sat Feb 7 17:19:44 2026 Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4BE1E2D948A for ; Thu, 29 Jan 2026 14:49:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769698148; cv=none; b=pA648cgsFBEGgwI+S8tVP+0ZlIrAa0nQwJjKsRDrzEmpe4qw6p+7a8uFt3ajkii/ZFyS+euI4PTWP6bQFs+KNCW1GBBPOuscVarBpY15HmPlmHkRV8F5FtTww71KG+jBinRtuDKMBcBzRjYvKRknwaN0h1e5hgnWTb+ZTQ0ahr0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1769698148; c=relaxed/simple; bh=cP32tCNjHGj/aGvL4Iw1VUAeBgaVX64sqaUnyjoblbA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=h5TgNH1Ts4YD6bjAaoPVIgAZPNNUY7v89MP2MbX6UkDt2nb2NRSRarc533aqO38R43KbEpzO2bmcFLm58QoFxT8D5Xfs//Q2uFvQ5mumonjU2WbJHScVrRBdrLrN1Z38Ov2yotEDj4+LK7yLo5eEQgNvLjqlJLiDUvv0Bc23VcA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Ifn6J6AS; arc=none smtp.client-ip=209.85.221.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ifn6J6AS" Received: by mail-wr1-f50.google.com with SMTP id ffacd0b85a97d-432d256c2e6so1022566f8f.3 for ; Thu, 29 Jan 2026 06:49:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1769698145; x=1770302945; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=ozgT2vT2HInFgY1UG9N9CTs/5kcp1bFi2ddtV+gqCHg=; b=Ifn6J6ASy/asxOIcP55+BTdkKaJ0+ZCd5sVwfy+fY4ZndnS20L6lhnchF584ro/IKw m6yv1w6vhv6x4H3lXWeIDmgZ5Eypt6Hh2yjApPjQgcoM9FTwFvLR+CKvF6Hg8FE/EqTN Tx9N72xDCcBoHABUb2xrabcxThFC1g1zYzvD34+1PoTHZatbCCSZX2Pxm+CNaxj4QjTT EweI8B5qNeyVmK738+REU0oRPi1QnIuVZmK0NMXW6tvzf9bc54S6at0hRALy5EbfHQoE 1DqBmjew8pZUlYj6iTwuCqnXN7yEhWODGhXL+wJE01OM6X5JsVtVi1wzRXfkdODunxyD ZD8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769698145; x=1770302945; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ozgT2vT2HInFgY1UG9N9CTs/5kcp1bFi2ddtV+gqCHg=; b=aGPjDMhtMiLodrGb5PfFzdj+qfIH61F9XNu1C4mJsUPRqobLjzWndF4Zff9ZsfW7vo pHHZJm3qvaSI/iyYxk2Bo0bO9F0PCUsL4YIgBz62EURvebLG+2eQTKhhTT9nVzIGj+4Y 7th1Rr2ORlXO4PC+EsnusAboawZUV26dqzKthKkZdLdbKyVoLmMMy4WjKpMYCsE/6DTG jFRVDIJuf0gAtJutph53olqBc/ug3vQSUJepH7VvcHX9zhIFP6Bnc1vh1OCm2gvANA7Y GC/57nZa0Qx3ELoGhmyH5gHinOBDWLkmcErLO7LwsClVr/sIuVDuZc0saqBB71uofHmf EYCw== X-Forwarded-Encrypted: i=1; AJvYcCVahViaAIH0LyksfTEKiv5nLq5Jxu/yFKeFzOVMtbpJ7+RQYe0nyIsoAZ2d6SMkyYL+FMeiJvRqZL3xfW0=@vger.kernel.org X-Gm-Message-State: AOJu0YxG/tQ26YxqdKzRg+sd3PMixzD+SfccqkQUYcqtMM01hbP8bwuk KBN+e5N9t3Z+iWtDdpus5S5CPLV6wb9HT5t2bgVXykD51sfyOO2J8+PM X-Gm-Gg: AZuq6aJGf62IiRTx1B48Xj99d7z+o72iY0rr5ISaRx3MYKEL2Nny1BPIgTJHA50glMR DN1U16hAC/nluQDIR0CN52GVe7yBWVORgWVxkG7q3OKNWXu6MbfNv4wdHZ9YvBfxmmEGRotBXIC 2rhWqAR5Je5QU3Rl80apg6rNT8CBN9jZm9UvXeg2WGkE0GaGo5oYvVKfphKUcjQYf/0w6YwBCWO /M18BEdzrshtS64uUBab6dXYZWQf8kkH+Apbgj//3VgZu7J7Jfbba5uZYmpe6Jk4KLdW5v6mZth 7YcSh/nY1PxDXsh7tR0RHkoT18THL4Po/Y0J4fLJaAUsns+E8PBpj46X8CwDbptiH4L/aGSP8tR XDayUhNLF/Wtnt166hWuxh5rWA79TSDG0stfFC1D1ujyL4BcrjOQVrSJ4/kvE4b6DJBZg0lqgo7 WEHh4VafSwZqhCcHaI7JkVhRt0 X-Received: by 2002:a5d:5d03:0:b0:432:5b81:483 with SMTP id ffacd0b85a97d-435dd07d271mr13381832f8f.24.1769698145246; Thu, 29 Jan 2026 06:49:05 -0800 (PST) Received: from NBLK-WAX9X.. ([88.228.69.238]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-435e131cfd4sm14373572f8f.25.2026.01.29.06.49.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 29 Jan 2026 06:49:04 -0800 (PST) From: =?UTF-8?q?Ata=20=C4=B0lhan=20K=C3=B6kt=C3=BCrk?= To: rafael@kernel.org Cc: lenb@kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Ata=20=C4=B0lhan=20K=C3=B6kt=C3=BCrk?= Subject: [PATCH] ACPI: battery: fix incorrect charging status when current is zero Date: Thu, 29 Jan 2026 17:48:56 +0300 Message-ID: <20260129144856.43058-1-atailhan2006@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On some laptops, such as the Huawei Matebook series the Embedded Controller continues to report "Charging" status even when the charge threshold is reached and no current is being drawn. This incorrect reporting prevents the system from switching to battery power profiles, leading to significantly higher power consumption (e.g., 18W instead of 7W during browsing) and broken battery remaining time estimation. Validate the "Charging" state by checking if rate_now is zero. If the hardware reports charging but the current is zero, report "Not Charging" to user space. Signed-off-by: Ata =C4=B0lhan K=C3=B6kt=C3=BCrk --- drivers/acpi/battery.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c index 34181fa52..b4ba8085f 100644 --- a/drivers/acpi/battery.c +++ b/drivers/acpi/battery.c @@ -211,7 +211,13 @@ static int acpi_battery_get_property(struct power_supp= ly *psy, if (battery->state & ACPI_BATTERY_STATE_DISCHARGING) val->intval =3D acpi_battery_handle_discharging(battery); else if (battery->state & ACPI_BATTERY_STATE_CHARGING) - val->intval =3D POWER_SUPPLY_STATUS_CHARGING; + /* Check if we can fetch ACPI current info */ + if (battery->rate_now !=3D ACPI_BATTERY_VALUE_UNKNOWN && + battery->rate_now =3D=3D 0) + /* On charge but no current (0W/0mA) */ + val->intval =3D POWER_SUPPLY_STATUS_NOT_CHARGING; + else + val->intval =3D POWER_SUPPLY_STATUS_CHARGING; else if (battery->state & ACPI_BATTERY_STATE_CHARGE_LIMITING) val->intval =3D POWER_SUPPLY_STATUS_NOT_CHARGING; else if (acpi_battery_is_charged(battery)) --=20 2.43.0