From f1b65fc912aa4adefb69ed8f264ef85d43bdc21e Mon Sep 17 00:00:00 2001 From: Scott Chao Date: Wed, 11 Aug 2021 11:17:50 +0800 Subject: bq25710: add min system voltage configuration Add this function to let each board can control it. BUG=b:196184163 BRANCH=none TEST=make -j BOARD=gimble Signed-off-by: Scott Chao Change-Id: Ic47c67e11eba1bfadef5f5942cff9fcad8b49ad2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3086786 Reviewed-by: caveh jalali --- driver/charger/bq25710.c | 14 ++++++++++++++ driver/charger/bq25710.h | 19 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/driver/charger/bq25710.c b/driver/charger/bq25710.c index 8221852ded..df898467be 100644 --- a/driver/charger/bq25710.c +++ b/driver/charger/bq25710.c @@ -102,6 +102,12 @@ static inline enum ec_error_list raw_read16(int chgnum, int offset, int *value) offset, value); } +static inline int min_system_voltage_to_reg(int voltage_mv) +{ + return (voltage_mv / BQ25710_MIN_SYSTEM_VOLTAGE_STEP_MV) << + BQ25710_MIN_SYSTEM_VOLTAGE_SHIFT; +} + static inline enum ec_error_list raw_write16(int chgnum, int offset, int value) { return i2c_write16(chg_chips[chgnum].i2c_port, @@ -522,6 +528,14 @@ static enum ec_error_list bq25710_set_option(int chgnum, int option) return raw_write16(chgnum, BQ25710_REG_CHARGE_OPTION_0, option); } +int bq25710_set_min_system_voltage(int chgnum, int mv) +{ + int reg; + + reg = min_system_voltage_to_reg(mv); + return raw_write16(chgnum, BQ25710_REG_MIN_SYSTEM_VOLTAGE, reg); +} + #ifdef CONFIG_CHARGE_RAMP_HW static void bq25710_chg_ramp_handle(void) diff --git a/driver/charger/bq25710.h b/driver/charger/bq25710.h index 25e6c1546d..6cbd386a4c 100644 --- a/driver/charger/bq25710.h +++ b/driver/charger/bq25710.h @@ -118,6 +118,25 @@ BQ25720_VMIN_AP_VSYS_TH2_SHIFT) #endif +/* Min System Voltage Register */ +#if defined(CONFIG_CHARGER_BQ25720) +#define BQ25710_MIN_SYSTEM_VOLTAGE_STEP_MV 100 +#elif defined(CONFIG_CHARGER_BQ25710) +#define BQ25710_MIN_SYSTEM_VOLTAGE_STEP_MV 256 +#else +#error Only the BQ25720 and BQ25710 are supported by bq25710 driver. +#endif +#define BQ25710_MIN_SYSTEM_VOLTAGE_SHIFT 8 + extern const struct charger_drv bq25710_drv; +/** + * Set VSYS_MIN + * + * @param chgnum: Index into charger chips + * @param mv: min system voltage in mV + * @return EC_SUCCESS or error + */ +int bq25710_set_min_system_voltage(int chgnum, int mv); + #endif /* __CROS_EC_BQ25710_H */ -- cgit v1.2.1