diff mbox series

power: supply: rk817: query battery properties right after resume

Message ID 20230601-rk817_query_at_resume-v1-1-630b0adefbd9@mweigand.net
State New
Headers show
Series power: supply: rk817: query battery properties right after resume | expand

Commit Message

Maximilian Weigand June 14, 2023, 6:10 p.m. UTC
From: Maximilian Weigand <mweigand@mweigand.net>

The driver reads battery properties every 8 seconds. In order to prevent
problems with wrong property values right after resume, trigger an
update of those properties on resuming the system and restart the
8-second interval from there.

Signed-off-by: Maximilian Weigand <mweigand@mweigand.net>
---
An issue with wrongly reported battery charge was encountered on a
Pine64 PineNote right after resume. It turned out the the rk817 driver
queries the rk817 chip in fixed 8-second intervals, and thus in most
cases the reported battery charge right after resume will be wrong until
the driver gets to its next update cycle. For example, upowerd will
query the battery properties right after resume (getting the old
values), while the correct values will only be reported by upowerd after
its next update cycle, which can take 30+ seconds.

Therefore, trigger an update of battery properties right after resume in
the driver.
---
 drivers/power/supply/rk817_charger.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)


---
base-commit: 858fd168a95c5b9669aac8db6c14a9aeab446375
change-id: 20230601-rk817_query_at_resume-143dca87eb4a

Best regards,

Comments

Sebastian Reichel Sept. 14, 2023, 3:47 p.m. UTC | #1
On Wed, 14 Jun 2023 20:10:43 +0200, Maximilian Weigand wrote:
> The driver reads battery properties every 8 seconds. In order to prevent
> problems with wrong property values right after resume, trigger an
> update of those properties on resuming the system and restart the
> 8-second interval from there.
> 
> 

Applied, thanks!

[1/1] power: supply: rk817: query battery properties right after resume
      commit: 1769142a14c34a8acd67657bc3e637f22f75e026

Best regards,
diff mbox series

Patch

diff --git a/drivers/power/supply/rk817_charger.c b/drivers/power/supply/rk817_charger.c
index 1a2143641e66..29ceee2f1905 100644
--- a/drivers/power/supply/rk817_charger.c
+++ b/drivers/power/supply/rk817_charger.c
@@ -1198,11 +1198,24 @@  static int rk817_charger_probe(struct platform_device *pdev)
 	return 0;
 }
 
+static int __maybe_unused rk817_resume(struct device *dev)
+{
+
+	struct rk817_charger *charger = dev_get_drvdata(dev);
+
+	/* force an immediate update */
+	mod_delayed_work(system_wq, &charger->work, 0);
+
+	return 0;
+}
+
+static SIMPLE_DEV_PM_OPS(rk817_charger_pm, NULL, rk817_resume);
 
 static struct platform_driver rk817_charger_driver = {
 	.probe    = rk817_charger_probe,
 	.driver   = {
 		.name  = "rk817-charger",
+		.pm		= &rk817_charger_pm,
 	},
 };
 module_platform_driver(rk817_charger_driver);