summaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorsiddardha naraharisetti <siddardhan@nvidia.com>2014-04-09 13:00:15 -0700
committerRiham Haidar <rhaidar@nvidia.com>2014-05-05 11:07:07 -0700
commitc4bcc17708f01f4368ea16b6ba7454e0055355f6 (patch)
treeb4b639102e4d4566a646b70f5f431416461a6588 /drivers/power
parent4d7e8a3a384141e6d917a356829bec82005b70a8 (diff)
power: bq2419x: handle charge termination on powerup
check for charge termination on powerup and set the status accordingly. donot acquire wakelock if charged fully. Bug 1489717 Bug 1448255 Change-Id: I6e1bfd937f1ab0441e7b5d9d1998defb23d6c2fc Signed-off-by: siddardha naraharisetti <siddardhan@nvidia.com> Reviewed-on: http://git-master/r/394312 Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Change-Id: I31adb7d0e4d5bca4c3e73abe4d97885b1a8980db Reviewed-on: http://git-master/r/404463 Reviewed-by: Riham Haidar <rhaidar@nvidia.com> Tested-by: Riham Haidar <rhaidar@nvidia.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/bq2419x-charger.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/power/bq2419x-charger.c b/drivers/power/bq2419x-charger.c
index 2bcb5a25d72a..42c432544306 100644
--- a/drivers/power/bq2419x-charger.c
+++ b/drivers/power/bq2419x-charger.c
@@ -415,6 +415,16 @@ static int bq2419x_set_charging_current(struct regulator_dev *rdev,
bq2419x->chg_status = BATTERY_DISCHARGING;
battery_charger_thermal_stop_monitoring(
bq2419x->bc_dev);
+ } else if ((val & BQ2419x_CHRG_STATE_MASK) ==
+ BQ2419x_CHRG_STATE_CHARGE_DONE) {
+ dev_info(bq2419x->dev, "Charging completed\n");
+ bq2419x->chg_status = BATTERY_CHARGING_DONE;
+ bq2419x->cable_connected = 1;
+ in_current_limit = max_uA/1000;
+ battery_charging_restart(bq2419x->bc_dev,
+ bq2419x->chg_restart_time);
+ battery_charger_thermal_stop_monitoring(
+ bq2419x->bc_dev);
} else {
in_current_limit = max_uA/1000;
bq2419x->cable_connected = 1;
@@ -428,7 +438,8 @@ static int bq2419x_set_charging_current(struct regulator_dev *rdev,
battery_charging_status_update(bq2419x->bc_dev, bq2419x->chg_status);
if (bq2419x->disable_suspend_during_charging) {
- if (bq2419x->cable_connected && in_current_limit > 500)
+ if (bq2419x->cable_connected && in_current_limit > 500
+ && (bq2419x->chg_status != BATTERY_CHARGING_DONE))
battery_charger_acquire_wake_lock(bq2419x->bc_dev);
else if (!bq2419x->cable_connected && old_current_limit > 500)
battery_charger_release_wake_lock(bq2419x->bc_dev);