aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/drivers/power
diff options
context:
space:
mode:
authorBaolin Wang <baolin.wang@linaro.org>2018-11-12 18:52:37 +0800
committerSebastian Reichel <sebastian.reichel@collabora.com>2018-12-05 23:53:14 +0100
commita8aaff6be08921f1d200170ce02d36cec0e2300d (patch)
tree627faa018a60544050ed8a673f53f98bb51f3e2c /drivers/power
parentpower: supply: sc2731_charger: Add charger status detection (diff)
downloadwireguard-linux-a8aaff6be08921f1d200170ce02d36cec0e2300d.tar.xz
wireguard-linux-a8aaff6be08921f1d200170ce02d36cec0e2300d.zip
power: supply: sc2731_charger: Avoid repeated charge/discharge
Add info->charging validation to avoid repeated charge or discharge operation. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/supply/sc2731_charger.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/power/supply/sc2731_charger.c b/drivers/power/supply/sc2731_charger.c
index a012d6c94bc3..49b3f0c90224 100644
--- a/drivers/power/supply/sc2731_charger.c
+++ b/drivers/power/supply/sc2731_charger.c
@@ -328,7 +328,7 @@ static void sc2731_charger_work(struct work_struct *data)
mutex_lock(&info->lock);
- if (info->limit > 0) {
+ if (info->limit > 0 && !info->charging) {
/* set current limitation and start to charge */
ret = sc2731_charger_set_current_limit(info, info->limit);
if (ret)
@@ -343,7 +343,7 @@ static void sc2731_charger_work(struct work_struct *data)
goto out;
info->charging = true;
- } else {
+ } else if (!info->limit && info->charging) {
/* Stop charging */
info->charging = false;
sc2731_charger_stop_charge(info);