diff options
author | siddardha naraharisetti <siddardhan@nvidia.com> | 2014-04-09 13:00:15 -0700 |
---|---|---|
committer | Riham Haidar <rhaidar@nvidia.com> | 2014-05-05 11:07:07 -0700 |
commit | c4bcc17708f01f4368ea16b6ba7454e0055355f6 (patch) | |
tree | b4b639102e4d4566a646b70f5f431416461a6588 /drivers/power | |
parent | 4d7e8a3a384141e6d917a356829bec82005b70a8 (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.c | 13 |
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); |