diff options
Diffstat (limited to 'acpi-battery-Always-read-fresh-battery-state-on-update.patch')
-rw-r--r-- | acpi-battery-Always-read-fresh-battery-state-on-update.patch | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/acpi-battery-Always-read-fresh-battery-state-on-update.patch b/acpi-battery-Always-read-fresh-battery-state-on-update.patch new file mode 100644 index 000000000000..04c52a5eab02 --- /dev/null +++ b/acpi-battery-Always-read-fresh-battery-state-on-update.patch @@ -0,0 +1,38 @@ +From patchwork Thu Jun 4 19:56:58 2020 +From: Mathew King <mathewk@chromium.org> +To: linux-kernel@vger.kernel.org +Cc: Mathew King <mathewk@chromium.org>, + "Rafael J. Wysocki" <rjw@rjwysocki.net>, + Len Brown <lenb@kernel.org>, linux-acpi@vger.kernel.org +Subject: [PATCH] acpi: battery: Always read fresh battery state on update +Date: Thu, 4 Jun 2020 13:56:58 -0600 +Message-Id: <20200604195658.66201-1-mathewk@chromium.org> +List-ID: <linux-acpi.vger.kernel.org> +X-Mailing-List: linux-acpi@vger.kernel.org + +When the ACPI battery receives a notification event it should always +read the battery state fresh from the ACPI device and not use the cached +state. Currently the cached state stays valid and the new state may not +be read when a notification occurs. This can lead to a udev event +showing that the battery has changed but the sysfs state will still have +the cached state values. This change invalidates the update time forcing +the state to be updated before notifying the power_supply subsystem of +the change. + +Signed-off-by: Mathew King <mathewk@chromium.org> +--- + drivers/acpi/battery.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c +index 366c389175d8..ab7fa4879fbe 100644 +--- a/drivers/acpi/battery.c ++++ b/drivers/acpi/battery.c +@@ -981,6 +981,7 @@ static int acpi_battery_update(struct acpi_battery *battery, bool resume) + acpi_battery_init_alarm(battery); + } + ++ battery->update_time = 0; + result = acpi_battery_get_state(battery); + if (result) + return result; |