aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorSicelo A. Mhlongo <absicsz@gmail.com>2024-11-28 10:57:28 +0200
committerSebastian Reichel <sebastian.reichel@collabora.com>2024-12-19 01:09:54 +0100
commit5972da73f75af6002b72e5cd61002855b6b4eda3 (patch)
tree21c9307f2606df3e1cb32078ef32b849a88747c1
parentbq27xxx: add voltage min design for bq27000 and bq27200 (diff)
downloadwireguard-linux-5972da73f75af6002b72e5cd61002855b6b4eda3.tar.xz
wireguard-linux-5972da73f75af6002b72e5cd61002855b6b4eda3.zip
power: supply: bq2415x_charger: report charging state changes to userspace
Continuously track the charging status register in order to send uevents whenever the state changes. Generate an uevent also when the chip's OTG line is toggled, in bq2415x_notifier_call(). Signed-off-by: Sicelo A. Mhlongo <absicsz@gmail.com> Link: https://lore.kernel.org/r/20241128085759.11840-2-absicsz@gmail.com Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Diffstat (limited to '')
-rw-r--r--drivers/power/supply/bq2415x_charger.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/power/supply/bq2415x_charger.c b/drivers/power/supply/bq2415x_charger.c
index 5e174242d2de..18a6c3dbc758 100644
--- a/drivers/power/supply/bq2415x_charger.c
+++ b/drivers/power/supply/bq2415x_charger.c
@@ -171,6 +171,7 @@ struct bq2415x_device {
char *name;
int autotimer; /* 1 - if driver automatically reset timer, 0 - not */
int automode; /* 1 - enabled, 0 - disabled; -1 - not supported */
+ int charge_status;
int id;
};
@@ -835,6 +836,8 @@ static int bq2415x_notifier_call(struct notifier_block *nb,
if (!bq2415x_update_reported_mode(bq, prop.intval))
return NOTIFY_OK;
+ power_supply_changed(bq->charger);
+
/* if automode is not enabled do not tell about reported_mode */
if (bq->automode < 1)
return NOTIFY_OK;
@@ -889,12 +892,19 @@ static void bq2415x_timer_work(struct work_struct *work)
int ret;
int error;
int boost;
+ int charge;
if (bq->automode > 0 && (bq->reported_mode != bq->mode)) {
sysfs_notify(&bq->charger->dev.kobj, NULL, "reported_mode");
bq2415x_set_mode(bq, bq->reported_mode);
}
+ charge = bq2415x_exec_command(bq, BQ2415X_CHARGE_STATUS);
+ if (bq->charge_status != charge) {
+ power_supply_changed(bq->charger);
+ bq->charge_status = charge;
+ }
+
if (!bq->autotimer)
return;