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-07-01 14:16:12 -0700 | 
| commit | 552584f55d43677d46edaec00b2d1aad4337d657 (patch) | |
| tree | e71bbb44701be787ea18504db90ff504d4f9567f /drivers | |
| parent | 90acaa4de6ac63fda8bfa4f605de89ddd7019bda (diff) | |
| download | olio-linux-3.10-552584f55d43677d46edaec00b2d1aad4337d657.tar.xz olio-linux-3.10-552584f55d43677d46edaec00b2d1aad4337d657.zip | |
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>
Diffstat (limited to 'drivers')
| -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: |