summaryrefslogtreecommitdiff
path: root/drivers/power/ab8500_chargalg.c
diff options
context:
space:
mode:
authorJohan Palsson <johan.palsson@stericsson.com>2011-03-04 11:05:09 +0100
committerPhilippe Langlais <philippe.langlais@stericsson.com>2011-12-06 10:49:57 +0100
commit52c4a9eb4af0d3f99572df7aa8d14cf4e1b1b2d0 (patch)
tree7f9110c127738369e3910ea45e0c5139f2859c04 /drivers/power/ab8500_chargalg.c
parent173555c9258e83fe7d4de85af7d9335527e5025d (diff)
power: ab8500_bm: Use maximum charger current according to charger configuration
During configuration of the charger, a maximum charger current is set. The requested charger current will never be more than this. ST-Ericsson Linux next: - ST-Ericsson ID: WP324204 ST-Ericsson FOSS-OUT ID: Trivial Change-Id: I00e71ec126ff5f13fe1e1581020456d6609c788d Signed-off-by: Johan Palsson <johan.palsson@stericsson.com> Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/17417 Reviewed-by: Karl KOMIEROWSKI <karl.komierowski@stericsson.com> Reviewed-by: Jonas ABERG <jonas.aberg@stericsson.com>
Diffstat (limited to 'drivers/power/ab8500_chargalg.c')
-rw-r--r--drivers/power/ab8500_chargalg.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/drivers/power/ab8500_chargalg.c b/drivers/power/ab8500_chargalg.c
index 2137f467064..9a1efd7c078 100644
--- a/drivers/power/ab8500_chargalg.c
+++ b/drivers/power/ab8500_chargalg.c
@@ -613,21 +613,19 @@ static void ab8500_chargalg_check_temp(struct ab8500_chargalg *di)
}
/**
- * ab8500_chargalg_check_charger_health() - Check charger health
+ * ab8500_chargalg_check_charger_voltage() - Check charger voltage
* @di: pointer to the ab8500_chargalg structure
*
- * Charger voltage and current is checked against maximum limits
+ * Charger voltage is checked against maximum limit
*/
-static void ab8500_chargalg_check_charger_health(struct ab8500_chargalg *di)
+static void ab8500_chargalg_check_charger_voltage(struct ab8500_chargalg *di)
{
- if (di->chg_info.usb_volt > di->bat->chg_params->usb_volt_max ||
- di->chg_info.usb_curr > di->bat->chg_params->usb_curr_max)
+ if (di->chg_info.usb_volt > di->bat->chg_params->usb_volt_max)
di->chg_info.usb_chg_ok = false;
else
di->chg_info.usb_chg_ok = true;
- if (di->chg_info.ac_volt > di->bat->chg_params->ac_volt_max ||
- di->chg_info.ac_curr > di->bat->chg_params->ac_curr_max)
+ if (di->chg_info.ac_volt > di->bat->chg_params->ac_volt_max)
di->chg_info.ac_chg_ok = false;
else
di->chg_info.ac_chg_ok = true;
@@ -771,15 +769,21 @@ static enum maxim_ret ab8500_chargalg_chg_curr_maxim(struct ab8500_chargalg *di)
static void handle_maxim_chg_curr(struct ab8500_chargalg *di)
{
enum maxim_ret ret;
+ int result;
ret = ab8500_chargalg_chg_curr_maxim(di);
switch (ret) {
case MAXIM_RET_CHANGE:
- ab8500_chargalg_update_chg_curr(di, di->ccm.current_iset);
+ result = ab8500_chargalg_update_chg_curr(di,
+ di->ccm.current_iset);
+ if (result)
+ dev_err(di->dev, "failed to set chg curr\n");
break;
case MAXIM_RET_IBAT_TOO_HIGH:
- ab8500_chargalg_update_chg_curr(di,
+ result = ab8500_chargalg_update_chg_curr(di,
di->bat->bat_type[di->bat->batt_id].normal_cur_lvl);
+ if (result)
+ dev_err(di->dev, "failed to set chg curr\n");
break;
case MAXIM_RET_NOACTION:
@@ -1131,7 +1135,7 @@ static void ab8500_chargalg_algorithm(struct ab8500_chargalg *di)
ab8500_chargalg_end_of_charge(di);
ab8500_chargalg_check_temp(di);
- ab8500_chargalg_check_charger_health(di);
+ ab8500_chargalg_check_charger_voltage(di);
charger_status = ab8500_chargalg_check_charger_connection(di);
/*