summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaveh Jalali <caveh@chromium.org>2021-02-24 02:05:00 -0800
committerCommit Bot <commit-bot@chromium.org>2021-03-04 02:15:47 +0000
commit60f9fb600f19c157ca118063dcfc067fa6cff529 (patch)
tree23968435d4cdc5fa312f900a68b5b4de87e0b61c
parente295fbdecc415581c7463e6b2bb9c27faf5765b5 (diff)
downloadchrome-ec-60f9fb600f19c157ca118063dcfc067fa6cff529.tar.gz
charger: Add support for the TI BQ25720
This adds support for the BQ25720 charger using the BQ25710 driver. The only significant difference between the two chips is that the VBUS voltage register encoding has changed. The scale changed from 64mV to 96mV and there is no DC offset. BRANCH=none BUG=b:180980490 TEST=buildall passes Signed-off-by: Caveh Jalali <caveh@chromium.org> Change-Id: I9ab6e066a4dec93a0ede0c22ff21b240a5021cbf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2717805 Reviewed-by: Diana Z <dzigterman@chromium.org>
-rw-r--r--driver/charger/bq25710.c34
-rw-r--r--driver/charger/bq25710.h6
-rw-r--r--include/config.h6
3 files changed, 40 insertions, 6 deletions
diff --git a/driver/charger/bq25710.c b/driver/charger/bq25710.c
index e78277b54c..4388f675c6 100644
--- a/driver/charger/bq25710.c
+++ b/driver/charger/bq25710.c
@@ -428,6 +428,33 @@ static enum ec_error_list bq25710_device_id(int chgnum, int *id)
}
#ifdef CONFIG_USB_PD_VBUS_MEASURE_CHARGER
+
+#if defined(CONFIG_CHARGER_BQ25720)
+
+static int reg_adc_vbus_to_mv(int reg)
+{
+ /*
+ * LSB => 96mV, no DC offset.
+ */
+ return reg * BQ25720_ADC_VBUS_STEP_MV;
+}
+
+#elif defined(CONFIG_CHARGER_BQ25710)
+
+static int reg_adc_vbus_to_mv(int reg)
+{
+ /*
+ * LSB => 64mV.
+ * Return 0 when VBUS <= 3.2V as ADC can't measure it.
+ */
+ return reg ?
+ (reg * BQ25710_ADC_VBUS_STEP_MV + BQ25710_ADC_VBUS_BASE_MV) : 0;
+}
+
+#else
+#error Only the BQ25720 and BQ25710 are supported by bq25710 driver.
+#endif
+
static enum ec_error_list bq25710_get_vbus_voltage(int chgnum, int port,
int *voltage)
{
@@ -443,12 +470,7 @@ static enum ec_error_list bq25710_get_vbus_voltage(int chgnum, int port,
goto error;
reg >>= BQ25710_ADC_VBUS_STEP_BIT_OFFSET;
- /*
- * LSB => 64mV.
- * Return 0 when VBUS <= 3.2V as ADC can't measure it.
- */
- *voltage = reg ?
- (reg * BQ25710_ADC_VBUS_STEP_MV + BQ25710_ADC_VBUS_BASE_MV) : 0;
+ *voltage = reg_adc_vbus_to_mv(reg);
error:
if (rv)
diff --git a/driver/charger/bq25710.h b/driver/charger/bq25710.h
index 37facb7831..5a88778c41 100644
--- a/driver/charger/bq25710.h
+++ b/driver/charger/bq25710.h
@@ -70,8 +70,14 @@
#define BQ25710_ADC_OPTION_EN_ADC_ALL 0xFF
/* ADCVBUS/PSYS Register */
+#if defined(CONFIG_CHARGER_BQ25720)
+#define BQ25720_ADC_VBUS_STEP_MV 96
+#elif defined(CONFIG_CHARGER_BQ25710)
#define BQ25710_ADC_VBUS_STEP_MV 64
#define BQ25710_ADC_VBUS_BASE_MV 3200
+#else
+#error Only the BQ25720 and BQ25710 are supported by bq25710 driver.
+#endif
#define BQ25710_ADC_VBUS_STEP_BIT_OFFSET 8
/* ADCIIN Register */
diff --git a/include/config.h b/include/config.h
index c79865e1f5..e695e965d8 100644
--- a/include/config.h
+++ b/include/config.h
@@ -863,6 +863,7 @@
#undef CONFIG_CHARGER_BQ24770
#undef CONFIG_CHARGER_BQ24773
#undef CONFIG_CHARGER_BQ25710
+#undef CONFIG_CHARGER_BQ25720
#undef CONFIG_CHARGER_ISL9237
#undef CONFIG_CHARGER_ISL9238 /* For ISL9238 A/B */
#undef CONFIG_CHARGER_ISL9238C
@@ -5453,6 +5454,11 @@
#endif
/*****************************************************************************/
+/* The BQ25720 is supported by the BQ25710 driver */
+#if defined(CONFIG_CHARGER_BQ25720)
+#define CONFIG_CHARGER_BQ25710
+#endif
+
/*
* Define CONFIG_USB_PD_VBUS_MEASURE_CHARGER if the charger on the board
* supports VBUS measurement.