diff options
-rw-r--r-- | baseboard/kukui/battery_mm8013.c | 1 | ||||
-rw-r--r-- | driver/charger/isl923x.c | 4 | ||||
-rw-r--r-- | driver/charger/rt946x.c | 3 | ||||
-rw-r--r-- | include/battery.h | 8 |
4 files changed, 13 insertions, 3 deletions
diff --git a/baseboard/kukui/battery_mm8013.c b/baseboard/kukui/battery_mm8013.c index 8fed84fe53..5c22675703 100644 --- a/baseboard/kukui/battery_mm8013.c +++ b/baseboard/kukui/battery_mm8013.c @@ -34,6 +34,7 @@ static const struct battery_info info[] = { .voltage_max = 4400, .voltage_normal = 3850, .voltage_min = 3000, + .precharge_voltage = 3400, .precharge_current = 256, .start_charging_min_c = 0, .start_charging_max_c = 45, diff --git a/driver/charger/isl923x.c b/driver/charger/isl923x.c index 04abb042c8..7a02f62ca0 100644 --- a/driver/charger/isl923x.c +++ b/driver/charger/isl923x.c @@ -339,8 +339,10 @@ static void isl923x_init(void) #ifdef CONFIG_TRICKLE_CHARGING const struct battery_info *bi = battery_get_info(); + int precharge_voltage = bi->precharge_voltage ? + bi->precharge_voltage : bi->voltage_min; - if (raw_write16(ISL923X_REG_SYS_VOLTAGE_MIN, bi->voltage_min)) + if (raw_write16(ISL923X_REG_SYS_VOLTAGE_MIN, precharge_voltage)) goto init_fail; #endif diff --git a/driver/charger/rt946x.c b/driver/charger/rt946x.c index 2615f9ff25..244fb2f12d 100644 --- a/driver/charger/rt946x.c +++ b/driver/charger/rt946x.c @@ -457,7 +457,8 @@ static int rt946x_init_setting(void) rv = rt946x_set_ircmp_res(setting->ircmp_res); if (rv) return rv; - rv = rt946x_set_vprec(batt_info->voltage_min); + rv = rt946x_set_vprec(batt_info->precharge_voltage ? + batt_info->precharge_voltage : batt_info->voltage_min); if (rv) return rv; rv = rt946x_set_iprec(batt_info->precharge_current); diff --git a/include/battery.h b/include/battery.h index 85f8f2cc2b..7052e2d663 100644 --- a/include/battery.h +++ b/include/battery.h @@ -125,11 +125,17 @@ int battery_get_avg_voltage(void); /* in mV */ /* Battery constants */ struct battery_info { - /* Design voltage in mV */ + /* Operation voltage in mV */ int voltage_max; int voltage_normal; int voltage_min; /* (TODO(chromium:756700): add desired_charging_current */ + /** + * Pre-charge to fast charge threshold in mV, + * default to voltage_min if not specified. + * This option is only available on isl923x and rt946x. + */ + int precharge_voltage; /* Pre-charge current in mA */ int precharge_current; /* Working temperature ranges in degrees C */ |