diff options
author | Danke Xie <d.xie@sta.samsung.com> | 2012-10-16 15:24:41 -0700 |
---|---|---|
committer | Arve Hjønnevåg <arve@android.com> | 2013-04-29 14:43:12 -0700 |
commit | c0044efde2f6b018bb83e0a7afdf2937f37fe55b (patch) | |
tree | 3694cb1f682ff1d4ebdc56e5af6f0175a1d51e78 | |
parent | cf58d45e431970a9705aba8fddebd03b407f1034 (diff) |
power: android-battery: Allow changing current in charging state
When a new charge source is set, enable charging and set the charging
current, unless we've paused charging due to battery full or battery
health problems.
Change-Id: I129e621c455a941e264dc431b4eb9db6a17c9f7b
Signed-off-by: Danke Xie <d.xie@sta.samsung.com>
Signed-off-by: Todd Poynor <toddpoynor@google.com>
-rw-r--r-- | drivers/power/android_battery.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/drivers/power/android_battery.c b/drivers/power/android_battery.c index a5b5f65e019..dbba090a51e 100644 --- a/drivers/power/android_battery.c +++ b/drivers/power/android_battery.c @@ -412,15 +412,24 @@ static void android_bat_charger_work(struct work_struct *work) case CHARGE_SOURCE_AC: /* * If charging status indicates a charger was already - * connected prior to this and a non-charging status is - * set, leave the status alone. + * connected prior to this and the status is something + * other than charging ("full" or "not-charging"), leave + * the status alone. */ if (battery->charging_status == POWER_SUPPLY_STATUS_DISCHARGING || - battery->charging_status == POWER_SUPPLY_STATUS_UNKNOWN) { + battery->charging_status == POWER_SUPPLY_STATUS_UNKNOWN) battery->charging_status = POWER_SUPPLY_STATUS_CHARGING; + + /* + * Don't re-enable charging if the battery is full and we + * are not actively re-charging it, or if "not-charging" + * status is set. + */ + if (!((battery->charging_status == POWER_SUPPLY_STATUS_FULL + && !battery->recharging) || battery->charging_status == + POWER_SUPPLY_STATUS_NOT_CHARGING)) android_bat_enable_charging(battery, true); - } break; default: |