From 3e92ab00adfeef4be01ac7b432208ff1b0a6bbaf Mon Sep 17 00:00:00 2001 From: Kalle Komierowski Date: Mon, 17 Oct 2011 16:38:56 +0200 Subject: power: ab8500_bm: Increase the VBat threshold This is to eliminate the risk of charging with a too high current via USB. ST-Ericsson ID: 338533 ST-Ericsson Linux next: NA ST-Ericsson FOSS-OUT ID: N/A Change-Id: I8ae942c8eb1497812fbb86aa41662562a6a3ec73 Signed-off-by: Kalle Komierowski Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/34263 Reviewed-by: QATOOLS Reviewed-by: Bengt JONSSON Reviewed-by: Jonas ABERG --- drivers/power/ab8500_charger.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) (limited to 'drivers/power') diff --git a/drivers/power/ab8500_charger.c b/drivers/power/ab8500_charger.c index 1b827a980ce..83594ff1c8e 100644 --- a/drivers/power/ab8500_charger.c +++ b/drivers/power/ab8500_charger.c @@ -123,7 +123,7 @@ enum ab8500_usb_state { #define USB_CH_IP_CUR_LVL_1P4 1400 #define USB_CH_IP_CUR_LVL_1P5 1500 -#define VBAT_3700 3700 +#define VBAT_TRESH_IP_CUR_RED 3800 #define to_ab8500_charger_usb_device_info(x) container_of((x), \ struct ab8500_charger, usb_chg) @@ -891,11 +891,11 @@ static int ab8500_charger_set_vbus_in_curr(struct ab8500_charger *di, switch (min_value) { case 100: - if (di->vbat < VBAT_3700) + if (di->vbat < VBAT_TRESH_IP_CUR_RED) min_value = USB_CH_IP_CUR_LVL_0P05; break; case 500: - if (di->vbat < VBAT_3700) + if (di->vbat < VBAT_TRESH_IP_CUR_RED) min_value = USB_CH_IP_CUR_LVL_0P45; break; default: @@ -1375,8 +1375,11 @@ static void ab8500_charger_check_vbat_work(struct work_struct *work) if (di->old_vbat == 0) di->old_vbat = di->vbat; - if (!((di->old_vbat <= VBAT_3700 && di->vbat <= VBAT_3700) || - (di->old_vbat > VBAT_3700 && di->vbat > VBAT_3700))) { + if (!((di->old_vbat <= VBAT_TRESH_IP_CUR_RED && + di->vbat <= VBAT_TRESH_IP_CUR_RED) || + (di->old_vbat > VBAT_TRESH_IP_CUR_RED && + di->vbat > VBAT_TRESH_IP_CUR_RED))) { + dev_dbg(di->dev, "Vbat did cross threshold, curr: %d, new: %d," " old: %d\n", di->max_usb_in_curr, di->vbat, di->old_vbat); @@ -1390,8 +1393,8 @@ static void ab8500_charger_check_vbat_work(struct work_struct *work) * No need to check the battery voltage every second when not close to * the threshold. */ - if (di->vbat < (VBAT_3700 + 100) && - (di->vbat > (VBAT_3700 - 100))) + if (di->vbat < (VBAT_TRESH_IP_CUR_RED + 100) && + (di->vbat > (VBAT_TRESH_IP_CUR_RED - 100))) t = 1; queue_delayed_work(di->charger_wq, &di->check_vbat_work, t * HZ); -- cgit v1.2.3