summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Chao <scott_chao@wistron.corp-partner.google.com>2021-08-11 11:17:50 +0800
committerCommit Bot <commit-bot@chromium.org>2021-08-12 07:25:58 +0000
commitf1b65fc912aa4adefb69ed8f264ef85d43bdc21e (patch)
tree76aad186e922572249e1f6e9aa3abebea8f1443e
parent0c3494fa8ef4fddee18a3022e4cfb256ea6683da (diff)
downloadchrome-ec-f1b65fc912aa4adefb69ed8f264ef85d43bdc21e.tar.gz
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 <scott_chao@wistron.corp-partner.google.com> Change-Id: Ic47c67e11eba1bfadef5f5942cff9fcad8b49ad2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3086786 Reviewed-by: caveh jalali <caveh@chromium.org>
-rw-r--r--driver/charger/bq25710.c14
-rw-r--r--driver/charger/bq25710.h19
2 files changed, 33 insertions, 0 deletions
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 */