diff options
author | Johan Palsson <johan.palsson@stericsson.com> | 2011-03-04 11:05:09 +0100 |
---|---|---|
committer | Philippe Langlais <philippe.langlais@stericsson.com> | 2011-12-06 10:49:57 +0100 |
commit | 52c4a9eb4af0d3f99572df7aa8d14cf4e1b1b2d0 (patch) | |
tree | 7f9110c127738369e3910ea45e0c5139f2859c04 /drivers/power/ab8500_chargalg.c | |
parent | 173555c9258e83fe7d4de85af7d9335527e5025d (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.c | 24 |
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); /* |