* struct ab8500_battery_type - different batteries supported
  * @resis_high:                        battery upper resistance limit
  * @resis_low:                 battery lower resistance limit
- * @termination_curr           battery charging termination current in mA
  * @recharge_cap               battery capacity limit that will trigger a new
  *                             full charging cycle in the case where maintenan-
  *                             -ce charging has been disabled
 struct ab8500_battery_type {
        int resis_high;
        int resis_low;
-       int termination_curr;
        int recharge_cap;
        int normal_cur_lvl;
        int normal_vol_lvl;
 
 static struct ab8500_battery_type bat_type_thermistor_unknown = {
        .resis_high = 0,
        .resis_low = 0,
-       .termination_curr = 200,
        .recharge_cap = 95,
        .normal_cur_lvl = 400,
        .normal_vol_lvl = 4100,
                bi->overvoltage_limit_uv = 4050000;
        }
 
+       if (bi->charge_term_current_ua)
+               /* Charging stops when we drop below this current */
+               bi->charge_term_current_ua = 200000;
+
        if (bi->factory_internal_resistance_uohm < 0)
                bi->factory_internal_resistance_uohm = 300000;
 
 
 struct ab8500_chargalg_battery_data {
        int temp;
        int volt_uv;
-       int avg_curr;
+       int avg_curr_ua;
        int inst_curr;
        int percent;
 };
                !di->maintenance_chg && (di->batt_data.volt_uv >=
                di->bm->bi.overvoltage_limit_uv ||
                di->events.usb_cv_active || di->events.ac_cv_active) &&
-               di->batt_data.avg_curr <
-               di->bm->bat_type->termination_curr &&
-               di->batt_data.avg_curr > 0) {
+               di->batt_data.avg_curr_ua <
+               di->bm->bi.charge_term_current_ua &&
+               di->batt_data.avg_curr_ua > 0) {
                if (++di->eoc_cnt >= EOC_COND_CNT) {
                        di->eoc_cnt = 0;
                        di->charge_status = POWER_SUPPLY_STATUS_FULL;
                case POWER_SUPPLY_PROP_CURRENT_AVG:
                        switch (ext->desc->type) {
                        case POWER_SUPPLY_TYPE_BATTERY:
-                               di->batt_data.avg_curr = ret.intval / 1000;
+                               di->batt_data.avg_curr_ua = ret.intval;
                                break;
                        case POWER_SUPPLY_TYPE_USB:
                                if (ret.intval)
                "AC_online %d USB_online %d AC_CV %d USB_CV %d AC_I %d "
                "USB_I %d AC_Vset %d AC_Iset %d USB_Vset %d USB_Iset %d\n",
                di->batt_data.volt_uv,
-               di->batt_data.avg_curr,
+               di->batt_data.avg_curr_ua,
                di->batt_data.inst_curr,
                di->batt_data.temp,
                di->batt_data.percent,