Skip to content

Commit

Permalink
charger-manager: Fix bug related to checking fully charged state of b…
Browse files Browse the repository at this point in the history
…attery

This patch fix bug related to checking fully charged state of battery when
charger-manager call is_full_charged() function. After reading property of
charger/fuel-gauge through power_supply API, val.intval is more than 1.
So, is_full_charged() function always return true. If true, battery means
fully charged state.

Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org>
  • Loading branch information
Chanwoo Choi authored and Anton Vorontsov committed Dec 17, 2012
1 parent 7605c0b commit 0fa11db
Showing 1 changed file with 13 additions and 20 deletions.
33 changes: 13 additions & 20 deletions drivers/power/charger-manager.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,44 +239,37 @@ static bool is_full_charged(struct charger_manager *cm)
int uV;

/* If there is no battery, it cannot be charged */
if (!is_batt_present(cm)) {
val.intval = 0;
goto out;
}
if (!is_batt_present(cm))
return false;

if (cm->fuel_gauge && desc->fullbatt_full_capacity > 0) {
val.intval = 0;

/* Not full if capacity of fuel gauge isn't full */
ret = cm->fuel_gauge->get_property(cm->fuel_gauge,
POWER_SUPPLY_PROP_CHARGE_FULL, &val);
if (!ret && val.intval > desc->fullbatt_full_capacity) {
val.intval = 1;
goto out;
}
if (!ret && val.intval > desc->fullbatt_full_capacity)
return true;
}

/* Full, if it's over the fullbatt voltage */
if (desc->fullbatt_uV > 0) {
ret = get_batt_uV(cm, &uV);
if (!ret && uV >= desc->fullbatt_uV) {
val.intval = 1;
goto out;
}
if (!ret && uV >= desc->fullbatt_uV)
return true;
}

/* Full, if the capacity is more than fullbatt_soc */
if (cm->fuel_gauge && desc->fullbatt_soc > 0) {
val.intval = 0;

ret = cm->fuel_gauge->get_property(cm->fuel_gauge,
POWER_SUPPLY_PROP_CAPACITY, &val);
if (!ret && val.intval >= desc->fullbatt_soc) {
val.intval = 1;
goto out;
}
if (!ret && val.intval >= desc->fullbatt_soc)
return true;
}

val.intval = 0;

out:
return val.intval ? true : false;
return false;
}

/**
Expand Down

0 comments on commit 0fa11db

Please sign in to comment.