aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/power
diff options
context:
space:
mode:
authorhongmin.son <hongmin.son@samsung.com>2010-10-25 14:32:51 -0700
committerArve Hjønnevåg <arve@android.com>2011-11-17 17:49:51 -0800
commit1470338527452eb5ab85e7a7182b680a68694808 (patch)
treefb5179b7a5f4eb79aa2bc36f09e367a2074f2e65 /drivers/power
parentb6f39e4f3230784d3492f49709729122cb07d39b (diff)
downloadkernel_samsung_aries-1470338527452eb5ab85e7a7182b680a68694808.zip
kernel_samsung_aries-1470338527452eb5ab85e7a7182b680a68694808.tar.gz
kernel_samsung_aries-1470338527452eb5ab85e7a7182b680a68694808.tar.bz2
S5PC11X: BATTERY:Change next finish time if charging is ended by timeover.
Change next finish time to 1h30m if charging is ended by timeover. Change-Id: I7e69636425d2a963f98bb80545a4779049f417c4 Signed-off-by: hongmin.son <hongmin.son@samsung.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/s5pc110_battery.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/power/s5pc110_battery.c b/drivers/power/s5pc110_battery.c
index b42aeb5..7a47239 100644
--- a/drivers/power/s5pc110_battery.c
+++ b/drivers/power/s5pc110_battery.c
@@ -117,6 +117,7 @@ struct chg_data {
enum cable_type_t cable_status;
bool charging;
+ bool set_charge_timeout;
int present;
int timestamp;
int set_batt_full;
@@ -400,8 +401,10 @@ static void s3c_bat_discharge_reason(struct chg_data *chg)
cur_time = ktime_to_timespec(ktime);
if (chg->discharging_time &&
- cur_time.tv_sec > chg->discharging_time)
+ cur_time.tv_sec > chg->discharging_time) {
+ chg->set_charge_timeout = true;
chg->bat_info.dis_reason |= DISCONNECT_OVER_TIME;
+ }
pr_debug("%s : Current Voltage : %d\n \
Current time : %ld discharging_time : %ld\n \
@@ -515,7 +518,8 @@ static int s3c_cable_status_update(struct chg_data *chg)
ktime = alarm_get_elapsed_realtime();
cur_time = ktime_to_timespec(ktime);
chg->discharging_time =
- chg->bat_info.batt_is_full ?
+ chg->bat_info.batt_is_full ||
+ chg->set_charge_timeout ?
cur_time.tv_sec + TOTAL_RECHARGING_TIME :
cur_time.tv_sec + TOTAL_CHARGING_TIME;
}
@@ -543,6 +547,7 @@ static int s3c_cable_status_update(struct chg_data *chg)
chg->bat_info.charging_status = POWER_SUPPLY_STATUS_DISCHARGING;
chg->bat_info.batt_is_full = false;
+ chg->set_charge_timeout = false;
chg->set_batt_full = 0;
chg->bat_info.dis_reason = 0;
chg->discharging_time = 0;
@@ -692,6 +697,7 @@ static __devinit int max8998_charger_probe(struct platform_device *pdev)
chg->polling_interval = POLLING_INTERVAL;
chg->bat_info.batt_health = POWER_SUPPLY_HEALTH_GOOD;
chg->bat_info.batt_is_full = false;
+ chg->set_charge_timeout = false;
chg->cable_status = CABLE_TYPE_NONE;